Risultato query in TextBox

di il
3 risposte

Risultato query in TextBox

Ciao a tutti, mi rendo conto che il titolo del post non è esaustivo ed esporrò meglio il mio quesito.
Sto costruendo un database in access. Tra le varie, ho l'esigenza di visualizzare i risultati di una query in una maschera. Fin qui nessun problema.
Ho costruito una query e una maschera. Alla maschera ho assegnato la corretta Origine record e il corretto tipo recordset (dynaset). Nessun problema, riesco a collegare le varie textbox, gruppo di opzioni ecc ecc all'origine dati corretta.
In questo modo però, tutti i dati visualizzati nei vari controlli sono immediatamente modificabili. Se cancello un solo carattere in una texbox, la modifica avviene istantaneamente in tabella. Se cambio una opzione nel gruppo opzioni, questa viene subito "salvata" in tabella.
La mia idea però voleva essere diversa: visualizzare il risultato della query, scrivere nelle textbox e fare altre modifiche, senza però che avvenga una modifica istantantanea in tabella, infine attraverso un pulsante far partire una query di accodamento/aggiornamento.
In questo modo, le modifiche saranno "salvate" in tabella solamente all'esecuzione della query di aggiornamento/accodamento.
Tra i vari tentativi ho provato anche DlookUp, che mi restituisce nelle texbox valori immodificabili, quindi non risolvo nulla.

Qualcuno di voi ha voglia di aiutarmi?
Naturalmente se sono stato avido di info posterò il necessario.
Nel frattempo grazie a tutti coloro che vorranno perdere del tempo per me.
Pierantonio


Ho parzialmente trovato una soluzione. Il tipo di recordset è ora impostato in dynaset (aggiornamento), ecco che le modifiche avvengono solo alla chiusura della maschera. Ok, mi sta bene! Ma per evitare di "salvare"?? Se volessi chiudere la maschera senza salvare in tabella le modifiche fatte?
Ho fatto un pulsante che esegue Me.Requery, e "salva" i dati correttamente... Mi serve solo il comando contrario, che esce dalla maschera e non salva nulla...

3 Risposte

  • Re: Risultato query in TextBox

    Sei sicuro che quello che vuoi fare sia la cosa giusta...?

    Lo scenario che descrivi è VERO, ma solo se hai fatto tutto in modo standard senza gestire, come invece si dovrebbe fare, le modifiche...!

    La maschera associata ai dati, quello che hai fatto ora, è fatta apposta per INTERCETTARE LE MODIFICHE...
    Se attivi gli eventi di Modifica, tipo BEFOREINSERT o BEFOREUPDATE, ti accorgerai che avvengono prima della Modifica e Prima dell'inserimento...!
    Se leggi la guida espongono un Paramertro chiamato CANCEL che appunto consente l'annullamento della Modifica/Inserimento.

    Quindi puoi chiedere all'utente di confermare la modifica/uinserimento e solo in quel caso farla eseguire...!

    Quello che vuoi fare tu, si chiama gestione in Maschera NON ASSOCIATA, e ti assicuro che per pensarci, serve una preparazione non ottima ma sicuramente discreta con il VBA...!

    Credo tu abbia poca dimestichezza con Access e prima di partire per strade anche funzionali, ti proporrei almeno di capire se, quelle che Access di suo consente, non siano veramente sufficienti.
  • Re: Risultato query in TextBox

    p!er ha scritto:


    La mia idea però voleva essere diversa: visualizzare il risultato della query, scrivere nelle textbox e fare altre modifiche, senza però che avvenga una modifica istantantanea in tabella
    Dopo tutto quello che hai raccontato prima, a me sembra ci sia qualcosa di contraddittorio...poi

    p!er ha scritto:


    infine attraverso un pulsante far partire una query di accodamento/aggiornamento
    ...a me non sono chiare varie cose.
    Potresti raccontare di cosa parlano i tuoi dati? Da quali tabelle provengono? Quale scopo ti prefiggi?
  • Re: Risultato query in TextBox

    Ciao e grazie a tutti delle risposte.
    Ho risolto, o meglio, ho raggiunto lo scopo che mi prefiggevo con poche righe di codice trovate in rete ed addattate.
    Ho creato due pulsanti, uno esegue la query di aggiornamento, l'altro esegue questo codice:
    If MsgBox("Stai per uscire, SALVO LE ULTIME MODIFICHE?", vbYesNo) = vbNo Then
    Me.Undo
    End If
    DoCmd.Close
    
    Forse non ho spiegato bene il problema che mi prefiggevo di risolvere, ma non saprei spiegarlo meglio.
    Per fortuna ho trovato la soluzione che mi serviva, e quindi la condivido.
    Grazie e ciao
Devi accedere o registrarti per scrivere nel forum
3 risposte