28/12/2022 - fratac ha scritto:
Io personalment non ho capito niente di quello che hai detto e quello che vorresti realizzare.
Puoi essere più chiaro e magari postare il codice o una schermata di quello che vorresri realizzare, anche se non funziona?
ciao, provo a spiegarmi meglio: ho una tabella con campo"id_pratica" etc etc una tabella con campo “id_rapporto” etc etc messe in relazione con una query “q_associarapporto” .
SELECT t_pratica.*, t_rapporto.*, t_pratica.[data pratica]
FROM t_pratica RIGHT JOIN t_rapporto ON t_pratica.id_pratica = t_rapporto.id_pratica
WHERE (((t_pratica.[data pratica]) Is Null));
ho creato una maschera da “t_rapporti” filtrata su nuovo record ed un pulsante che compila il relativo report e lo salva in pdf in una determinata cartella.
Private Sub Comando28_Click()
nome = "C:\Users\sabrina\Desktop\naval\" & "Rapporto di Servizio n. " & Forms![m_rapporto_nuovo]![id_rapporto] & " datato " & Format(Forms![m_rapporto_nuovo]![data], "dd-mm-yyyy") & " " & Forms![m_rapporto_nuovo]![argomento] & ".pdf"
If Len(Dir(nome, vbDirectory)) > 0 Then
MsgBox ("Rapporto di servizio già salvato!")
Else
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
DoCmd.OpenReport "r_rapporto", acViewPreview, , , acHidden
DoCmd.OutputTo acOutputReport, "r_rapporto", acFormatPDF, nome
DoCmd.Close acReport, "r_rapporto"
nome1 = "Rapporto di Servizio n. " & Forms![m_rapporto_nuovo]![id_rapporto] & " datato " & Format(Forms![m_rapporto_nuovo]![data], "dd-mm-yyyy") & " " & Forms![m_rapporto_nuovo]![argomento] & ".pdf"
indirizzo = "C:\Users\sabrina\Desktop\naval\"
MsgBox ("Il " & nome1 & " è stato salvato in " & indirizzo)
End If
DoCmd.Close acForm, "m_rapporto_nuovo"
Forms![m_home].Refresh
End Sub
ho creato una maschera con cui popolo la tabella "t_pratica" ed una sottomaschera con l'elenco dei record della tabella “t_rapporti” in cui c'è un campo si/no.
Vi sono poi due pulsanti: comando39 che apre “q_aggiornapraticarapporto” e l'sql è qui sotto. poi comando69
UPDATE t_rapporto INNER JOIN q_associarapporto ON t_rapporto.id_rapporto = q_associarapporto.id_rapporto SET q_associarapporto.t_rapporto.id_pratica = Forms![m_associarapporto]!id_pratica
WHERE (((t_rapporto.associato)=On));
Private Sub Comando39_Click()
DoCmd.OpenQuery "q_aggiornapraticarapporto"
Forms!m_associarapporto!elencorapporti!.Requery
Me.Refresh
End Sub
Private Sub Comando69_Click()
Dim path As String
Const mainfolder As String = "C:\Users\sabrina\Desktop\naval\"
path = "Pratica N. " & [id_pratica] & " del " & Format(Forms![m_associarapporto]![data pratica], "dd-mm-yyyy") & " " & [argomento_pratica]
If Dir(mainfolder & path, vbDirectory) = "" Then
MkDir (mainfolder & path)
MsgBox (path & " è stata salvata in " & mainfolder)
DoCmd.Close acForm, "m_associarapporto"
Else
MsgBox ("La cartella della " & path & " è già stata creata e salvata in " & mainfolder)
DoCmd.Close acForm, "m_associarapporto"
End If
End Sub
detto ciò, mi trovo che il comando28 crea file pdf e li salva in una cartella.
In pratica vorrei che il codice vba prenda i file pdf dei record filtrati dalla query che associa “id_rapporti” a “id_pratica”, e che li sposti nella cartella creata con il comando69.
grazie mille!!