Eccomi. Non ho avuto molto tempo a disposizione ma ho seguito le indicazioni fornitemi. Ho associato al mio pulsante di importazione questa Sub. Per adesso fa il lavoro solamente su una tabella (quella dei Fornitori) pescando i dati dalle tabelle di importazione ma se funziona su questa funzionerà anche sulle altre. Certo, ad ogni fattura potrei avere un fornitore duplicato, ma non mi interessa, sarebbe differenziato in base al campo ID e a me interessa solo che quell'ID compaia in fattura e nei pagamenti connessi alla fattura (e farò in modo, in fase di importazione, di costruire i record correttamente nelle tabelle). Per fare in modo che ID sia sempre crescente ho fatto una query con un COUNT(*) e ho passato all'ID il risultato della query incrementato di 1. Braccia rubate all'agricoltura.. volevo ringraziarvi per le dritte che spero di aver recepito correttamente, mi siete stati molto utili! Ciao a tutti!
Private Sub Importa_XML_Click()
Dim db As Database
Dim rst As Recordset
Dim querySql As String
Dim F_Denominazione, F_Indirizzo, F_Tel, F_Fax, F_Email As String
Dim F_ID As Integer
Dim Indirizzo, comune, cap, prov, naz As String
On Error Resume Next
Set db = CurrentDb
' cancellazione tabelle rimaste da ultima importazione
db.Execute ("DROP TABLE Anagrafica")
db.Execute ("DROP TABLE DatiOrdineAcquisto")
db.Execute ("DROP TABLE DettaglioLinee")
db.Execute ("DROP TABLE ErroriImportazione")
db.Execute ("DROP TABLE Allegati")
db.Execute ("DROP TABLE IdTrasmittente")
db.Execute ("DROP TABLE ContattiTrasmittente")
db.Execute ("DROP TABLE IdFiscaleIVA")
db.Execute ("DROP TABLE DatiAnagrafici")
db.Execute ("DROP TABLE Sede")
db.Execute ("DROP TABLE IscrizioneREA")
db.Execute ("DROP TABLE Contatti")
db.Execute ("DROP TABLE DatiGeneraliDocumento")
db.Execute ("DROP TABLE DatiTrasmissione")
db.Execute ("DROP TABLE DatiDDT")
db.Execute ("DROP TABLE CodiceArticolo")
db.Execute ("DROP TABLE ScontoMaggiorazione")
db.Execute ("DROP TABLE DatiRiepilogo")
db.Execute ("DROP TABLE DettaglioPagamento")
db.Execute ("DROP TABLE DatiPagamento")
' importazione tabelle da XML
DoCmd.RunCommand acCmdImportAttachXML
On Error GoTo Handler
' importazione dati per riempimento tabella Fornitore
querySql = "SELECT COUNT (*) FROM Fornitore"
Set rst = db.OpenRecordset(querySql)
' campo ID
F_ID = rst.Fields(0).Value + 1
querySql = "SELECT DISTINCT Denominazione FROM Anagrafica"
Set rst = db.OpenRecordset(querySql)
' campo Denominazione
F_Denominazione = rst.Fields(0).Value
querySql = "SELECT DISTINCT Indirizzo FROM Sede"
Set rst = db.OpenRecordset(querySql)
Indirizzo = rst.Fields(0).Value
querySql = "SELECT DISTINCT CAP FROM Sede"
Set rst = db.OpenRecordset(querySql)
cap = rst.Fields(0).Value
querySql = "SELECT DISTINCT Comune FROM Sede"
Set rst = db.OpenRecordset(querySql)
comune = rst.Fields(0).Value
querySql = "SELECT DISTINCT Provincia FROM Sede"
Set rst = db.OpenRecordset(querySql)
prov = rst.Fields(0).Value
querySql = "SELECT DISTINCT Nazione FROM Sede"
Set rst = db.OpenRecordset(querySql)
naz = rst.Fields(0).Value
' campo indirizzo
F_Indirizzo = Indirizzo & " " & cap & " " & comune & " - " & " " & "(" & prov & ")" & " " & naz
querySql = "SELECT DISTINCT Telefono FROM Contatti"
Set rst = db.OpenRecordset(querySql)
' campo telefono
F_Tel = rst.Fields(0).Value
querySql = "SELECT DISTINCT Fax FROM Contatti"
Set rst = db.OpenRecordset(querySql)
' campo fax
F_Fax = rst.Fields(0).Value
querySql = "SELECT DISTINCT Email FROM Contatti"
Set rst = db.OpenRecordset(querySql)
' campo e-mail
F_Email = rst.Fields(0).Value
' compongo il record da salvare in tabella Fornitori usando una query di accodamento
' tolgo apici per evitare problemi di dati troncati
F_Denominazione = Replace(F_Denominazione, "'", " ")
F_Indirizzo = Replace(F_Indirizzo, "'", " ")
F_Tel = Replace(F_Tel, "'", " ")
F_Fax = Replace(F_Fax, "'", " ")
F_Email = Replace(F_Email, "'", " ")
' costruisco il record da accodare
querySql = "INSERT INTO Fornitore(ID, Denominazione, Indirizzo, Telefono, email, Fax) VALUES(" & _
F_ID & "," & _
"'" & F_Denominazione & "'" & "," & _
"'" & F_Indirizzo & "'" & "," & _
"'" & F_Tel & "'" & "," & _
"'" & F_Fax & "'" & "," & _
"'" & F_Email & "'" & ")"
DoCmd.RunSQL querySql
On Error GoTo 0
Exit Sub
Handler: MsgBox Err.Description
End Sub