Una famiglia di sistemi di gestione per database relazionali di Microsoft progettati per semplificare l'uso.
Ciao Luca,
potresti provare a commentare le istruzioni
DoCmd.OpenReport ....
e
Docmd.Close acReport.....
penso che non servono.
Mimmo
Questo browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Buongiorno a tutti
ho un problema con il ciclo Do While. Ho impostato il codice vba, adattato sulla falsa riga del codice che mi ha aiutato ad impostare nello stesso database il carissimo Amico Mimmo esperto della community, è il seguente:
Private Sub EsportaPDF_Click()
Dim Rst1 As Recordset
Set Rst1 = CurrentDb.OpenRecordset("Select * From QRY_Riepilogo_Stampa_Report_Anagrafica Where Id_Anagrafica = " & id_anagrafica)
' If Rst1.EOF Then
' MsgBox ("RecordSet aperto")
' GoTo Chiudi
' End If
Rst1.MoveFirst
DoCmd.SetWarnings False
Do While Not Rst1.EOF
DoCmd.RunSQL ("Update Quota_incentivi Set Stampa_Report_Anagrafica = -1 Where Anagrafica_id = " & Rst1("id_anagrafica"))
Rst1.MoveNext
Loop
DoCmd.SetWarnings True
'Chiudi:
Set Rst1 = Nothing
' Me.Requery
DoCmd.OpenReport "Riepilogo_progetti_dipendente", acViewPreview, , , acHidden
DoCmd.OutputTo acOutputReport, "Riepilogo_progetti_dipendente", acFormatPDF, "C:_schede\schede_liquidate_dipendente\" & Me.Cognome & "_" & Me.Codice_Fiscale & "_" & Format(Me.Data_Stampa, "yyyy-mm-dd") & ".pdf"
DoCmd.Close acReport, "Riepilogo_progetti_dipendente"
MsgBox "L'esportazione è stata completata con successo. Puoi trovare il file salvato nel seguente percorso: C:_schede\schede_liquidate_dipendente", vbInformation
End Sub
Chiedo il Vostro aiuto poichè il codice non viene eseguito in maniera corretta. In pratica l'Update viene eseguito sulla Tabella "Quota_Incentivi" su tutti i progetti associati all' Id_Anagrafica e non solo sugli ID_Anagrafica contenuti nel Recorset.
Ho provato più volte a modificare il codice ma il risultato è sempre lo stesso.
Non riesco a capire dove ho sbagliato nel ciclo Do While per questo chiedo il Vostro gradito e competente aiuto.
Grazie
Luca
Una famiglia di sistemi di gestione per database relazionali di Microsoft progettati per semplificare l'uso.
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.
Risposta accettata dall'autore della domanda
Ciao Luca,
potresti provare a commentare le istruzioni
DoCmd.OpenReport ....
e
Docmd.Close acReport.....
penso che non servono.
Mimmo
Risposta accettata dall'autore della domanda
Ciao e scusa il ritardo,
forse, se nella query estrai anche Id_Quota_Incentivi, puoi utilizzare questo campo per gli aggiornamenti.
Mimmo
Risposta accettata dall'autore della domanda
Ok.
Quindi i records da aggiornare sono quelli restituiti dalla query "QRY_Riepilogo_Stampa_Report_Anagrafica" e mi sembra di capire che il criterio che invece utilizzi nella Update Where Anagrafica_id = " & Rst1("id_anagrafica") non è sufficiente ad identificare un preciso record.
Hai nella query uno o più campi che identificano il record nella Quota_Incentivi da aggiornare in modo univoco e puntuale?
Nella condizione della Update devi utilizzare il/i campo/i comune/i tra la query di origine e la tabella da aggiornare.
Mimmo
Risposta accettata dall'autore della domanda
Ciao Luca,
ha una sola condizione che estrae tutti i records con l'Id_Anagrafica. Quindi il loop tratta tutti i records presenti nel recordset Rst1.
docmd.setwarnings = false
DoCmd.RunSQL ("Update Quota_incentivi Set Stampa_Report_Anagrafica = -1 Where Anagrafica_id = " & Me.id_anagrafica)
docmd.setwarnings = true
Come vedi utilizzo nella condizione Me.Id_Anagrafica che è il corrente in maschera ( visto che sei nella Sub EsportaPDF_Click ).
Facci sapere
Mimmo
Ciao, mi chiamo Ajibola e sono entusiasta di aiutarti oggi!
Per risolvere il problema, è necessario modificare l'istruzione SQL update per includere una condizione che filtri gli aggiornamenti in base al valore 'id_anagrafica' corrente dal recordset. Ecco come puoi modificare il tuo codice per raggiungere questo obiettivo:
'''VBA Sub privato EsportaPDF_Click()
Dim rst1 come recordset Set Rst1 = CurrentDb.OpenRecordset("Select * From QRY_Riepilogo_Stampa_Report_Anagrafica Where Id_Anagrafica = " & id_anagrafica)
Se Rst1.EOF allora MsgBox ("Open RecordSet") Esci Sub Fine Se
DoCmd.SetWarnings False
Esegui il problema non rst1.EOF Corrente attenuataIdAnagrafica As Long currentIdAnagrafica = Rst1("id_anagrafica")
DoCmd.RunSQL "UPDATE Quota_incentivi SET Stampa_Report_Anagrafica = -1 WHERE Anagrafica_id = " & currentIdAnagrafica
Rst1.MoveNext Ciclo
DoCmd.SetWarnings True
set rst1 = niente Me.Requery
DoCmd.OpenReport "Riepilogo_progetti_dipendente", acViewPreview, , , acHidden DoCmd.OutputTo acOutputReport, "Riepilogo_progetti_dipendente", acFormatPDF, "C:\schede\schede_liquidate_dipendente" & Me.Cognome & "_" & Me.Codice_Fiscale & "_" & Format(Me.Data_Stampa, "aa-mm-gg") & ".pdf" DoCmd.Chiudi acReport, "Riepilogo_progetti_dipendente"
MsgBox "L'esportazione è stata completata correttamente. È possibile trovare il file salvato nel seguente percorso: C:\schede\schede_liquidate_dipendente", vbInformation
Fine sub
Ho aggiunto una variabile 'currentIdAnagrafica' per memorizzare il valore 'id\_anagrafica' dal record corrente nel ciclo. Quindi, l'istruzione SQL di aggiornamento viene modificata per utilizzare questo valore nella clausola 'WHERE' per garantire che vengano aggiornati solo i record con il corretto 'Anagrafica\_id'. Questo dovrebbe risolvere il problema che stavi affrontando con gli aggiornamenti applicati a tutti i progetti associati al "Id\_Anagrafica".
Se hai ulteriori domande o hai bisogno di ulteriore assistenza, non esitare a chiedere. Sono qui per aiutarti!
Se la risposta è stata utile, non dimenticare di votare o accettarla come risposta, Grazie
Cordiali saluti
*Questa risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o espressioni strane.*