Risolto. query sql funziona "a colpi"

di il
6 risposte

Risolto. query sql funziona "a colpi"

Di nuovo salve a tutti, purtroppo torno a scrivere per un nuovo problema che mi sta capitando e per il quale non trovo una via di uscita.
Da vba eseguo una query parametrica si selezione

Dim mioform As Form
Dim cod_interno As String
Set mioform = Forms![msc_tbl_gestione_prodotto]
cod_interno = mioform![codice interno]
Dim qd As QueryDef
Dim strQryName As String
Dim strSQLTest As String
strQryName = "qry_cod_prod_cliente"
Dim TQuery As QueryDef
  
strSQLTest = "SELECT tbl_ordini_in_produzione.Lotto, tbl_ordini_in_produzione.reparto, tbl_gestione_prodotto.[codice prodotto], tbl_ordini_in_produzione.[data lavorazione], tbl_ordini_in_produzione.[numero ordine], tbl_ordini_in_produzione.[numero circuiti], tbl_ordini_in_produzione.[cs ordinati], tbl_ordini_in_produzione.[data consegna], tbl_ordini_in_produzione.[metri quadrati], tbl_ordini_in_produzione.[numero quadrotti], tbl_ordini_in_produzione.[prezzo x cs], tbl_clienti.[ID cliente], tbl_clienti.[nome cliente], tbl_gestione_prodotto.[codice interno], * "
strSQLTest = strSQLTest & "FROM (tbl_clienti INNER JOIN (tbl_ciclo INNER JOIN tbl_gestione_prodotto ON tbl_ciclo.[id ciclo] = tbl_gestione_prodotto.ciclo) ON tbl_clienti.[ID cliente] = tbl_gestione_prodotto.[codice cliente]) INNER JOIN tbl_ordini_in_produzione ON (tbl_clienti.[ID cliente] = tbl_ordini_in_produzione.[id cliente]) AND (tbl_gestione_prodotto.[codice pannello] = tbl_ordini_in_produzione.[codice pannello]) "
strSQLTest = strSQLTest & "WHERE [codice interno] = [Forms]![msc_tbl_gestione_prodotto]![codice interno];"
    
Set qd = CurrentDb.CreateQueryDef(strQryName, strSQLTest)
	
DoCmd.OpenForm "msc_qry_cod_prod_cliente", acNormal, "", "", , acNormal
Quando il codice arriva alla riga

DoCmd.OpenForm "msc_qry_cod_prod_cliente", acNormal, "", "", , acNormal
mi torna il seguente errore
[img]
https://drive.google.com/open?id=0B99bsT5XtNwkdHdzVlVubWxtYWs
[/img]
Se io la stessa query la creo in access e la eseguo, funziona normalmente senza errori.
Da vba non funziona, ma se apro la query creata e tolgo la spunta "mostra" da un qualunque campo e poi la rimetto, chiudo ed eseguo la query e questa inizia a funzionare correttamente.
Questa è un'immagine che mostra le relazioni fra le tabelle chiamate in causa
[img]
https://drive.google.com/open?id=0B99bsT5XtNwkdVJZS3NiSVc3TVE
[/img]
Grazie a chiunque tenterà di aiutarmi.

6 Risposte

  • Re: Risolto. query sql funziona "a colpi"

    ash_79 ha scritto:


    Se io la stessa query la creo in access e la eseguo, funziona normalmente senza errori.
    Scusa non capisco... Invece TU dove la esegui ???
    Spiegati meglio...

    In ogni caso, quell'errore ti indica che devi specificare il nome della tabella prima del campo, ovvero:
    WHERE tbl_gestione_prodotto.[codice interno] = ....
  • Re: Risolto. query sql funziona "a colpi"

    Se la eseguo in access come query normale funziona, se la eseguo da vba tramite il codice postato non funziona.
  • Re: Risolto. query sql funziona "a colpi"

    ash_79 ha scritto:


    Se la eseguo in access come query normale funziona, se la eseguo da vba tramite il codice postato non funziona.
    Non è la stessa cosa...

    Devi aggiungere il nome della tabella:
    "WHERE tbl_gestione_prodotto.[codice interno] = [Forms]![msc_tbl_gestione_prodotto]![codice interno];"
  • Re: Risolto. query sql funziona "a colpi"

    Grazie mille, me ne sono appena accorto (stordito).
  • Re: Risolto. query sql funziona "a colpi"

    ash_79 ha scritto:


    Grazie mille, me ne sono appena accorto (stordito).
    Non serve usare CreateQueryDef... che ti costringe a cancellare la query ogni volta che devi modificare il predicato...!
    Puoi tranquillamente modificare il predicato di una Query accedento alla proprietà SQL dell'oggetto QueryDef:
    
    CurrentDb.QueryDef(strQryName).SQL= strSQLTest
  • Re: Risolto. query sql funziona "a colpi"

    Grazie mille @Alex, quando torno dal mare lunedì cambio il codice.
Devi accedere o registrarti per scrivere nel forum
6 risposte