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-12T18:08:51+00:00

    ciao Sara,

    dimmi se ho capito bene...

    in pratica vorresti aggiornare/sovrascrivere il record qta della tabella piano terapia con il risultato del campo calcolato qtaNow della query scorte farmaci giornalieri riferita a quel determinato paziente a cui la cura è stata modificata?

    ed inserire nella stessa tabella la data del giorno in cui esegui la modifica della somministrazione del farmaco?

    Essendo il dato che ti interessa aggiornare "calcolato" con una query non ha senso riscriverlo in una tabella, sarebbe ridondante... (sempre dal mio punto di vista)

    altra domanda...(lo so che sei qui per avere risposte e non domande....;-))

    se il ragionamento sopra esposto è corretto non richieresti di perdere traccia della somministrazione precedentemente applicata?

    non dici nulla per quanto alla gestione delle scorte...viene eseguito il tutto manualmente?

    non converrebbe strutturare il tutto per tracciare correttamente le terapie somministrate ed eventualmente gestire in modo opportuno le modifiche apportate in fase successiva?

    Facci sapere.

    Sandro

    ps. un consiglio....nel nominare tabelle e campi delle tabelle sarebbe meglio evitare gli spazi, usa magari la tecnicaDelCammello : PerNominareTabelleeInomiDeiCampi ed eventualmente l'under score al posto degli spazi.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2014-11-12T15:53:51+00:00

    ok grazie!!

    io non vorrei inserire un campo calcolato in una tabella vorrei che quel campo tabella venisse aggiornato con il valore del campo qtà now che è un campo della query scorte farmaci giornalieri.

    cerco di spiegare con altre parole:

    con la query scorte farmaci giornalieri calcolo le date in cui ogni persona terminerà la scatola in uso del farmaco ( se so che oggi (che corrisponde al campo data inizio calcolo) ha 5 cpr (campo: qtà ingresso) e ne prende 1 al giorno tra 5 giorni finirà la scatola poi sapendo che la scatola in commercio contiene 28 compresse (campo qtà cfz presente su tbl lista medicinali relazione uno molti con tbl piano terapia) finirà la seconda scatola tra 28 giorni ecc....) e così fino a tutto il trimestre corrente. quasto mi genera un report in cui conosco in anticipo le scadenze di approviggionamento dei farmaci per ogni singolo ospite.

    Ora può succedere che la terapia venga cambiata: il medico dice da domani deve assumere due compresse al giorno no più una sola.

    Vado a modificare quel record cambiando la quantità di assunzione ma a quel punto vorrei che il campo data inizio calcolo venisse aggiornato a Date () (la modifica la sto effettuando oggi) e il campo qtà ingresso venisse aggiornato al valore del campo qtà now della query scorte farmaci giornalieri. questo campo calcolato della query mi dice ogni giorno quante compresse sono rimaste nella scatola per tutti gli ospiti e per tutti i medicinali.

    vorrei tanto scriverlo semplicemente però alla fine faccio una bella confusione!

    ecco il link

    https://onedrive.live.com/redir?resid=E9B3C8DD8BF0CFC9!119&authkey=!AP1sJI5x4wmwCnw&ithint=folder%2caccdb

    GRAZIE!!!!!

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2014-11-12T14:59:41+00:00

    ciao Sara,

    ho capito a sprazzi il tuo ragionamento per certo per mia colpa.

    Ti posso dire che scrivere un campo calcolato in una tabella va contro le regole di normalizzazione per quanto ai DB relazionali.

    Ci sono casi in cui la de-normalizzazione potrebbe essere una scelta azzeccata, da valutare se questo sia il caso in cui ti trovi tu...ma non credo...

    Se riuscissi a mettere a disposizione il db come la volta precedente indicando i nomi delle queries e della forms coinvolte e ri-spiegando magari con un esempio o più esempi qualora le casistiche fossero più di una ciò che vuoi ottenere per certo ti si può aiutare/indirizzare meglio.

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2014-11-12T14:19:17+00:00

    Ciao,

    so che è un tema ma vi riporto qui sotto quello che sto cercando di fare. perdono della lunghezza.

    la sequenza delle operazioni (nella mia testa) è la seguente:

    se modifico un campo (qtà) di una tabella (piano terapia) e lo faccio da una maschera basata su questa tabella piano terapia (ptfrm) vorrei eseguire una query di aggiornamento sull'evento Su modifica di quel campo.

    i dati che voglio aggiornare sono su due campi della tabella piano terapia e sono qtà ingresso e data inizio calcolo.

    Vorrei aggiornare questi due campi in questo modo:

    il campo data inizio calcolo dovrebbe essere aggiornato alla data di oggi

    il campo qtà ingresso dovrebbe essere aggiornato con un campo calcolato che si chiama qtà now presente in una query di raggruppamento chiamata scorte farmaci giornalieri.

    questa query ha la funzione di calcolare la data in cui ogni persona finirà la scatola del farmaco in uso.

    però raggruppa i dati in questo modo: una persona può assumere lo stesso farmaco più volte al giorno. 

    nella tabella piano terapia lo stesso farmaco assume un suo univoco IDpiano terapia per ogni singolo orario in cui viene somministrato

    (es. idpianoterapia=1; sig rossi lasix 1 cpr ore 8; idpianoterapia=2: sig rossi lasix 1 cpr ore 20:00)

    Sia l'idpianoterapia1 che l'idpianoterapia2 hanno il campo qtà ingresso e data inizio calcolo ma io immetto questi due valori solo su uno dei due record.

    la query scorte farmaci giornalieri raggruppa i dati di piano terapia prendendo: l'UltimoIDpianoterapia e i campi qtà ingresso e datainizio calcolo che non siano vuoti. ha poi una serie di campi calcolati tra cui il campo qtà now che mi dice oggi quante compresse di questo faramcao sono ancora disponibili per questo ospite.

    Con la tabella piano terapia ho creato un leftjoin sul campo ospite.

    provando ad eseguire la query di accodamento ( che ha tra i criteri la selezione del record di piano terapia che sto modificando tramite una mschera)

    mi restituisce il record corretto ma ripetuto per 4 volte e il campo qtà ingresso e data inizio calcolo non mostrano i valori a cui vorrei aggiornarli date() e qtànow ma i valori non modificati presenti sulla tabella.

    grazie

    sara

    La risposta è stata utile?

    0 commenti Nessun commento