Oroscopo...

di il
27 risposte

Oroscopo...

Sono sempre io...
Magari ci sono persone che sono interessate ad altre cose e quindi metto un'altra domanda.
Avendo una colonna con la data di nascita,vorrei che in automatico mi calcolasse il segno zodiacale in un'altra colonna.
In excel ci sono riuscita,con vari passaggi ,ma in access non so' nemmeno dove iniziare.
Grazie ancora...

27 Risposte

  • Re: Oroscopo...

    All'interno della stessa tabella è impossibile farlo.
    Devi creare una query apposita che faccia questo.
    Adesso non saprei se sei obbligata a creare un'altra tabella dove inserisci i riferimenti
    SegnoZodiacale / DataInizio / DataFine e poi creare una query che faccia un appropriato confronto con queste due date.......adesso non saprei indicarti la procedura...ci si può lavorare sopra.
    Oppure fare tutto in una query, ma anche qui sarebbe opportuno agire a passi separati.
    In ogni caso devi lavorare sulle query.
  • Re: Oroscopo...

    Mi viene in mente di procedere così.
    1) Crea una tabella Zodiaco avente un solo campo Segno (testo)(ChiavePrimaria)(questa tabella avrà ovviamente soltanto 12 record).
    2) Crea una tabella GiorniZodiaco avente i seguenti campi:
    Giorno: Data. Ovviamente questa tabella avrà 366 record. Inserisci i 366 giorni di un anno bisestile qualsiasi.
    Segno: testo
    3) Crea una relazione uno-a-molti fra i campi Zodiaco.Segno e GiorniZodiaco.Segno
    4) Ovviamente, dopo aver inserito i dati nelle tabelle Zodiaco e GiorniZodiaco.Giorno, dovrai premurarti di associare il Segno accanto ad ogni data.
    Tutto questo come fase preparatoria.
    5) Adesso immagino tu avrai una tabella Persone in cui, oltre a Nome, Cognome e altri campi, c'è sicuramente il campo DataNascita.
    6) Ora preferisco procedere per piccoli passi:
    6.1 Creare Query1 dove importare la tabella Persone e trascinare tutti i campi.
    6.2 Creare Query2 dove importare la tabella GiorniZodiaco e trascinare tutti i campi.
    6.3 Ad entrambe le query, per il campo Data occorre giocare con qualche funzione tipo Left per poter prelevare soltanto la parte riguardante giorno/mese. Quindi apparirà qualcosa come Left(DataNascita) e Left(Giorno)...purtroppo non conosco la sintassi corretta di questa funzione, dipende pure da come è stato impostato il formato data predefinito.
    6.4 Creare Query3 dove importare Query1 e Query2 e congiungere i due campi Left(DataNascita) e Left(Giorno). Dovrebbero apparire i risultati cercati per ogni Persona.
  • Re: Oroscopo...

    Osvaldo sei stato gentilissimo e bravo nello spiegare,ma non mi riesce...Ho provato ma non trovo nemmeno la funzione Left...
  • Re: Oroscopo...

    Partiamo dal fatto che Access ed Excel non sono nemmeno parenti.

    Con Access le cose si devono PENSARE in modo strutturato prima, altrimenti si fanno solo accrocchi.

    Quello che chiedi è fattibile, dire semplice sarebbe una considerazione personale.

    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)

    Quindi per sapere di che segno è basta controllare in quale Record la DATA(Nascita) è compresa tra DATA_INI e DATA_END...

    Il tutto si deve fare con il codice VBA su Evento BeforeUpdate(Prima di Aggiornare della Maschera).

    Ora visto le risposte che hai dato, ho il sospetto che la tua preparazione sia molto acerba per comprendere quanto ti ho suggerito... ma quì solo tu puoi colmare il GAP.
  • Re: Oroscopo...

    Grazie Alex,ma allora il tuo aiuto non mi serve...Visto che non sai spiegarti in maniera più facile.
    Grazie ugualmente...
  • Re: Oroscopo...

    @Alex ha scritto:


    Partiamo dal fatto che Access ed Excel non sono nemmeno parenti.

    Con Access le cose si devono PENSARE in modo strutturato prima, altrimenti si fanno solo accrocchi.

    Quello che chiedi è fattibile, dire semplice sarebbe una considerazione personale.

    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)

    Quindi per sapere di che segno è basta controllare in quale Record la DATA(Nascita) è compresa tra DATA_INI e DATA_END...

    Il tutto si deve fare con il codice VBA su Evento BeforeUpdate(Prima di Aggiornare della Maschera).

    Ora visto le risposte che hai dato, ho il sospetto che la tua preparazione sia molto acerba per comprendere quanto ti ho suggerito... ma quì solo tu puoi colmare il GAP.
    Quello che più mi fà arrabbiare in certe persone ,è la presunzione.
    IL fatto ti sentirsi troppo "bravi" per cercare di spiegare qualcosa in maniera più facile.
    Partiamo dal fatto che in un certo modo Access e Exell sono parenti,al contrario di come dici tu. Questo già lo so'.
    Poi se sei tanto "furbo" da capire che sono ancora acerba,allora non sforzarti nemmeno a rispondere. Sarebbe come se sapendo che una persona non parla inglese,gli si chieda qualcosa in inglese ,con l'arroganza di pensare : se lo parlo io lo devi parlare anche tu...
    Cercate di abbassare la cresta...
    Un bacio a tutti
  • Re: Oroscopo...

    Dal punto 6.3 in poi funziona così:
    6.3 Ad entrambe le query, per il campo Data occorre giocare con la funzione Left per poter prelevare soltanto la parte riguardante giorno/mese.
    In visualizzazione struttura di entrambe le query, al campo Giorno, in corrispondenza di Campo, seleziona tutto il testo e scrivi così:
    LG: Left([Giorno];5)
    dove LG sarà l'intestazione della colonna (puoi scrivere qualcosaltro se non ti piace, ma non scrivere proprio Giorno, si creano problemi di ridondanza)
    [Giorno] è il campo data appunto. Nel caso di DataNascita, dovrai scrivere [DataNascita].
    5 è il numero di caratteri da prelevare a partire da sinistra.
    Per 5 sorge un problema: diventa fondamentale il formato data predefinito. Per essere coerenti sempre, devi impostare il formato data, in modo che sia sempre:
    gg/mm/aaaa
    es. 01/01/2000
    23/06/2000
    12/11/2000
    nel mio Access non appare...a questo punto dovresti andare a cambiare le tue impostazioni Data di Windows e specificare che vuoi che la data sia impostata così.
    6.4 Creare Query3 dove importare Query1 e Query2 e congiungere i due campi LG. Dovrebbero apparire i risultati cercati per ogni Persona.
  • Re: Oroscopo...

    Laura3005 ha scritto:


    Quello che più mi fà arrabbiare in certe persone ,è la presunzione.
    IL fatto ti sentirsi troppo "bravi" per cercare di spiegare qualcosa in maniera più facile.
    Mi spiace che tu abbia interpretato le mie affermazioni come un'attacco personale... ma non capisco perchè dovresti sentirti offesa se ti si fa riflettere sulla BASE della formazione.
    Come sai quando si approccia ad un prodotto NUOVO, serve studiarlo non solo per non commettere errori dovuti ad inesperienza, ma soprattutto per potersi interfacciare in modo TECNICO con chi normalmente ci lavora da tempo.
    La presunzione spesso è da parte di chi non ha conoscenze che crede, banalizzando di essere pronto.

    Laura3005 ha scritto:


    Partiamo dal fatto che in un certo modo Access e Exell sono parenti,al contrario di come dici tu. Questo già lo so'.
    Devo smentirti... la tua affermazione non significa nulla tecnicamente parlando, Excel ed Access sono 2 prodotti molto diversi, sostanzialmente diversi.
    Il fatto che tu li definisca parenti senza entrare nel dettaglio di cosa sia la parentela è un problema di approccio tecnico.
    Access è un sistema complesso basato su un'interfaccia ed un Database Relazionale.
    Excel, nonostante molti lo chiamino Database non è di tipo RELAZIONALE e rispetta regole di strutturazione COMPLETAMENTE DIFFERNETI e non sono minimamente da mettere in relazione.

    C'è il VBA che è parente, ma ha Funzioni specifiche delle Librerie di EXCEL, che non sono anche quì compatibili con quelle di ACCESS.

    L'ambiente Tecnico è tale e non entrare nel dettaglio non serve a nessuno, ma per farlo servono BASI.
    Personalmente, io mi asterrei da insegnare concetti ad altri, se non fossi formato tecnicamente in modo adeguato.

    Laura3005 ha scritto:


    Poi se sei tanto "furbo" da capire che sono ancora acerba,allora non sforzarti nemmeno a rispondere.

    Ripeto che le affermazioni sono volte a farti capire che serve maturare una conoscenza di base che non hai, e questa, perdonami ma non è un'offesa è constatazione oggettiva.
    Io reputo di non aver usato termini "offensivi" e ti invito, nella maturità del comportamento, a fare altrettanto.

    Laura3005 ha scritto:


    Sarebbe come se sapendo che una persona non parla inglese,gli si chieda qualcosa in inglese ,con l'arroganza di pensare : se lo parlo io lo devi parlare anche tu...
    Dissento completamente da questa visione, quì non siamo a scuola, chi entra in una COMUNITY tecnica è tenuto a formarsi le BASI minimali per potersi confrontare in modo tecnico.
    Se non sai l'inglese lo impari... almeno quelle 3 parole che servono per mangiare.

    Laura3005 ha scritto:


    Cercate di abbassare la cresta...
    Un bacio a tutti
    Lascio a te il compito di insegnarci come...!
  • Re: Oroscopo...

    @Alex ha scritto:


    Laura3005 ha scritto:


    Quello che più mi fà arrabbiare in certe persone ,è la presunzione.
    IL fatto ti sentirsi troppo "bravi" per cercare di spiegare qualcosa in maniera più facile.
    Mi spiace che tu abbia interpretato le mie affermazioni come un'attacco personale... ma non capisco perchè dovresti sentirti offesa se ti si fa riflettere sulla BASE della formazione.
    Come sai quando si approccia ad un prodotto NUOVO, serve studiarlo non solo per non commettere errori dovuti ad inesperienza, ma soprattutto per potersi interfacciare in modo TECNICO con chi normalmente ci lavora da tempo.
    La presunzione spesso è da parte di chi non ha conoscenze che crede, banalizzando di essere pronto.

    Laura3005 ha scritto:


    Partiamo dal fatto che in un certo modo Access e Exell sono parenti,al contrario di come dici tu. Questo già lo so'.
    Devo smentirti... la tua affermazione non significa nulla tecnicamente parlando, Excel ed Access sono 2 prodotti molto diversi, sostanzialmente diversi.
    Il fatto che tu li definisca parenti senza entrare nel dettaglio di cosa sia la parentela è un problema di approccio tecnico.
    Access è un sistema complesso basato su un'interfaccia ed un Database Relazionale.
    Excel, nonostante molti lo chiamino Database non è di tipo RELAZIONALE e rispetta regole di strutturazione COMPLETAMENTE DIFFERNETI e non sono minimamente da mettere in relazione.

    C'è il VBA che è parente, ma ha Funzioni specifiche delle Librerie di EXCEL, che non sono anche quì compatibili con quelle di ACCESS.

    L'ambiente Tecnico è tale e non entrare nel dettaglio non serve a nessuno, ma per farlo servono BASI.
    Personalmente, io mi asterrei da insegnare concetti ad altri, se non fossi formato tecnicamente in modo adeguato.

    Laura3005 ha scritto:


    Poi se sei tanto "furbo" da capire che sono ancora acerba,allora non sforzarti nemmeno a rispondere.

    Ripeto che le affermazioni sono volte a farti capire che serve maturare una conoscenza di base che non hai, e questa, perdonami ma non è un'offesa è constatazione oggettiva.
    Io reputo di non aver usato termini "offensivi" e ti invito, nella maturità del comportamento, a fare altrettanto.

    Laura3005 ha scritto:


    Sarebbe come se sapendo che una persona non parla inglese,gli si chieda qualcosa in inglese ,con l'arroganza di pensare : se lo parlo io lo devi parlare anche tu...
    Dissento completamente da questa visione, quì non siamo a scuola, chi entra in una COMUNITY tecnica è tenuto a formarsi le BASI minimali per potersi confrontare in modo tecnico.
    Se non sai l'inglese lo impari... almeno quelle 3 parole che servono per mangiare.

    Laura3005 ha scritto:


    Cercate di abbassare la cresta...
    Un bacio a tutti
    Lascio a te il compito di insegnarci come...!
    Ti dico solanto che preferisco il modo di "aiutare" nelle rispote di Osvaldo laviosa. Che sapendo e immaginando la mia poca preparazione,almeno prova ad essere chiaro spiegando passo per passo un qualcosa che poi tanto difficile non mi sembra.
    Vai a rileggere tu stesso quello che hai scritto tu ,e quello che ha scritto lui.
    Se io ero abbastanza preparata da capire il tuo aiuto,allora non mi sarebbe nemmeno servito...
    Nel senso che ma mia domanda non mi sembra tanto difficile. Ciao
  • Re: Oroscopo...

    OsvaldoLaviosa ha scritto:


    Dal punto 6.3 in poi funziona così:
    6.3 Ad entrambe le query, per il campo Data occorre giocare con la funzione Left per poter prelevare soltanto la parte riguardante giorno/mese.
    In visualizzazione struttura di entrambe le query, al campo Giorno, in corrispondenza di Campo, seleziona tutto il testo e scrivi così:
    LG: Left([Giorno];5)
    dove LG sarà l'intestazione della colonna (puoi scrivere qualcosaltro se non ti piace, ma non scrivere proprio Giorno, si creano problemi di ridondanza)
    [Giorno] è il campo data appunto. Nel caso di DataNascita, dovrai scrivere [DataNascita].
    5 è il numero di caratteri da prelevare a partire da sinistra.
    Per 5 sorge un problema: diventa fondamentale il formato data predefinito. Per essere coerenti sempre, devi impostare il formato data, in modo che sia sempre:
    gg/mm/aaaa
    es. 01/01/2000
    23/06/2000
    12/11/2000
    nel mio Access non appare...a questo punto dovresti andare a cambiare le tue impostazioni Data di Windows e specificare che vuoi che la data sia impostata così.
    6.4 Creare Query3 dove importare Query1 e Query2 e congiungere i due campi LG. Dovrebbero apparire i risultati cercati per ogni Persona.
    Grazie Osvaldo,dopo ci provo e ti faccio sapere . Grazie per la pazienza.
    Bacio
  • Re: Oroscopo...

    Ciao ragazzi,
    Sono stato attirato qui dai fulmini e saette che ho visto scoccare poco fa.

    Laura3005 ha scritto:


    Avendo una colonna con la data di nascita,vorrei che in automatico mi calcolasse il segno zodiacale in un'altra colonna.
    In excel ci sono riuscita,con vari passaggi ,ma in access non so' nemmeno dove iniziare.
    In pratica hai una tabella 'Persone' con le colonne 'Nascita' e 'Zodiaco' e vorresti riempire la colonna 'Zodiaco' in base alla data di nascita.

    Mi sono chiesto se si potesse farlo con una sola query senza ricorrere ad altre tabelle e mi sembra che questa funzioni:
    
    UPDATE Persone SET Persone.Zodiaco = 
        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"))))))))))))
    WHERE (true);
    
    È un po lunga, comunque l' ho provata sotto Access2007 e va.

    'DateSerial' crea una data a partire da anno, mese e giorno (in pratica confronti le date stando nel 2000).
    'IIf' serve per restituire valori diversi in base ad una condizione.
    vedi: http://www.techonthenet.com/access/functions/advanced/iif.php

    Il 'WHERE (true)' alla fine secondo mè non ci dovrebbe stare ma se non lo metto non mi funziona (non sono esperto di Access! ).
    Fammi sapere se funziona.
  • Re: Oroscopo...

    barba59 ha scritto:


    Ciao ragazzi,
    Sono stato attirato qui dai fulmini e saette che ho visto scoccare poco fa.

    Laura3005 ha scritto:


    Avendo una colonna con la data di nascita,vorrei che in automatico mi calcolasse il segno zodiacale in un'altra colonna.
    In excel ci sono riuscita,con vari passaggi ,ma in access non so' nemmeno dove iniziare.
    In pratica hai una tabella 'Persone' con le colonne 'Nascita' e 'Zodiaco' e vorresti riempire la colonna 'Zodiaco' in base alla data di nascita.

    Mi sono chiesto se si potesse farlo con una sola query senza ricorrere ad altre tabelle e mi sembra che questa funzioni:
    
    UPDATE Persone SET Persone.Zodiaco = 
        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"))))))))))))
    WHERE (true);
    
    È un po lunga, comunque l' ho provata sotto Access2007 e va.

    'DateSerial' crea una data a partire da anno, mese e giorno (in pratica confronti le date stando nel 2000).
    'IIf' serve per restituire valori diversi in base ad una condizione.
    vedi: http://www.techonthenet.com/access/functions/advanced/iif.php

    Il 'WHERE (true)' alla fine secondo mè non ci dovrebbe stare ma se non lo metto non mi funziona (non sono esperto di Access! ).
    Fammi sapere se funziona.
    Ciaooo Barba.
    Prima di tutto ti ringrazio per l'aiuto,lo provero' subito,pero' prima voglio rispondere ancora una volta.
  • Re: Oroscopo...

    barba59 ha scritto:


    Ciao ragazzi,
    Sono stato attirato qui dai fulmini e saette che ho visto scoccare poco fa.
    Barba a volte mi faccio prendere un po' la mano; ma è più forte di me eheh.
    Se io vado in un forum di cucina e chiedo come si prepari la pasta col pomodoro,e arriva uno che mi dice che prima devo conoscere tutti i tipi di pomodoro che ci sono sul mercato,che devo conoscere la quantità dei grassi monoinsaturi che ha l'olio extra vergine d'oliva,allora parte un "vai a quel paese" di default... Scusa ma certe cose non si possono sentire.
    Se chiedo una ricetta cosi' semplice mi sembra scontato che non sono una cuoca tre stelle.
    Tutti a me capitano sti saccenti....che alla fine se sei tanto preparato,allora devi essere bravo a spiegare le cose difficili in maniera più facile possibile ,se non ci riesci allora non dare aiuto a nessuno,tieniti il tuo sapere e ciaoooo
    Scusate per lo sfogo hehe
  • Re: Oroscopo...

    barba59 ha scritto:


    Ciao ragazzi,
    Sono stato attirato qui dai fulmini e saette che ho visto scoccare poco fa.

    Laura3005 ha scritto:


    Avendo una colonna con la data di nascita,vorrei che in automatico mi calcolasse il segno zodiacale in un'altra colonna.
    In excel ci sono riuscita,con vari passaggi ,ma in access non so' nemmeno dove iniziare.
    In pratica hai una tabella 'Persone' con le colonne 'Nascita' e 'Zodiaco' e vorresti riempire la colonna 'Zodiaco' in base alla data di nascita.

    Mi sono chiesto se si potesse farlo con una sola query senza ricorrere ad altre tabelle e mi sembra che questa funzioni:
    
    UPDATE Persone SET Persone.Zodiaco = 
        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"))))))))))))
    WHERE (true);
    
    È un po lunga, comunque l' ho provata sotto Access2007 e va.

    'DateSerial' crea una data a partire da anno, mese e giorno (in pratica confronti le date stando nel 2000).
    'IIf' serve per restituire valori diversi in base ad una condizione.
    vedi: http://www.techonthenet.com/access/functions/advanced/iif.php

    Il 'WHERE (true)' alla fine secondo mè non ci dovrebbe stare ma se non lo metto non mi funziona (non sono esperto di Access! ).
    Fammi sapere se funziona.
    Barba grandioso...pero' c'è un piccolo problema,non si aggiorna in automatico...devo cliccare ogni volta sulla query...Avresti qualche soluzione pratica?
    Graziiie mille davvero
    Bacio
Devi accedere o registrarti per scrivere nel forum
27 risposte