Oroscopo...

di il
27 risposte

27 Risposte - Pagina 2

  • Re: Oroscopo...

    Ciao Laura3005
    Ahimè, quando ti dicevo che non sono esperto di Access non stavo scherzando e non so cosa risponderti.

    L' idea di questa query mi è venuta quando hai detto che avevi già risolto il problema in Excel.
  • Re: Oroscopo...

    barba59 ha scritto:


    Ciao Laura3005
    Ahimè, quando ti dicevo che non sono esperto di Access non stavo scherzando e non so cosa risponderti.

    L' idea di questa query mi è venuta quando hai detto che avevi già risolto il problema in Excel.
    eheh
    ma infatti funziona tutto ok,peccato che non fà in automatico,pero' posso sempre usarla a dire il vero...
  • Re: Oroscopo...

    Buona giornata, Laura;
    sono stato molto combattuto se scriverti privatamente, per non alimentare altri motivi di discussione o pubblicare queste mie considerazioni; non voglio certo ergermi a difensore di Alex, Lui non ne ha bisogno e io non ne ho le competenze.
    Mi permetto solo di osservare che il consiglio fornito da Alex:
    • ... Serve una Tabella che abbia i 12 Segni zodiacali con le relative DATA_INIZIO e DATA_FINE.
      Quindi sostanzialmente 3 campi:
      SEGNO(PKc Stringa)
      DATA_INI(Data)
      DATA_END(Data) ...
    è assolutamente apprezzabile e rispetta lo spirito di questo Forum.
    Un Forum di cucina dispensa ricette pronte mentre un punto del regolamento di questo Forum impone di non aspettarsi "pappa pronta"; questo credo significhi che puoi proporre un Tuo codice e chiedere dove può essere modificato opportunamente; certamente troverai consigli appropriati per ottimizzare la procedura.
    Questa regola può essere opinabile ma questo è quanto.

    A margine di tutto ciò, l'unica cosa che posso aggiungere è che, personalmente, apprezzerei ad ogni risposta data corrispondesse un riscontro, magari negativo ma questo aiuterebbe a capire se il parere dato è servito o è stato fuori luogo; questo, però, non dipende dai Moderatori del Forum ma dalla sensibilità di chi chiede un parere. In più occasioni ho cercato di proporre una soluzione, spesso senza sapere se la cosa sia andata a buon fine, molto probabilmente le soluzioni proposte erano fuori del mondo, ma avrei gradito saperlo. Ma questa è un'altra storia.

    Cordialmente:

    Giuseppe Guernieri
  • Re: Oroscopo...

    Giuseppe come puoi vedere c'è chi riesce ad aiutarmi,già due utenti con altrettante utili proposte. Quello che non ho apprezzato di Alex è soltanto il modo in cui a proseguito il messaggio. Se non ha tempo o voglia di rispondere allora non deve farlo.
    Non obblico nessuno...
  • Re: Oroscopo...

    Poche considerazioni volte a te, ma anche ai Moderatori.

    In primo luogo il Forum non è in assoluto il tuo HelpDesk personale, ma un luogo nel quale si affrontano i problemi di tutti, non è un Forum di cucina, se vuoi ricette vai li... questi sono forum tecnici e si parla in modo Tecnico, per pretendere informazioni di base si comprano Libri e si studia.

    Guarda caso, di tutti i suggerimenti dati, l'unico che hai trovato funzionale è stato quello per il quale bastava il COPY/PASTE..., della struttura delle Tabelle... nemmeno per l'anticamera... e peraltro il problema te lo troverai al primo inserimento di un NUOVO RECORD.

    Il forum è un luogo di discussione bidirezionale in modo più assoluto non è la scorciatoia personale per superare i problemi di CONOSCENZA e ricevere la "pappa pronta" è solo l'effetto criceto..., poi ognuno è libero di essere felice a correre nella propria ruota...!

    Il forum è luogo libero nel quale nessuno dice a nessuno cosa deve fare, solo i Moderatori possono censurare, e nel rispetto dei termini e concetti esposti, ribadisco che nessuna offesa ti è stata fatta e tu non sei nella posizione di impartire direttive o divieti di alcun genere a nessuno.

    Ritenere il tuo atteggiamento arrogante, sarebbe eccessivo, l'arroganza spesso è attribuita a chi conosce, mentre chi non conosce intelligentemente comprende, e bada che ho detto intelligentemente...

    Detto questo io non replico al FLAME o ad un siparietto inutile, ma mi aspetto una risposta dai Moderatori visto che ho segnalato il 3D almeno per capire se è questo il Forum di cui parliamo...
  • Re: Oroscopo...

    Sarà che è piena notte, ma non capisco perchè ci si debba scontrare così.

    Ho letto i vostri post e vorrei fare notare a entrambi dove, a mio avviso, avreste potuto utilizzare un linguaggio diverso ai fini di non urtare la sensibilità l'uno dell'altra.

    Alex quando hai scritto:
    "ho il sospetto che la tua preparazione sia molto acerba per comprendere quanto ti ho suggerito"
    Mettiti nei panni dell'altra persona, se gli dai un suggerimento e poi gli dici che probabilmente non è in grado di capirlo per via della sua preparazione, non è carino. Non trovi?
    Gli avresti pututo dire che, in caso avesse avuto bisogno di maggiori chiarimenti o spiegazioni, saresti stato disponibile.

    Laura3005 secondo me sei stata fin troppo polemica, in tutti i post a seguire, non ti riporto una selezione di frasi in quanto è il tono di fondo nel suo insieme a essere fuori luogo.
    Se hai avuto modo di leggere altre discussioni di questa sezione, avrai visto che Alex ha aiutato tanti utenti in maniera professionale e approfondita.
    Al momento, senza togliere nulla a nessuno, è l'utente che ha dimostrato maggiormente la sua preparazione sulle tematiche MS Access e ha fornito il suo aiuto a chi ne ha avuto bisogno.

    Chiedo a entrambi di fare uno sforzo di comprensione ricordandovi sempre di mantenere la cortesia nei rapporti con gli altri utenti.
    Ognuno di noi ha il suo livello di sensibilità e lo scontro e la polemica non portano mai a nulla di costruttivo!
  • Re: Oroscopo...

    Ciao ragazzi, buona giornata!
    In effetti c' era qualcosa che non mi quadrava. Supponiamo di avere una applicazione scritta ad esempio in Visual Basic, se ho un database contenente delle date e in qualche form volessi visualizzare il segno zodiacale, mai e poi mai (e ripeto mai) andrei a ravanare il database aggiungendo colonne e tabelle qua e là ma risolverei il tutto via codice.

    Lo stesso immagino valga anche per una applicazione scitta in Access (ho detto immagino, non sono esperto, correggetemi se sbaglio). Se un campo può essere calcolato a partire da altri perchè mai dovrei alterare la struttura del db?

    Il problema di Laura era: data una tabella contenente un campo 'data' voglio visualizzare il segno zodiacale, e questo valore deve cambiare quando la data cambia.

    Per fare questo basta utilizzare le maschere, le maschere sono uno strumento messo a disposizione da Access per avere delle 'viste' sui tuoi dati e per poterli modificare in maniera controllata.

    Crearne una è semplicissimo, ad esempio premi 'Crea maschera più elementi' scegli la tabella ed avrai una visualizzazione tabellare dei tuoi dati (solo che qui non sei nella tabella, si tratta di una vista sui dati). È possibile ad esempio aggiungere un campo e decidere cosa deve mostrare, ciò che mostra può essere anche una espressione (ad esempio puoi motiplicare o dividere il valore di un campo ecc). Nel tuo caso l' espressione che devi scrivere è la seguente:
    
      = IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #22/12/2000#; "Capricorno";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #23/11/2000#; "Sagittario";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #23/10/2000#; "Scorpione";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #22/9/2000#; "Bilancia";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #24/8/2000#; "Vergine";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #23/7/2000#; "Leone";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #22/6/2000#; "Cancro";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #21/5/2000#; "Gemelli";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #21/4/2000#; "Toro";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #21/3/2000#; "Ariete";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #20/2/2000#; "Pesci";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #21/1/2000#; "Acquario";
       "Capricorno"))))))))))))
    
    A questo punto quando apri la maschera nel campo che hai aggiunto vedrai visualizzato il segno zodiacae, che si aggiorna automaticamentre quando cambi la data. (ripeto il campo 'segno zodiacale' lo hai aggiunto nella maschera non nella tabella)

    Forte!, non aveva mai usato le maschere di Access! Magari ho detto qualche sciocchezza e sicuramente si potrà fare di meglio, comunque ho imparato qualcosa di nuovo.
    Ciao a tutti.
  • Re: Oroscopo...

    Toki ha scritto:


    Sarà che è piena notte, ma non capisco perchè ci si debba scontrare così.

    Ho letto i vostri post e vorrei fare notare a entrambi dove, a mio avviso, avreste potuto utilizzare un linguaggio diverso ai fini di non urtare la sensibilità l'uno dell'altra.

    Alex quando hai scritto:
    "ho il sospetto che la tua preparazione sia molto acerba per comprendere quanto ti ho suggerito"
    Mettiti nei panni dell'altra persona, se gli dai un suggerimento e poi gli dici che probabilmente non è in grado di capirlo per via della sua preparazione, non è carino. Non trovi?
    Gli avresti pututo dire che, in caso avesse avuto bisogno di maggiori chiarimenti o spiegazioni, saresti stato disponibile.

    Laura3005 secondo me sei stata fin troppo polemica, in tutti i post a seguire, non ti riporto una selezione di frasi in quanto è il tono di fondo nel suo insieme a essere fuori luogo.
    Se hai avuto modo di leggere altre discussioni di questa sezione, avrai visto che Alex ha aiutato tanti utenti in maniera professionale e approfondita.
    Al momento, senza togliere nulla a nessuno, è l'utente che ha dimostrato maggiormente la sua preparazione sulle tematiche MS Access e ha fornito il suo aiuto a chi ne ha avuto bisogno.

    Chiedo a entrambi di fare uno sforzo di comprensione ricordandovi sempre di mantenere la cortesia nei rapporti con gli altri utenti.
    Ognuno di noi ha il suo livello di sensibilità e lo scontro e la polemica non portano mai a nulla di costruttivo!
    Toki hai ragione nel dire che le polemiche non portano a nulla di costruttivo,ma io non volevo polemizzare,soltanto esprimere la mia opinione,in un modo che forse sembrava polemico.
    Con questa risposta chiudo quà il mio "sfogo".
    Faccio una domanda a te,ad un'altro moderatore o a qualcuno del forum:
    si puo' chiedere qualsiasi cosa anche se poi non si è abbastanza preparati?
    Io sono appena all'inizio,ho letto un libro su Access,ma tante cose si apprendono meglio con la pratica. Magari non è questo un forum per imparare...
    Aspetto una risposta
    non sono polemica... eheh
    Un saluto a tutti
  • Re: Oroscopo...

    barba59 ha scritto:


    Ciao ragazzi, buona giornata!
    In effetti c' era qualcosa che non mi quadrava. Supponiamo di avere una applicazione scritta ad esempio in Visual Basic, se ho un database contenente delle date e in qualche form volessi visualizzare il segno zodiacale, mai e poi mai (e ripeto mai) andrei a ravanare il database aggiungendo colonne e tabelle qua e là ma risolverei il tutto via codice.

    Lo stesso immagino valga anche per una applicazione scitta in Access (ho detto immagino, non sono esperto, correggetemi se sbaglio). Se un campo può essere calcolato a partire da altri perchè mai dovrei alterare la struttura del db?

    Il problema di Laura era: data una tabella contenente un campo 'data' voglio visualizzare il segno zodiacale, e questo valore deve cambiare quando la data cambia.

    Per fare questo basta utilizzare le maschere, le maschere sono uno strumento messo a disposizione da Access per avere delle 'viste' sui tuoi dati e per poterli modificare in maniera controllata.

    Crearne una è semplicissimo, ad esempio premi 'Crea maschera più elementi' scegli la tabella ed avrai una visualizzazione tabellare dei tuoi dati (solo che qui non sei nella tabella, si tratta di una vista sui dati). È possibile ad esempio aggiungere un campo e decidere cosa deve mostrare, ciò che mostra può essere anche una espressione (ad esempio puoi motiplicare o dividere il valore di un campo ecc). Nel tuo caso l' espressione che devi scrivere è la seguente:
    
      = IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #22/12/2000#; "Capricorno";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #23/11/2000#; "Sagittario";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #23/10/2000#; "Scorpione";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #22/9/2000#; "Bilancia";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #24/8/2000#; "Vergine";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #23/7/2000#; "Leone";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #22/6/2000#; "Cancro";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #21/5/2000#; "Gemelli";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #21/4/2000#; "Toro";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #21/3/2000#; "Ariete";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #20/2/2000#; "Pesci";
        IIf(DateSerial(2000; Month([Nascita]); Day([Nascita])) >= #21/1/2000#; "Acquario";
       "Capricorno"))))))))))))
    
    A questo punto quando apri la maschera nel campo che hai aggiunto vedrai visualizzato il segno zodiacae, che si aggiorna automaticamentre quando cambi la data. (ripeto il campo 'segno zodiacale' lo hai aggiunto nella maschera non nella tabella)

    Forte!, non aveva mai usato le maschere di Access! Magari ho detto qualche sciocchezza e sicuramente si potrà fare di meglio, comunque ho imparato qualcosa di nuovo.
    Ciao a tutti.
    Barba penso sia quello che volevo fare io...dico penso perchè ancora non sono a casa e non posso provarlo,dopo ti faccio sapere.
    grazie comunque.
  • Re: Oroscopo...

    barba59 ha scritto:


    Ciao ragazzi, buona giornata!....
    Cerco di esporti alcune problematiche che con Access devono essere valutate all'inizio, proprio per la stranezza che Access nel suo mondo impone.
    L'immissione della Data in una maschera genera Eventi(nulla di nuovo), ed il Calcolo chiaramente dovrebbe essere fatto su Evento(diciamo dopo aggiornamento del campo data).

    Chiaramente il Calcolo deve essere fatto anche sfruttando l'origine controllo di una TextBox(che è DataBound) non associata ad un campo ma referenziato al calcolo.
    In questo modo allo scorrimento dei Record otterresti il ricalcolo, perchè l'evento Current genera tra le altre cose una chiamata a RECALC.

    Fin quì pertanto la tua proposta è valida, possiamo poi migliorare la funzione per ottimizzarla... ma sono piccolezze che non osserviamo ora.

    C'è un problema tuttavia che spesso non viene considerato.
    Le maschere continue...!

    Se applichi il metodo proposto e vuoi usare maschere continue(effetto ListView per capirci), non funziona nulla, il calcolo lo esegue solo la 1° volta e ti ritrovi N Records con il calcolato del 1°, quindi a Gennaio potresti trovarti Bilancia...!
    Se poi attivi il 2° Record, tutti i Records assumeranno nel Controllo con il Calcolo il Calcolo del 2° record, e così via... su NUOVA IMMISSIONE tutti invece avranno "#####" in quanto non possibile il calcolo.

    Detto questo la soluzione e lavorare nelle Query ed eseguire li il Calcolo, ma di conseguenza si generano altri problemi:
    1) Come fare ad ottenere il calcolo su IMMISSIONE di nuovo Record...? Serve un REQUERY per forzare la riesecuzione della Query di base, che avviene solo con il Requery appunto in quanto si è Aggiunto un Record.
    2) Rallentamenti notevoli JET è famoso per questo(in esponenziale cresicta con l'aumento dei dati), motivo per cui proposi la Tabella, sfruttando i JOIN e l'autoLookup dei dati le cose sono funzionali.
    3) Una PORTABILITA' verso altri RDBMS prossima allo zero.

    Chiaramente però se tutti questi aspetti si conoscono anche le scelte del metodo vengono di conseguenza con ragionevolezza.

    Ciao
  • Re: Oroscopo...

    Ciao @Alex,
    Interessante, mi piacerebbe approfondire, ma per ora mi accontento di una infarinatura e poi ti lascio in pace.
    Un' altra cosa che ho provato a fare è stata quella di usare del codice VB, ho scritto questa funzione:
    
    Private Sub AggiornaZodiaco()
       d = DateSerial(2000, Month([Nascita]), Day([Nascita]))
       Zodiaco.Value = _
          IIf(d >= #12/22/2000#, "Capricorno", _
          IIf(d >= #11/23/2000#, "Sagittario", _
          IIf(d >= #10/23/2000#, "Scorpione", _
          IIf(d >= #9/22/2000#, "Bilancia", _
          IIf(d >= #8/24/2000#, "Vergine", _
          IIf(d >= #7/23/2000#, "Leone", _
          IIf(d >= #6/22/2000#, "Cancro", _
          IIf(d >= #5/21/2000#, "Gemelli", _
          IIf(d >= #4/21/2000#, "Toro", _
          IIf(d >= #3/21/2000#, "Ariete", _
          IIf(d >= #2/20/2000#, "Pesci", _
          IIf(d >= #1/21/2000#, "Acquario", _
          "Capricorno"))))))))))))
    End Sub
    
    Per poi richiamarla dall' evento 'AfterUpdate' del textBox 'Nascita' della maschera di prima.
    Ho provato e funziona, su questo hai qualche commento?

    Ciao Laura,

    Laura3005 ha scritto:


    Faccio una domanda a te,ad un'altro moderatore o a qualcuno del forum:
    si puo' chiedere qualsiasi cosa anche se poi non si è abbastanza preparati?
    Io sono appena all'inizio,ho letto un libro su Access,ma tante cose si apprendono meglio con la pratica. Magari non è questo un forum per imparare...
    Aspetto una risposta
    non sono polemica... eheh
    Un saluto a tutti
    Ma ci mancherebbe, puoi chiedere tutto quello che ti pare, qua nessuno è nato imparato.
    E poi questo forum è il migliore di tutti!

    Prova a cercare su Google 'Access oroscopo', oppure 'Access segno zodiacale', oppure 'Access zodiaco' troverai questo post in prima pagina! Ora chi cerca come convertire una data nel segno zodiacale troverà la soluzione proprio qui!
    Ciao a tutti, è stato un piacere conoscervi
  • Re: Oroscopo...

    Personalmente avrei scritto una cosa diversa, così da poter essere richiamata anche in una Query...
    
    Public Function AggiornaZodiaco(Data As Date) As String
    
        Dim d As Date
    
        d = CDate(Format(DateSerial(2000, Month([Data]), Day([Data])), "mm/dd/yyyy"))
        
        Select Case d
            Case Is >= #12/22/2000#
                AggiornaZodiaco = "Capricorno"
            Case Is >= #11/23/2000#
                AggiornaZodiaco = "Sagittario"
            Case Is >= #10/23/2000#
                AggiornaZodiaco = "Scorpione"
            Case Is >= #9/22/2000#
                AggiornaZodiaco = "Bilancia"
            Case Is >= #8/24/2000#
                AggiornaZodiaco = "Vergine"
            Case Is >= #7/23/2000#
                AggiornaZodiaco = "Leone"
            Case Is >= #6/22/2000#
                AggiornaZodiaco = "Cancro"
            Case Is >= #5/21/2000#
                AggiornaZodiaco = "Gemelli"
            Case Is >= #4/21/2000#
                AggiornaZodiaco = "Toro"
            Case Is >= #3/21/2000#
                AggiornaZodiaco = "Ariete"
            Case Is >= #2/20/2000#
                AggiornaZodiaco = "Pesci"
            Case Is >= #1/21/2000#
                AggiornaZodiaco = "Acquario"
            Case Else
                AggiornaZodiaco = "Capricorno"
        End Select
    End Function
    In questo modo scrivedo semplicmente
    
    SELECT *, AggiornaZodiaco([CampoData]) AS SegnoZodiacale FROM Tabella
    ottengo anche la possibilità di visualizzare le maschere continue...!
    La Funzione è Generalizzata, decisamente più performante non usando degli IIF concatenati che sono dispersivi.

    P.S. fai attenzione alla tua Sub... la data ottenuta con DateSerial, attua erroneamente l'inversione Mese/Giorno... usando l'accezione anglosassone.
  • Re: Oroscopo...

    Ciao @Alex,
    Perfetto! grazie del consiglio.
Devi accedere o registrarti per scrivere nel forum
27 risposte