Philcattivocarattere ha scritto:
luca3.34 ha scritto:
...
Set rsO = CurrentDb.OpenRecordset("SELECT ID_Ordini, Numero Ordine, Data Ordine FROM Ordini WHERE ID_Azienda =""" & rsC.Fields("ID_Azienda") & """ ORDER BY Data Ordine DESC ", , dbReadOnly)
Run-time error 3075: Sintax error (Missing Operator) in Query. Quindi sta tutto nella stringa che usi per l'apertura del recordset.
Balza subito agli occhi l'indicazione di campi il cui nome contiene spazi e quindi devono essere racchiusi tra parentesi quadrate.
Se il problema non si risolve, solita trafila
Dim strSQL as String
strSQL = "SELECT ID_Ordini, [Numero Ordine], [Data Ordine] FROM Ordini WHERE ID_Azienda =""" & rsC.Fields("ID_Azienda") & """ ORDER BY Data Ordine DESC"
Debug.Pring strSQL
così vedi la "vera" sql di apertura del recordset e vediamo se manca ancora qualcosa.
Prima di affrontare l'errore "in blu" vediamo come va questo. Occhio perché da un "TreeView error" (per incompatibilità di versione) siamo passati a tutt'altro problema. Se la questione prosegue forse è il caso di aprire un nuovo thread.
A questo punto penso che sia il programma ad avere qualche problema.
Allora ho scritto come mi hai suggerito ma permane l'errore 3075.
- Set rsO = CurrentDb.OpenRecordset("SELECT ID_Ordini, [Numero Ordine], [Data Ordine] FROM Ordini WHERE ID_Azienda =""" & rsC.Fields("ID_Azienda") & """ ORDER BY Data Ordine DESC", , dbReadOnly)
- Set tempNode = TV.Nodes.Add("CL" & rsC.Fields("ID_Azienda"), tvwchild, "O" & rsO.Fields("ID_Ordini"), rsO.Fields("[Numero Ordine]"))
Ho poi eseguito il Dim strSQL as String e nella finestra immediata ottengo questo ---> SELECT ID_Ordini, [Numero Ordine], [Data Ordine] FROM Ordini WHERE ID_Azienda ="1" ORDER BY Data Ordine DESC
Ho provato per disperazione a creare un esempio copiato da questo video
https://www.youtube.com/watch?v=6q32hSeWbJ (tale esempio conta di 3 tabelle, Azienda-Ordine-Fattura).
Azienda 1 a molti con Ordine
Ordine 1 a molti con Fattura
Azienda: ID_Azienda, Nome
Ordine: ID_Ordine, Ordine, ID_Azienda
Fattura: ID_Fattura, NomeFattura, ID_Ordine
Anche in questo caso il sistema si blocca sempre al medesimo punto
----------------------------
Option Compare Database
Option Explicit
Private Sub cmdCaricaTreeView_Click()
Dim tempNode As MSComctlLib.Node
Dim rsC As DAO.Recordset 'record clienti
Dim rsO As DAO.Recordset 'record ordini
Dim rsF As DAO.Recordset 'record fatture
tv.Nodes.Clear
Set tempNode = tv.Nodes.Add(, , "C", "Azienda")
Set rsC = CurrentDb.OpenRecordset("SELECT ID_Azienda, Nome From Azienda ORDER BY Nome", , dbReadOnly)
Do While Not rsC.EOF
Set tempNode = tv.Nodes.Add("C", tvwChild, "CL" & rsC.Fields("Nome"), rsC.Fields("Nome"))
'CARICO GLI ORDINI
Set rsO = CurrentDb.OpenRecordset("SELECT ID_Ordine as ChiaveOrdine, Ordine FROM Ordine WHERE ID_Azienda=""" & rsC.Fields("ID_Azienda") & """ ORDER BY Ordine", , dbReadOnly) --------------------> errore 3464
Do While Not rsO.EOF
Set tempNode = tv.Nodes.Add("CL" & rsC.Fields("Nome"), tvwChild, "ORD" & rsO.Fields("ChiaveOrdine"), rsO.Fields("Ordine"))
rsO.MoveNext
Loop
rsO.Close
rsC.MoveNext
Loop
rsC.Close
End Sub