Maschera per inserimento dati temporaneo

di il
12 risposte

Maschera per inserimento dati temporaneo

Buongiorno,
avrei un'ultimo quesito da porre. Sto sviluppando un database e mi son ritrovata in questa situazione: ho una maschera per inserire nuovi dati in vari campi di varie tabelle, ma access salva in automatico ogni aggiunta che faccio.
Mi spiego meglio: ho un totale di 6 campi da inserire nella tabella, e quello che vorrei ottenere sarebbe la possibilità di inserire tutti i dati, controllarli per poi salvare il tutto tramite pulsante. Ora come ora, invece, appena inserisco un dato in un campo e mi sposto al campo successivo, il precedente viene salvato in automatico.
Avevo già pensato di usare un'update query legata ad una maschera i cui campi sono "indipendenti" (si dice così?), ma volevo sapere se è possibile in altro modo.

12 Risposte

  • Re: Maschera per inserimento dati temporaneo

    uba ha scritto:


    ...ho un totale di 6 campi da inserire nella tabella, e quello che vorrei ottenere sarebbe la possibilità di inserire tutti i dati, controllarli per poi salvare il tutto tramite pulsante. Ora come ora, invece, appena inserisco un dato in un campo e mi sposto al campo successivo, il precedente viene salvato in automatico.
    Piano... qui c'è qualcosa che non quadra. La maschera è associata, questo è evidente, ma a cosa? A varie tabelle? ad una query che mette in relazione varie tabelle? ad una tabella sola?
    Access memorizza i dati quando cambi record, non quando ti sposti da un controllo (sei in una maschera, ci sono controlli, non campi) ad un altro (a meno che non si tratti dell'ultimo controllo ed in automatico sia impostato per passare la primo del nuovo record ma ecco che il salvataggio avviene perché hai cambiato record, con controllo)
    Ci sono vari sistemi per ottenere quello che vuoi, però prima credo sia importante capire bene la situazione attuale perché qualcosa non torna in questo "salvataggio automatico"
  • Re: Maschera per inserimento dati temporaneo

    Se puoi fare un esempio concreto ci arriviamo meglio...

    Da quello che ho capito...forse ci sono più soluzioni.
    1) L'hai già intuita. Una maschera che poggia su una TabellaAppoggio avente gli stessi campi della TabellaVera. Solo quando sei sicura che tutti i dati devono andare a finire in TabellaVera, un clic di pulsante esegue una "query di accodamento" da TabellaAppoggio in TabellaVera e poi una "query eliminazione" che elimina i record da TabellaAppoggio (se no non ti ritrovi più la prossima volta).
    2) Senza TabellaAppoggio, la MascheraInserimento non deve poggiare su alcuna tabella. Dopo aver compilato tutti i campi, un clic di pulsante deve "assegnare" qualcosa del genere
    Forms!MascheraVera!NomeCampo = Forms!MascheraInserimento!NomeCampo
    tante volte quanti sono tutti i campi
  • Re: Maschera per inserimento dati temporaneo

    Ok Ok allora. La maschera è associata a tabelle. Nella fattispecie, i controlli della maschera sono: Nome procedura, che è associato al campo nome_procedura della tabella procedure; in questo caso nella maschera inserirò sempre e solo nuove procedure, quindi ho impostato che questo controllo sia sempre associato ad un nuovo record del campo nome_procedura; Data di presa, che è associato al campo data_presa della tabella procedure, sempre sul nuovo record; Cliente, associato al campo nome_cliente della tabella clienti; quest'ultimo però viene scelto tramite un elenco a scorrimento che permette anche l'inserimento di un record nuovo.
  • Re: Maschera per inserimento dati temporaneo

    Se descrivessi l'intero scenario tabelle/campi/relazioni (con i nomi propri) avremmo un quadro più completo.
    Puoi dare i nomi propri anche a tutte le maschere?
    La tabella Procedure ha un campo FK Cliente? Se sì perchè non è IDCliente che sarebbe meglio?
  • Re: Maschera per inserimento dati temporaneo

    Ok descriverò l'intero database.
    Le tabelle sono: Procedure; Ha i campi Nome_Procedura come chiave primaria, Preso_Data, Scadenza_Data, ID_Cliente come chiave esterna. Clienti; ha i campi ID_Cliente come primaria, Nome_Cliente, Nome_Studio come chiave esterna. Studio; per ora ha solo Nome_Studio come chiave primaria. Numero Scatole; ha ID come chiave primaria, Numero_Scatola, Nome_Procedura come chiave esterna. Le relazioni sono: un cliente appartiene ad uno studio, ma uno studio può avere più clienti; una procedura appartiene ad un cliente, ma un cliente può avere più procedure; una procedura è presente in diverse scatole, ma una scatola può avere solo una procedura ( chiedo scusa ma non conosco il linguaggio adatto per descrivere le relazioni).
    La maschera in questione è quindi appoggiata alle tabelle Procedure e Clienti. Quello che vorrei poter arrivare a fare è compilare la maschera per inserire una nuova procedura, la quale (procedura) verrà associata ad un cliente che o è già presente nel database e selezionabile tramite scorrimento, o si potrà aggiungere direttamente come un nuovo cliente ( e questo son riuscita a farlo). Solo che vorrei che in fase di compilazione della maschera non venisse salvato nessun dato, fino a quando non verrà premuto un pulsante di salvataggio.
  • Re: Maschera per inserimento dati temporaneo

    uba ha scritto:


    Le tabelle sono: Procedure; Ha i campi Nome_Procedura come chiave primaria, Preso_Data, Scadenza_Data, ID_Cliente come chiave esterna. Clienti; ha i campi ID_Cliente come primaria, Nome_Cliente, Nome_Studio come chiave esterna. Studio; per ora ha solo Nome_Studio come chiave primaria. Numero Scatole; ha ID come chiave primaria, Numero_Scatola, Nome_Procedura come chiave esterna. Le relazioni sono: un cliente appartiene ad uno studio, ma uno studio può avere più clienti; una procedura appartiene ad un cliente, ma un cliente può avere più procedure; una procedura è presente in diverse scatole, ma una scatola può avere solo una procedura ( chiedo scusa ma non conosco il linguaggio adatto per descrivere le relazioni).
    Va bene la descrizione dei campi di ogni tabella. Se vuoi essere più tecnica/sintetica nella descrizione relazioni dovresti dire:
    Studi uno-a-molti Clienti
    Clienti uno-a-molti Procedure
    Procedure uno-a-molti Scatole

    uba ha scritto:


    La maschera in questione è quindi appoggiata alle tabelle Procedure e Clienti.
    Detto così che vuol dire (dopo aver illustrato lo scenario tabelle di prima)?
    Se Clienti è uno-a-molti Procedure si dovrebbe parlare di maschera/sottomaschera Clienti/Procedure.
    Dalle descrizioni che hai dato nei post precedenti invece mi pare di capire che tu hai la MascheraProcedure (con il campo IDCliente alla fine).
    Su questa MascheraProcedure vorresti inserire un record da validare soltanto quando si è sicuri e grazie al clic di un pulsante su un'altra MascheraAppoggio.
    Spero di aver interpretato correttamente. Vado avanti ugualmente a ruota libera.
    Io mi giocherei la soluzione 2) dove MascheraAppoggio avrà gli stessi NomeCampo di MascheraProcedure, ma con la proprietà "Origine record" vuota.
    Il clic del pulsante su MascheraAppoggio dovrà eseguire il seguente
    Private Sub NomePulsante_Click()
    Forms!MascheraProcedure!PresoData = Me!PresoData
    Forms!MascheraProcedure!ScadenzaData = Me!ScadenzaData
    Forms!MascheraProcedure!IDCliente= Me!IDCliente
    DoCmd.Close acForm "MascheraAppoggio"
    Forms!MascheraProcedure.SetFocus
    DoCmd.RunCommand acCmdSaveRecord
    End Sub
    
    Forse ho abbondato qualche istruzione in più, ma in sostanza quello è ciò che deve accadere.

    Spero di aver azzeccato il tuo intento.
  • Re: Maschera per inserimento dati temporaneo

    Mi rendo conto sia più complesso capire cosa ho intenzione di fare piuttosto che risolvere il problema in se, chiedo scusa. In ogni caso, la maschera in questione dovrebbe servire solo per l'aggiunta di nuove procedure; ora, poichè nella tabella procedure è presente il campo ID_Cliente, la mia idea era di dare la possibilità di selezionare il cliente da associare alla procedura scegliendolo da un elenco a scorrimento o, in caso non sia presente nell'elenco, aggiungerlo come nuovo cliente direttamente dalla maschera in questione. Per questo avevo pensato di realizzare una sola maschera associata sia alla tabella procedure che a quella clienti. Comunque ho capito l'idea che tu mi hai proposto, credo dovrebbe essere esattamente quello che cercavo. Operativamente quindi, nel momento in cui dovrò inserire una nuova procedura dovrò aprire la MascheraAppoggio giusto?
  • Re: Maschera per inserimento dati temporaneo

    uba ha scritto:


    In ogni caso, la maschera in questione dovrebbe servire solo per l'aggiunta di nuove procedure
    Mi stai dicendo che non si tratta di UN SOLO record, ma di più record associati a un Cliente per poi accodare tutto in tabella Procedure.
    Intuisco dove vuoi arrivare, ma si tratta di implementare una vero e proprio gioco di più maschere per l'input:
    1. un Cliente
    2. molte Procedure
    forse ti servono 2 maschere di appoggio.
    Devi organizzare una serie di passaggi di input come se fosse una procedura guidata. Forse adesso ti serve davvero la tabella di appoggio dove parcheggiare i valori temporanei (per es. IDCliente) e una adeguata query di accodamento.
    È un po' laborioso, ma si può fare. Ho costruito anch'io qualcosa di simile. Devi riuscire a cogliere i dati che ti servono passaggio dopo passaggio.

    Aspetta. Rileggendo la seconda parte dell'ultimo tuo post non è chiaro se vuoi
    UN CLIENTE e MOLTE PROCEDURE
    UN CLIENTE e UNA PROCEDURA
    Puoi chiarire?
  • Re: Maschera per inserimento dati temporaneo

    La maschera serve per aggiungere UNA PROCEDURA. Tale procedura verrà associata ad UN CLIENTE tramite la maschera in questione.
  • Re: Maschera per inserimento dati temporaneo

    Ribadisco la mia soluzione 2) e quello che ho detto nel post 9/3/2016 11:50.
  • Re: Maschera per inserimento dati temporaneo

    Perfetto, domani in ufficio proverò a mettere il tutto in pratica. Ti chiedo solo due ultime delucidazioni: quando testerò la maschera dovrò inserire i dati nella MascheraAppoggio giusto? Oltretutto, poichè la MascheraAppoggio avrà "Origine Record" vuota, non potrò utilizzare una casella combinata per ID_Cliente affinchè sia possibile selezionare il cliente tramite un elenco a scorrimento dei Nomi_Cliente giusto?
  • Re: Maschera per inserimento dati temporaneo

    Benchè MascheraAppoggio non si appoggia su nessuna tabella, quindi ha "Origine record" vuota, questo non vuol dire che non puoi mettere un campo IDCliente con casella combinata che guarda i valori da Clienti. Puoi farlo. Devi però ovviamente ricostruirla imitando tutte le proprietà della cugina casella combinata che si trova in MascheraProcedure.
Devi accedere o registrarti per scrivere nel forum
12 risposte