[RISOLTO]: Errore query: tagli-incolla e funziona

di il
3 risposte

[RISOLTO]: Errore query: tagli-incolla e funziona

Ciao,

mi sono imbattuto in uno strano problema.
Da codice imposto la proprietà SQL di una querydef. Si tratta di una banale SELECT con un JOIN.
Ogni campo è preceduto dall'identificativo della tabella, così:

SELECT Q10_Dati_Categorie.Codice_interno, Q10_Dati_Categorie.Descrizione, Q10_Dati_Categorie.Bilancio, Q10_Dati_Categorie.Valore
FROM Q10_Dati_Categorie LEFT JOIN Q07_Valori ON Q10_Dati_Categorie.Valore = Q07_Valori.Valore
WHERE (((Q07_Valori.Valore) Is Null));
Quando vado ad aprire la query da Access facendo doppio click ottengo l'errore che mi impedisce l'apertura:
Il riferimento al campo specificato 'Bilancio' potrebbe essere relativo a più tabelle elencate nella clausola FROM dell'istruzione SQL.
Ora la cosa strana:

1. visualizzo la query in modalità SQL
2. seleziono tutto il testo e taglio
3. incollo

Quindi non ho fatto altro che riscrivere esattamente la stessa SQL senza averla modificata di una virgola. Ora la query funziona

Per sicurezza ho anche provato a riscriverla completamente a mano e funziona correttamente, segno che la sintassi è giusta.

Per impostare l'SQL da codice faccio così:

Dim s as String

s = "[...]" ' la query di sopra, evito di riscriverla per chiarezza
db.QueryDefs("Q11_Ricerca").SQL = s
Avrò altre 10-15 query impostate così tramite codice e funzionano perfettamente.

Vi è mai capitato? Non riesco a capire dove sbaglio
Grazie!
Mark

3 Risposte

  • Re: [RISOLTO]: Errore query: tagli-incolla e funziona

    Ho il sospetto che l'errore sia nella composizione della STRINGA passata a QueryDef.
    Quando scrivi passi la stringa, questa non viene interpretata da QBE, viene passivamente forzata da te verso QueryDEF.
    Ora se hai inserito(mancato) spazzi o accapo o composto male la stringa su una sola riga...
    è possibile che si verifichi l'errore.
    Nel momento in cui vai ad aprire da QBE il predicato SQL interviene il QUERYBUILDER che riformatta la stringa ed elimina molti errori... di conseguenza quando COPI ed INCOLLI lo fai su una stringa corretta.

    Purtroppo non ci mostri come hai composto la STRINGA passata alla proprietà SQL di QUERYDEF
    pensando fosse superfluo... pertanto la mia è solo un'ipotesi... ma vedrai che verosimilmente
    l'errore è proprio in quella dichiarazione.
    
    s = "[...]" ' la query di sopra, evito di riscriverla per chiarezza
  • Re: [RISOLTO]: Errore query: tagli-incolla e funziona

    Ciao @Alex,

    hai ragione, non ho mostrato la stringa perché avevo già controllato quello che sospetti. Non è la prima volta che mi capita, quindi sono attento su questo

    Per fare la verifica ho dato un debug.print della stringa al momento dell'assegnazione alla proprietà SQL, che ho poi confrontato in blocco note con quella presente nella query dopo l'apertura da Access. Sono identiche. Ho trascurato di evidenziarlo nel primo post.


    EDIT: volevo evitarlo ma ho "risolto" nel peggior modo possibile. Ho creato un nuovo db Access in cui ho copiato pari pari tutti gli oggetti presenti in quello vecchio. Ora funziona tutto senza problemi (non era un errore mio perciò).

    E' una cosa assurda eppure spesso mi capita. Ad esempio quando Access va in crash all'apertura di una query. Non c'è verso se non tentare la via del travaso totale
    Certo che ancora questi problemi con il 2010....
  • Re: [RISOLTO]: Errore query: tagli-incolla e funziona

    Se vuoi perdere 2 minuti ed inserirla... non credo possa fare male a nessuno essendo l'unico punto critico... 2 occhi sono meglio di 1...

    Vedi tu.
Devi accedere o registrarti per scrivere nel forum
3 risposte