TreeView error

di il
19 risposte

19 Risposte - Pagina 2

  • Re: TreeView error

    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.
    Ora apro il thread
  • Re: TreeView error

    luca3.34 ha scritto:


    ...
    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
    Torno un attimo su questo thread perché c'è un'altro nome campo con spazio non delimitato da parentesi quadre (il fatto che io non l'abbia visto prima mi rende corresponsabile al 2%)
    ... ORDER BY [Data Ordine] DESC
    Edit: e nell'altro thread hai visto anche che ID_Azienda non va tra apici. Secondo me risolte queste due cosucce fila tutto liscio
  • Re: TreeView error

    Onestamente sto perdendo la speranza, ammetto non di non essere un programmatore però è paradossale questa situazione.

    Si nell'ultimo esempio ho sbadatamente digitato male. Avevo provato a mettere le quadre anche su [Data Ordine] ma dava errore 3464 quindi pensavo fosse giusto senza. Per quanto riguarda invece l'esempio iniziale, confermo che rimosso gli apici dalle chiavi primarie gli errori fin qui descritti si sono risolti MA è uscito (ERRORE DI COMPILAZIONE , variabile non definita) --> ho cancellato Option Explicit --> problema risolto MA
    é uscito poi errore 3265 e ho letto qui https://support.microsoft.com/it-it/help/201826/prb-error-3265-when-you-access-properties-collection, ho aggiunto le due librerie Microsoft ADO Ext. 2.x for DDL and Security and Microsoft ActiveX Data Objects 2.x Library ma si ripresente sempre lo stesso errore a questa linea di codice ---> Set tempNode = TV.Nodes.Add("C", tvwchild, "CL" & rsC.Fields(ID_Azienda), rsC.Fields("Azienda"))


    Metto tutta la casistica perchè non so che fare

    Mi rifaccio all'esempietto con tre tabella banali. Aziende, Ordini, Fatture. GLi ID sono tutti chiavi primarie.

    TREE VIEW CON NOMI AZIENDE
    • ID_Azienda ?Set tempNode = tv.Nodes.Add("C", tvwChild, "CL" & rsC.Fields(ID_Azienda), rsC.Fields("Nome")) -? errore su Private Sub Comando2_Click() ? variabile non definita ? per risolverlo devo eliminare Option Explicit ? a questo punto il treeview si popola con i nome delle aziende
    • “ID_Azienda”? ……… rsC.Fields(“ID_Azienda”)………… ? mantengo Option Explicit e il tree view si popola con i nomi della aziende. Se tolgo Option Explicit il tree view si popola comunque con con i nomi d’azienda

    TREE VIEW CON NOMI ORDINI

    ERRORE 91 --> tra apici metto gli ID ed elimino Option Explicit --> errore su Do While Not rsO.EOF

    Option Compare Database

    Private Sub Comando2_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")
    'CARICO I NOMI DELLE AZIENDE
    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("ID_Azienda"), rsC.Fields("Nome"))
    'CARICO GLI ORDINI
    Set rs0 = CurrentDb.OpenRecordset("SELECT ID_Ordine, Ordine FROM Ordine WHERE ID_Azienda=""" & rsC.Fields("ID_Azienda") & """ ORDER BY Ordine DESC", , dbReadOnly)
    Do While Not rsO.EOF
    Set tempNode = tv.Nodes.Add("CL" & rsC.Fields("ID_Azienda"), tvwChild, "ORD" & rsO.Fields("ID_Ordine"), rsO.Fields("Ordine"))

    rsO.MoveNext
    Loop
    rsO.Close
    rsC.MoveNext
    Loop
    rsC.Close
    End Sub


    Errore di compilazione variabile non definita --> con ID_.... tra “” --> errore su Private Sub Comando2_Click()
    Option Compare Database
    Option Explicit

    Private Sub Comando2_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")
    'CARICO I NOMI DELLE AZIENDE
    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("ID_Azienda"), rsC.Fields("Nome"))
    'CARICO GLI ORDINI
    Set rs0 = CurrentDb.OpenRecordset("SELECT ID_Ordine, Ordine FROM Ordine WHERE ID_Azienda=""" & rsC.Fields("ID_Azienda") & """ ORDER BY Ordine DESC", , dbReadOnly)
    Do While Not rsO.EOF
    Set tempNode = tv.Nodes.Add("CL" & rsC.Fields("ID_Azienda"), tvwChild, "ORD" & rsO.Fields("ID_Ordine"), rsO.Fields("Ordine"))
    rsO.MoveNext
    Loop
    rsO.Close
    rsC.MoveNext
    Loop
    rsC.Close
    End Sub


    Errore di compilazione variabile non definita ? senza “” --> tolgo gli apici come mi è stato detto --> errore su Private Sub Comando2_Click()
    Option Compare Database
    Option Explicit

    Private Sub Comando2_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")
    'CARICO I NOMI DELLE AZIENDE
    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(ID_Azienda), rsC.Fields("Nome"))
    'CARICO GLI ORDINI
    Set rs0 = CurrentDb.OpenRecordset("SELECT ID_Ordine, Ordine FROM Ordine WHERE ID_Azienda=""" & rsC.Fields(ID_Azienda) & """ ORDER BY Ordine DESC", , dbReadOnly)
    Do While Not rsO.EOF
    Set tempNode = tv.Nodes.Add("CL" & rsC.Fields(ID_Azienda), tvwChild, "ORD" & rsO.Fields(ID_Ordine), rsO.Fields("Ordine"))
    rsO.MoveNext
    Loop
    rsO.Close
    rsC.MoveNext
    Loop
    rsC.Close
    End Sub


    Errore 3265 --> ID_... senza apici e tolgo Option Explicit --> erorre su Set tempNode = tv.Nodes.Add("C", tvwChild, "CL" & rsC.Fields(ID_Azienda), rsC.Fields("Nome"))

    Option Compare Database

    Private Sub Comando2_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")
    'CARICO I NOMI DELLE AZIENDE
    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(ID_Azienda), rsC.Fields("Nome"))
    'CARICO GLI ORDINI
    Set rs0 = CurrentDb.OpenRecordset("SELECT ID_Ordine, Ordine FROM Ordine WHERE ID_Azienda=""" & rsC.Fields(ID_Azienda) & """ ORDER BY Ordine DESC", , dbReadOnly)
    Do While Not rsO.EOF
    Set tempNode = tv.Nodes.Add("CL" & rsC.Fields(ID_Azienda), tvwChild, "ORD" & rsO.Fields(ID_Ordine), rsO.Fields("Ordine"))
    rsO.MoveNext
    Loop
    rsO.Close
    rsC.MoveNext
    Loop
    rsC.Close
    End Sub
  • Re: TreeView error

    luca3.34 ha scritto:


    ... Per quanto riguarda invece l'esempio iniziale, confermo che rimosso gli apici dalle chiavi primarie gli errori fin qui descritti si sono risolti MA è uscito (ERRORE DI COMPILAZIONE , variabile non definita) --> ho cancellato Option Explicit --> problema risolto...
    Le librerie non si aggiungono "a caso". Il controllo TreeView non ha niente a che vedere con Microsoft ADO Ext. 2.x for DDL and Security and Microsoft ActiveX Data Objects 2.x Library
    No, togliere Option Explicit raramente risolve un problema, eventualmente non viene rilevato (ma non vuol dire che non ci sia) e si presenta sotto un altra forma: risultati inattesi, codice che apparentemente sbaglia ecc. Anzi andava tenuto Option Explicit per vedere quale era la variabile non dichiarata. A meno che uno non sia talmente bravo da essere super-stra-mega-sicuro al 1000% di non aver commesso alcun errore di digitazione (con buona pace delle variabili che diventano tutte Variant). Io non sono uno tra questi.
    Per il resto possiamo dire che la discussione prosegue qui
    https://www.iprogrammatori.it/forum-programmazione/access/treeview-errore-3464-t30639.html
    altrimenti ci sono due thread che affrontano gli stessi aspetti. Eventualmente anche la variabile non dichiarata.
  • Re: TreeView error

    Philcattivocarattere ha scritto:


    luca3.34 ha scritto:


    ... Per quanto riguarda invece l'esempio iniziale, confermo che rimosso gli apici dalle chiavi primarie gli errori fin qui descritti si sono risolti MA è uscito (ERRORE DI COMPILAZIONE , variabile non definita) --> ho cancellato Option Explicit --> problema risolto...
    Le librerie non si aggiungono "a caso". Il controllo TreeView non ha niente a che vedere con Microsoft ADO Ext. 2.x for DDL and Security and Microsoft ActiveX Data Objects 2.x Library
    No, togliere Option Explicit raramente risolve un problema, eventualmente non viene rilevato (ma non vuol dire che non ci sia) e si presenta sotto un altra forma: risultati inattesi, codice che apparentemente sbaglia ecc. Anzi andava tenuto Option Explicit per vedere quale era la variabile non dichiarata. A meno che uno non sia talmente bravo da essere super-stra-mega-sicuro al 1000% di non aver commesso alcun errore di digitazione (con buona pace delle variabili che diventano tutte Variant). Io non sono uno tra questi.
    Per il resto possiamo dire che la discussione prosegue qui
    https://www.iprogrammatori.it/forum-programmazione/access/treeview-errore-3464-t30639.html
    altrimenti ci sono due thread che affrontano gli stessi aspetti. Eventualmente anche la variabile non dichiarata.
    Ok procedo sull'altro.
    Comunque le librerie da aggiungere non le ho messe a caso, avevo letto qui che potevano mancare https://support.microsoft.com/it-it/help/201826/prb-error-3265-when-you-access-properties-collection. Probabilmente ho capito Roma per toma.
Devi accedere o registrarti per scrivere nel forum
19 risposte