Impostare automaticamente chiave primaria multicampo

di il
28 risposte

28 Risposte - Pagina 2

  • Re: Impostare automaticamente chiave primaria multicampo

    ElisabettaPisano ha scritto:


    1) Uso Access 2007

    2) Io ho 2 pulsanti: il primo per importare la prima tabella ad inizio di ogni stagione con l'elenco di tutti i codici articolo presenti (quindi la macro collegata al pulsante importa da excel questa tabella che viene da un programma aziendale, ed è qui che devo impostare manualmente la chiave primaria), il secondo per importare ogni settimana la tabella con la situazione aggiornata (la macro importa questa tabella ed esegue in successione una query di accodamento e una di aggiornamento, in quanto ci possono essere codici non presenti nella tabella iniziale e poi devono essere aggiornati i campi di ordinato e spedito).

    3) Sì, quando eseguo l'importazione con il 1° pulsante sparisce e si ricrea una nuova tabella (anche perchè di stagione in stagione gli articoli cambiano).
    Benissimo. Ora: riesci a vedere il dettaglio della macro associata al 1° pulsante? L'hai creata tu? E, in caso di necessità, riusciresti a modificarla o a crearne un'altra adatta che risolva il tuo problema o ti è preclusa questa possibilità dalle impostazioni del software? (magari in ambito lavorativo ci sono particolari restrizioni).
  • Re: Impostare automaticamente chiave primaria multicampo

    OsvaldoLaviosa ha scritto:


    @Alex ha scritto:


    piu possibile che ne conosca superficialmente qualche elemento di buonsenso che a livello Logico fa tornare i conti...
    Sono d'accordo da questo punto di vista. Credo di appartenere a questa "eventuale categoria" di programmatori, o, se più vi piace, di "semplici approcciatori ai problemi di organizzazione dati".
    Però se parliamo fra di noi (pubblicamente) di altre tematiche, rischiamo di andare fuori tema. Spero che Elisabetta non ne esca più confusa di prima.
    Il punto non è andare fuori tema, gli argomenti che ti sono stati esposti sono sia di approccio al problema che tecnici e decisamente rilevanti.
    In sostanza quando si espongono posizioni di ASSOLUTEZZA, come la forzata necessità di NORMALIZZARE, il rischio è di trasmettere messaggi sbagliati soprattutto ai meno esperti e soprattutto se non correttamente contestualizzati in quanto tecnicamente privi di fondamento per come sono stati esposti.
    Quindi il mio intervento su basi tecniche è volto sia ad evidenziare un'errata convinzione che a chiarire informazioni agli Utenti che leggono e dare loro una visione piu critica.
  • Re: Impostare automaticamente chiave primaria multicampo

    Philcattivocarattere ha scritto:


    .Benissimo. Ora: riesci a vedere il dettaglio della macro associata al 1° pulsante? L'hai creata tu? E, in caso di necessità, riusciresti a modificarla o a crearne un'altra adatta che risolva il tuo problema o ti è preclusa questa possibilità dalle impostazioni del software? (magari in ambito lavorativo ci sono particolari restrizioni).
    E' un semplice Trasferisci Foglio di Calcolo. Quindi esegue solo l'import della tabella da Excel.
    Se necessario posso modificarla o crearne un'altra per sostituirla, non dovrei avere alcuna restrizione..
  • Re: Impostare automaticamente chiave primaria multicampo

    ElisabettaPisano ha scritto:


    Philcattivocarattere ha scritto:


    .Benissimo. Ora: riesci a vedere il dettaglio della macro associata al 1° pulsante? L'hai creata tu? E, in caso di necessità, riusciresti a modificarla o a crearne un'altra adatta che risolva il tuo problema o ti è preclusa questa possibilità dalle impostazioni del software? (magari in ambito lavorativo ci sono particolari restrizioni).
    E' un semplice Trasferisci Foglio di Calcolo. Quindi esegue solo l'import della tabella da Excel.
    Se necessario posso modificarla o crearne un'altra per sostituirla, non dovrei avere alcuna restrizione..
    La cosa mi suona strana: c'è solo l'azione "trasferisci foglio di calcolo"? Suona strano perché se è anche impostata la tabella di destinazione, che da quanto ho capito è sempre la stessa (confermi?), i dati vengono accodati, quindi la tabella non viene prima cancellata e poi ricreata. Quali sono gli argomenti dell'azione? (quelli nella parte inferiore della videata del dettaglio macro). Sto ragionando cercando di restare all'interno dell'uso della macro, senza stravolgere troppo.
  • Re: Impostare automaticamente chiave primaria multicampo

    Probabilmente sono io che ho impostato il tutto in modo sbagliato...
    Ci sono 2 macro, la prima importa solo la tabella totale con i due campi Spedito e Evaso vuoti (circa 1 volta ogni 6 mesi), mentre la seconda macro importa la tabella con gli aggiornamenti ed esegue una query di accodamento e una di aggiornamento che vanno ad aggiornare la prima tabella (una volta alla settimana). Non so se questa sia la logica corretta per ottenere quello che voglio...ma è l'unico modo in cui sono riuscita a farlo...
  • Re: Impostare automaticamente chiave primaria multicampo

    ElisabettaPisano ha scritto:


    Probabilmente sono io che ho impostato il tutto in modo sbagliato...
    Ci sono 2 macro, la prima importa solo la tabella totale con i due campi Spedito e Evaso vuoti (circa 1 volta ogni 6 mesi), mentre la seconda macro importa la tabella con gli aggiornamenti ed esegue una query di accodamento e una di aggiornamento che vanno ad aggiornare la prima tabella (una volta alla settimana). Non so se questa sia la logica corretta per ottenere quello che voglio...ma è l'unico modo in cui sono riuscita a farlo...
    Mumble mumble... riesci a postare una videata del dettaglio di entrambe le macro, tipo quella che dovrebbe vedere qui sotto (devi usare la scheda Invia allegato che trovi in basso oppure devi caricare l'immagine in un server esterno e indicare qui il link) e le query di accodamento-aggiornamento in SQL? Ci capisco poco.

    Ti chiedo una cortesia: quando parli di importazione dal foglio excel non usare il termine "tabella totale" o "tabella con gli aggiornamenti" (anche se di fatto nel tuo gestionale non access possono essere in tabelle) ma solo di file (o foglio, tanto credo che sia un foglio unico nel file) xls (o xlsx o excel). Usa Tabella solo per i dati che sono già su access. Prima dell'importazione da macro 1 hai già la tabella di destinazione? come si chiama? (almeno usiamo nomi veri, a meno che non ci siano dati identificativi di qualcosa)
    (nel frattempo ho aggiunto qualche altra nota qui che magari può chiarirti le idee)
    Prima dell'importazione con la macro 1 quella che nel mio esempio ho chiamato [TuaTabella] è già presente nel db, già popolata dalle importazioni precedenti e quindi con la chiave primaria multicampo già impostata?
    Le query di cui alla macro 2 che tabelle utilizzano?
    Allegati:
    14797_b3b6c46ca9e4d8ce0f5dac95d6b0b349.jpg
    14797_b3b6c46ca9e4d8ce0f5dac95d6b0b349.jpg
  • Re: Impostare automaticamente chiave primaria multicampo

    ElisabettaPisano ha scritto:


    Probabilmente sono io che ho impostato il tutto in modo sbagliato...
    Ci sono 2 macro, la prima importa solo la tabella totale con i due campi Spedito e Evaso vuoti (circa 1 volta ogni 6 mesi), mentre la seconda macro importa la tabella con gli aggiornamenti ed esegue una query di accodamento e una di aggiornamento che vanno ad aggiornare la prima tabella (una volta alla settimana). Non so se questa sia la logica corretta per ottenere quello che voglio...ma è l'unico modo in cui sono riuscita a farlo...
    Scusa, ma hai sempre parlato di una macro. Adesso sono diventate due?

    In ogni caso, lo scopo della prima macro non è per niente chiaro.
    Scusa, ma a cosa può mai servire importare due campi vuoti???
    Secondo me, a niente. Ergo, la prima macro non serve a nulla, anzi ti complica la vita.
    Non è che è quella macro che crea la tabella nel database? Tel o chiedo perché fino ad ora non l'hai ancora specificato.

    Il concetto da seguire è molto più semplice:
    1. devo avere una tabella, già pronta e predisposta con la chiave primaria
    2. aggiorno e/o accodo le righe (seconda macro).

    Naturalmente, la tabella nel database NON devi mai eliminarla, per nessun motivo, altrimenti è ovvio che ogni volta devi ricreare la chiave primaria.
    Al massimo, se devi eliminare i dati esistenti la tabella va svuotata.

    Ogni altra implementazione, a mio avviso, non fa altro che complicarti la vita.

  • Re: Impostare automaticamente chiave primaria multicampo

    gibra ha scritto:


    ElisabettaPisano ha scritto:


    Probabilmente sono io che ho impostato il tutto in modo sbagliato...
    Ci sono 2 macro, la prima importa solo la tabella totale con i due campi Spedito e Evaso vuoti (circa 1 volta ogni 6 mesi), mentre la seconda macro importa la tabella con gli aggiornamenti ed esegue una query di accodamento e una di aggiornamento che vanno ad aggiornare la prima tabella (una volta alla settimana). Non so se questa sia la logica corretta per ottenere quello che voglio...ma è l'unico modo in cui sono riuscita a farlo...
    ...
    Il concetto da seguire è molto più semplice:
    1. devo avere una tabella, già pronta e predisposta con la chiave primaria
    2. aggiorno e/o accodo le righe (seconda macro).

    Naturalmente, la tabella nel database NON devi mai eliminarla, per nessun motivo, altrimenti è ovvio che ogni volta devi ricreare la chiave primaria.
    Al massimo, se devi eliminare i dati esistenti la tabella va svuotata.

    Ogni altra implementazione, a mio avviso, non fa altro che complicarti la vita.
    Ecco, proprio come volevo dirlo io.
    Alla fine volevo arrivare a questo ma cercavo di arrivarci pian piano e a capire perché già non è così (almeno la fase di non cancellazione della tabella di base)
  • Re: Impostare automaticamente chiave primaria multicampo

    Ok...penso di aver capito qual è il problema di quello che ho fatto.
    In effetti la prima macro mi serve per importare il foglio Excel che diventa la tabella del Database. Invece dovrei avere una tabella già predisposta con la chiave primaria e poi accodare e aggiornare..giusto?...
  • Re: Impostare automaticamente chiave primaria multicampo

    ElisabettaPisano ha scritto:


    Ok...penso di aver capito qual è il problema di quello che ho fatto.
    In effetti la prima macro mi serve per importare il foglio Excel che diventa la tabella del Database. Invece dovrei avere una tabella già predisposta con la chiave primaria e poi accodare e aggiornare..giusto?...
    Giusto! Una volta impostata la tabella (può andar bene quella che già hai, chiave multi campo compresa) imposti la macro perché cancelli tutti i record presenti (se, come sembra, non ti interessa avere gli articoli della "stagione precedente") e poi usare il trasferimento foglio di calcolo (per restare in ambiente macro). Per quel poco che so di macro, per eliminare tutti i record di una tabella puoi usare l'azione EseguiSQL mettendo nell'istruzione SQL
    DELETE FROM TuaTabella
    con relativo messaggio di avvertimento che da macro puoi solo "disattivare", non gestire, anteponendo un ImpostaAvvisi su No ed immediatamente dopo la riga con EseguiSQL reimpostarlo su Sì (se vuoi mantenere gli avvisi).
  • Re: Impostare automaticamente chiave primaria multicampo

    Ok!! Grazie a tutti per l'aiuto!
  • Re: Impostare automaticamente chiave primaria multicampo

    ElisabettaPisano ha scritto:


    Ok!! Grazie a tutti per l'aiuto!
    Prova a fare il tutto da vba, senza le macro. Non è difficile (questa parte, almeno) è l'occasione buona per avvicinarti a questo aspetto di access. Puoi gestire gli errori, cambiare idea (fino ad un certo punto) se sbagli l'importazione, fare importazioni "in serie" e via dicendo. Pensaci, potresti fare il salto di qualità e magari scopri che potresti fare cose che avevi in mente e che non erano fattibili con quello che sai adesso.
  • Re: Impostare automaticamente chiave primaria multicampo

    Philcattivocarattere ha scritto:


    Per quel poco che so di macro, per eliminare tutti i record di una tabella puoi usare l'azione EseguiSQL mettendo nell'istruzione SQL
    DELETE FROM TuaTabella
    con relativo messaggio di avvertimento che da macro puoi solo "disattivare", non gestire, anteponendo un ImpostaAvvisi su No ed immediatamente dopo la riga con EseguiSQL reimpostarlo su Sì (se vuoi mantenere gli avvisi).
    Si potrebbe anche costruire una "query di eliminazione" e sfruttare l'azione macro ApriQuery con il nome della query.
  • Re: Impostare automaticamente chiave primaria multicampo

    Grazie! Ci proverò oggi...vediamo cosa ne esce fuori....
Devi accedere o registrarti per scrivere nel forum
28 risposte