Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Record eliminato su maschera dopo DELETE e INSERT

67 views
Skip to first unread message

caezan

unread,
May 27, 2022, 4:06:15 AM5/27/22
to
Buongiorno a tutti, ho un problema di questo tipo.
Per semplicità di manutenzione dell'applicativo Access, ho pensato di agganciare una tabella ad una maschera (non continua) e di aggiornare i campi della maschera collegati alla tabella cancellando il record attuale con DELETE * e aggiungendo il record voluto con una INSERT (entrambi i comandi agiscono sulla tabella tramite il comando VBA RunSQL).
La sequenza funziona nel seguente modo:
0) la form punta sull'unico record attualmente presente nella tabella;
1) si preme il pulsante sulla form per avviare procedura;
2) lancia delete * from tabella;
3) lancia insert into tabella select (1 solo record);
4) infine requery / refresh della form , mi aspetto che venga visualizzato l'unico record appena inserito.
Il problema è che nel punto 4) esce l'errore "Errore di run-time '3167' Record eliminato".
Ovviamente Access ha ragione, ma sono un po' arrugginito in materia Access:
devo scegliere eventi diversi per le varie operazioni? oppure forzare il salvataggio con Me.Dirty? oppure forzare il passaggio al nuovo record inserito, ecc. ?
Grazie in anticipo se mi potete dare una dritta.

caezan

unread,
May 27, 2022, 9:38:12 AM5/27/22
to
> ... agganciare una tabella ad una maschera e di aggiornare i campi collegati cancellando il record attuale con DELETE * e aggiungendo il record con INSERT ...
> 2) lancia delete * from tabella;
> 3) lancia insert into tabella select (1 solo record);
> 4) infine requery / refresh della form , mi aspetto che venga visualizzato l'unico record appena inserito.
> Il problema è che nel punto 4) esce l'errore "Errore di run-time '3167' Record eliminato".

Grazie lo stesso ho risolto facendo uso della buona vecchia chiave del record:
inserire il record con una chiave
aprire la Form puntando alla chiave
cancellare tutti i record di tabella diversi dal valore chiave.

DoCmd.RunSQL _
"INSERT INTO Ordine" _
& " SELECT * FROM qOrdineRead" _
& " WHERE ID='" & sChiave & "'"

DoCmd.OpenForm "Form", , , "ID='" & sChiave & "'"
DoCmd.RunSQL "DELETE * FROM Ordine WHERE ID<>'" & sChiave & "'"

Forse la soluzione è naive ma permette di risparmiare molto tempo rispetto ad alimentare una maschera non associata con assegnazioni campo per campo.
0 new messages