Buonasera
scrivo la routine:
<
Private Sub Comando55_Click()
Dim Db As DAO.Database
Dim qd As QueryDef
Dim z As String
Dim stringaquery As String
Dim nomequery As String
nomequery = "I0000_query_report"
z = Me.Rda_numero
Set Db = CurrentDb()
Db.QueryDefs.Delete nomequery
stringaquery = "SELECT I0000_Rda.Rda_numero, I0000_Rda.Data_rda, C0000_Societa.Nome_societa, A0000_B_Park.Nome, A0100_Lotti.Nome1, I2000_Ente_richiedente.Suffisso, I2000_Ente_richiedente.Ente, L0000_People.Nominativo, I3000_Spese_a_carico.Pagatore, I0000_Rda.Altro_rda, I0000_Rda.D_q1," & _
"I0000_Rda.Testo_q1, I0000_Rda.D_q2, I0000_Rda.Testo_q2, I0000_Rda.D_q3, I0000_Rda.Testo_q3, I0000_Rda.D_q4, I0000_Rda.Testo_q4, I0000_Rda.Motivo_rda, B0010_FORNITORE.Nome_fornitore, I0000_Rda.Motivo_fornitore, I0000_Rda.Nr_1, I0000_Rda.Allegato_1, I0000_Rda.Nr_2, " & _
"I0000_Rda.Allegato_2, I0000_Rda.Data_consegna_lavori, I0000_Rda.Collegamento_RDA FROM I0000_Rda, A0000_B_Park, A0100_Lotti, I2000_Ente_richiedente, L0000_People, I3000_Spese_a_carico, B0010_FORNITORE, C0000_Societa WHERE (((I0000_Rda.Rda_numero)= '" & z & "') AND " & _
"((C0000_Societa.ID_Societa)=[I0000_Rda].[Societa]) AND ((A0000_B_Park.ID_BPark)=[I0000_Rda].[ID_Bparks]) AND ((A0100_Lotti.ID_Lotti)=[I0000_Rda].[Lotti]) AND ((I2000_Ente_richiedente.ID_ente_richiedente)=[I0000_Rda].[ID_Ente_Richiedente]) AND " & _
"((L0000_People.ID)=[I0000_Rda].[Richiedente]) AND ((I3000_Spese_a_carico.ID_Spese_a_carico)=[I0000_Rda].[Scelta_fattur]) AND ((B0010_FORNITORE.ID_Fornitore)=[I0000_Rda].[Fornitore_rda]));"
Set qd = Db.CreateQueryDef(nomequery, stringaquery)
Me.Requery
DoCmd.OpenReport "I0000_query_report", acViewReport, "", "", acNormal
DoCmd.RepaintObject acReport, "I0000_query_report"
Db.QueryDefs.Delete nomequery
stringaquery = "SELECT I0000_Rda.Rda_numero, I0000_Rda.Data_rda, C0000_Societa.Nome_societa, A0000_B_Park.Nome, A0100_Lotti.Nome1, I2000_Ente_richiedente.Suffisso, I2000_Ente_richiedente.Ente, L0000_People.Nominativo, I3000_Spese_a_carico.Pagatore, I0000_Rda.Altro_rda, I0000_Rda.D_q1," & _
"I0000_Rda.Testo_q1, I0000_Rda.D_q2, I0000_Rda.Testo_q2, I0000_Rda.D_q3, I0000_Rda.Testo_q3, I0000_Rda.D_q4, I0000_Rda.Testo_q4, I0000_Rda.Motivo_rda, B0010_FORNITORE.Nome_fornitore, I0000_Rda.Motivo_fornitore, I0000_Rda.Nr_1, I0000_Rda.Allegato_1, I0000_Rda.Nr_2, " & _
"I0000_Rda.Allegato_2, I0000_Rda.Data_consegna_lavori, I0000_Rda.Collegamento_RDA FROM I0000_Rda, A0000_B_Park, A0100_Lotti, I2000_Ente_richiedente, L0000_People, I3000_Spese_a_carico, B0010_FORNITORE, C0000_Societa WHERE " & _
"(((C0000_Societa.ID_Societa)=[I0000_Rda].[Societa]) AND ((A0000_B_Park.ID_BPark)=[I0000_Rda].[ID_Bparks]) AND ((A0100_Lotti.ID_Lotti)=[I0000_Rda].[Lotti]) AND ((I2000_Ente_richiedente.ID_ente_richiedente)=[I0000_Rda].[ID_Ente_Richiedente]) AND " & _
"((L0000_People.ID)=[I0000_Rda].[Richiedente]) AND ((I3000_Spese_a_carico.ID_Spese_a_carico)=[I0000_Rda].[Scelta_fattur]) AND ((B0010_FORNITORE.ID_Fornitore)=[I0000_Rda].[Fornitore_rda]));"
Set qd = Db.CreateQueryDef(nomequery, stringaquery)
Me.Requery
Db.Close
Set Db = Nothing
end Sub
>
La query è molto banale, è molto lunga perchè concatena molti campi. Prima viene cancellata, con
Db.QueryDefs.Delete nomequery
poi viene riscritta con la condizione che viene
z = Me.Rda_numero
e senza ripetere …. WHERE (((I0000_Rda.Rda_numero)= '" & z & "') AND " & _……
in questo modo la query ha un solo record poi apro il report in questo modo:
DoCmd.OpenReport "I0000_query_report", acViewReport, "", "", acNormal
DoCmd.RepaintObject acReport, "I0000_query_report"
poi cancello e ripristino la query come all'inizio senza il fattore Z che la riduce a un record solo.
Forse si puo' utilizzare un controllo sul report ma francamente non conosco bene i report.
Grazie dell'aiuto