Allora, ho provato a elaborare il codice per la creazione della tabella, mi manca una parte fondamentale nella quale non riesco ad arrangiarmi purtroppo a causa delle mie lacune.
Il database è esistente e “funziona” (tra n virgolette) per quello che deve fare, sicuramente lo devo sistemare viste le nuove nozioni apprese.
La stampa unione dovrà prendere i valori dalla tabella che si va a creare con il codice successivo:
Private Sub Comando0_DblClick(Cancel As Integer)
'Create table and fields Using DAO
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim fld_ID, fld_CodiceProdotto, fld_DescrizioneProdotto As DAO.Field
Dim fld_pkg1_SingoloPzPkg, pkg2_SingoloPzPkg, pkg3_SingoloPzPkg, pkg4_SingoloPzPkg As DAO.Field
Dim fld_pkg1_Codice, fld_pkg2_Codice, fld_pkg3_Codice, fld_pkg4_Codice As DAO.Field
Dim fld_pkg1_Materiale, fld_pkg2_Materiale, fld_pkg3_Materiale, fld_pkg4_Materiale As DAO.Field
Dim fld_pkg1_Conferimento, fld_pkg2_Conferimento, fld_pkg3_Conferimento, fld_pkg4_Conferimento As DAO.Field
Dim rstProducts As DAO.Recordset
Dim sqlStr As String
Dim CodiceProdotto As String
sqlStr = "SELECT tabProdotti.CodiceProdotto, tabProdotti.DescrizioneProdotto, TabSingoloPezzoPkg.singoloPzPkg_descrizione," & _
"TabMateriale.materiale_descrizione, TabCodice.codice_descrizione, TabConferimento.conferimento_descrizione" & _
"FROM TabCodice INNER JOIN (TabConferimento INNER JOIN (TabMateriale INNER JOIN (TabSingoloPezzoPkg INNER JOIN (tabProdotti INNER JOIN (" & _
"Packaging_Cumulativa INNER JOIN tabProdPkg ON Packaging_Cumulativa.pk_id = tabProdPkg.idPackaging) ON tabProdotti.idProdotto = tabProdPkg.idProdotto)" & _
"ON TabSingoloPezzoPkg.id_singoloPzPkg = Packaging_Cumulativa.pk_id_singoloPzPkg) ON TabMateriale.id_materiale = Packaging_Cumulativa.pk_id_materiale)" & _
"ON TabConferimento.id_conferimento = Packaging_Cumulativa.pk_id_conferimento) ON TabCodice.id_codice = Packaging_Cumulativa.pk_id_codice;"
Set db = CurrentDb
Set rstProducts = db.OpenRecordset(sqlStr)
'create table definition
'1. Table Name --> lst_tbl-Persons
Set tdf = db.CreateTableDef("CumulativaPkg_tmp")
'create field definition
Set fld_ID = tdf.CreateField("ID", dbLong)
fld_ID.Attributes = dbAutoIncrField
fld_ID.Required = True
Set fld_CodiceProdotto = tdf.CreateField("CodiceProdotto", dbText)
fld_Name.AllowZeroLength = False
fld_Name.Required = True
Set fld_DescrizioneProdotto = tdf.CreateField("DescrizioneProdotto", dbText)
fld_Name.AllowZeroLength = False
fld_Name.Required = True
Set fld_pkg1_SingoloPzPkg = tdf.CreateField("pkg1_SingoloPzPkg", dbText)
Set fld_pkg2_SingoloPzPkg = tdf.CreateField("pkg2_SingoloPzPkg", dbText)
Set fld_pkg3_SingoloPzPkg = tdf.CreateField("pkg3_SingoloPzPkg", dbText)
Set fld_pkg4_SingoloPzPkg = tdf.CreateField("pkg4_SingoloPzPkg", dbText)
Set fld_pkg1_Codice = tdf.CreateField("pkg1_Codice", dbText)
Set fld_pkg2_Codice = tdf.CreateField("pkg2_Codice", dbText)
Set fld_pkg3_Codice = tdf.CreateField("pkg3_Codice", dbText)
Set fld_pkg4_Codice = tdf.CreateField("pkg4_Codice", dbText)
Set fld_pkg1_Materiale = tdf.CreateField("pkg1_Materiale", dbText)
Set fld_pkg2_Materiale = tdf.CreateField("pkg2_Materiale", dbText)
Set fld_pkg3_Materiale = tdf.CreateField("pkg3_Materiale", dbText)
Set fld_pkg4_Materiale = tdf.CreateField("pkg4_Materiale", dbText)
Set fld_pkg1_Conferimento = tdf.CreateField("pkg1_Conferimento", dbText)
Set fld_pkg2_Conferimento = tdf.CreateField("pkg2_Conferimento", dbText)
Set fld_pkg3_Conferimento = tdf.CreateField("pkg3_Conferimento", dbText)
Set fld_pkg4_Conferimento = tdf.CreateField("pkg4_Conferimento", dbText)
'add the fields to the table
tdf.Fields.Append fld_ID
tdf.Fields.Append fld_CodiceProdotto
tdf.Fields.Append fld_DescrizioneProdotto
tdf.Fields.Append fld_pkg1_SingoloPzPkg
tdf.Fields.Append fld_pkg1_Codice
tdf.Fields.Append fld_pkg1_Materiale
tdf.Fields.Append fld_pkg1_Conferimento
tdf.Fields.Append fld_pkg2_SingoloPzPkg
tdf.Fields.Append fld_pkg2_Codice
tdf.Fields.Append fld_pkg2_Materiale
tdf.Fields.Append fld_pkg2_Conferimento
tdf.Fields.Append fld_pkg3_SingoloPzPkg
tdf.Fields.Append fld_pkg3_Codice
tdf.Fields.Append fld_pkg3_Materiale
tdf.Fields.Append fld_pkg3_Conferimento
tdf.Fields.Append fld_pkg4_SingoloPzPkg
tdf.Fields.Append fld_pkg4_Codice
tdf.Fields.Append fld_pkg4_Materiale
tdf.Fields.Appendfld_pkg4_Conferimento
'add the table to the Database
db.TableDefs.Append tdf
'compilare la tabella
[DA RISOLVERE...INIZIO]
'Partendo dal primo record, identificando come i=CodiceProdotto
CodiceProdotto = PrimoRisultatoDellaQuery
'Ordinare la query per CodiceProdotto ASC
'PRIMO RECORD:
'Essendo la prima volta che si incontra l'attuale CodiceProdotto, inserire (in base a CodiceProdotto), le descrizioni di pkg1
'se si incontra per la seconda volta l'attuale CodiceProdotto inserire sul primo record anche le descrizioni di pkg2, altrimenti passa al successivo
'se si incontra per la terza volta l'attuale CodiceProdotto inserire sul primo record anche le descrizioni di pkg3, altrimenti passa al successivo
'se si incontra per la quarta volta l'attuale CodiceProdotto inserire sul primo record anche le descrizioni di pkg4, altrimenti passa al successivo
[...]
'ULTIMO RECORD:
'Essendo la prima volta che si incontra l'attuale CodiceProdotto, inserire (in base a CodiceProdotto), le descrizioni di pkg1
'se si incontra per la seconda volta l'attuale CodiceProdotto inserire sull'ultimo record anche le descrizioni di pkg2, altrimenti passa al successivo
'se si incontra per la terza volta l'attuale CodiceProdotto inserire sull'ultimo record anche le descrizioni di pkg3, altrimenti passa al successivo
'se si incontra per la quarta volta l'attuale CodiceProdotto inserire sull'ultimo record anche le descrizioni di pkg4, altrimenti passa al successivo
[DA RISOLVERE...FINE]
'refresh table and database
db.TableDefs.Refresh
Application.RefreshDatabaseWindow
Set fld_ID = Nothing
Set fld_CodiceProdotto = Nothing
Set fld_DescrizioneProdotto = Nothing
Set fld_pkg1_SingoloPzPkg = Nothing
Set fld_pkg1_Codice = Nothing
Set fld_pkg1_Materiale = Nothing
Set fld_pkg1_Conferimento = Nothing
Set fld_pkg2_SingoloPzPkg = Nothing
Set fld_pkg2_Codice = Nothing
Set fld_pkg2_Materiale = Nothing
Set fld_pkg2_Conferimento = Nothing
Set fld_pkg3_SingoloPzPkg = Nothing
Set fld_pkg3_Codice = Nothing
Set fld_pkg3_Materiale = Nothing
Set fld_pkg3_Conferimento = Nothing
Set fld_pkg4_SingoloPzPkg = Nothing
Set fld_pkg4_Codice = Nothing
Set fld_pkg4_Materiale = Nothing
Set fld_pkg4_Conferimento = Nothing
Set tdf = Nothing
Set rstProducts = Nothing
Set db = Nothing
MsgBox "Fine!"
Sto andando nella giusta direzione?
Grazie mille
Ciao