problemi con query di aggiornamento: per l'operazione è necessaria una query aggiornabile

Anonimo
2014-11-12T11:12:26+00:00

salve a tutti,

ho un problema con una query di aggiornamento

Avevo scritto un tema per spiegare la query ma intanto forse è meglio partire dal messaggio di errore che mi restituisce

se per prova faccio click su esegui query mi dice:

per l'operazione è necessaria una query aggiornabile

Inoltre la query dovrebbe visualizzare un solo record invece ne visualizza due in alcuni casi anche più di due (stesso id stessi campi ripetuti).

grazie a tutti come sempre!

sara

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2014-11-12T22:42:19+00:00

ciao Sara,

provo a pubblicarti una soluzione.

la query in cui effetui i calcoli deve essere messa punto ci sono degli errori...

una volta aperta la form ptfrm, se clicci sul command button C vedrai il valore qta modificarsi in funzione dei calcoli nella qry.

fai qualche prova con records 790-791 ad esempio.

mi sono limitato a sovrascrivere il campo qta con questo codice, rispondendo a quanto richiedi.

Dim rst As DAO.Recordset

Dim qdf As DAO.QueryDef

Set qdf = DBEngine(0)(0).QueryDefs("scortefarmacigiornalieri2")

qdf.Parameters(0) = Me.IDpianoterapia

Set rst = qdf.OpenRecordset(dbOpenDynaset)

Me.qtà = rst.Fields("qtanow")

Me.dataCalcoloS = Date

Set rst = Nothing

ciao un saluto.

link: http://1drv.ms/1zNx1Tt

La risposta è stata utile?

0 commenti Nessun commento

15 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2014-11-15T06:16:41+00:00

    ok, tutto chiaro!

    ho aggiunto la riga.

    grazie ancora !!!!!

    buona giornata

    Sara

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2014-11-13T22:07:16+00:00

    ciao Sara,

    la query scorte farmaci giornalieri legge il criterio [forms]![ptfrm]![idpianoterapia] che corrisponde a quel :

    qdf.Parameters(0) = me.IDpianoTerapia

    con quale scopo ?

    me.IDpianoTerapia corrisponde esattamente al record in cui clicchi sul commandbutton e passa alla query quel parametro : di conseguenze cliccando sul record 30 lavori e modifchi campi del recordset 30 e non 31...ora...

    modificando i parametri ed indicandone un altro quel:

    qdf.Parameters(1) = Me.medicinale 

    è possibile (non l'ho provato...) che il recordset risultato della query di selezione non contenga un solo records ma più records...da qui il fatto che se apri la query di selezioni vedi due records e non uno solo...

    l'univocità del record ottenuto è per ovvie ragioni il risultato del passaggio di IDpianoTerapia che contraddistingue in modo univoco quel record ( il 30 nel nostro caso)

    in sostanza....per come abbiamo impostato il tutto, se clicchi un un record vai a scrivere i campi calcolati nella tabella di quel record se invece ti rendi conti che l'aggiornametno lo dovresti/vorresti eseguire su un altro record qualcosa non va...

    buona notte...

    ps..."Copia di scorte farmaci giornalieri"---> contiente qualche spazio di troppo..... ;-)

    sotto al codice sotto a Set rst = Nothing inserisci una nuova riga con  Set qdf= Nothing...

    gli oggetti si dovrebbero distruggere in autonomia...ma aiutiamo Access valà....

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2014-11-13T20:54:59+00:00

    Ciao Sandro,

    questo codice mi ha aiutato molto perché per fare quest'operazione avevo creato una query di accodamento tabella e poi una query di aggiornamento tabella e poi una query di pulizia tabella... insomma una cosa molto lunga....

    ora sull'evento modifica del campo quantità ho inserito il tuo codice:

    Private Sub qtà_Change()

    Dim rst As DAO.Recordset

     Dim qdf As DAO.QueryDef

     Dim crit As String

     Set qdf = DBEngine(0)(0).QueryDefs("Copia di scorte farmaci giornalieri")

     qdf.Parameters(0) = Me.ospite

     qdf.Parameters(1) = Me.medicinale

     Set rst = qdf.OpenRecordset(dbOpenDynaset)

     Me.qtà_ingresso = rst.Fields("qtanow")

     Me.data_inizio_calcolo = Date

    Set rst = Nothing

    End Sub

    ovviamente con questo codice , essendo io posizionata sul record 30 , ottengo l'inserimento/aggiornamento dei due campi qtàingresso e datainiziocalcolo del record 30.

    ma se invece io volessi aggiornare i due campi del record 31 mentre sono posizionata sul record 30, come potrei fare?

    la query scorte farmaci giornalieri se io la apro mentre sono posizionata sul record 30 , mi visualizza invece il record 31  e io voglio che visualizzi quel record è un risultato corretto  su quel record 31 vorrei apporre le modifiche nonostante sia posizionata sul record 30... Comunque sono contentissima così!

    grazie

    buona serata anche a te

    Sara

    La risposta è stata utile?

    0 commenti Nessun commento