PDA

View Full Version : Problema Visual Basic - SQL - ADODB


deggial
05-10-2005, 14:47
Ciao, qualcuno può aiutarmi con questo piccolo (spero) problema?

In visual Basic, sto creando un'applicazione che interroghi un database access.

Devo far eseguire una prima query e su questa devo far eseguire un'ulteriore query (che poi sarebbe solo un fitro).
Il problema è che mi da errore quando esegue la seconda.

Vi posto la parte di programma incriminata, riducendola all'osso. (cioè ho tolto alcune variabili e al loro posto ho messo dellce costanti per non complicare il tutto)

Su MSDN ho trovato informazioni sull'errore ma ancora non riesco a risolverlo.

Qualcuno può aiutarmi???

Ecco il codice e in fondo il codice dell'errore.


______________________

' apro database e tabella

Set conn = New ADODB.Connection
conn.ConnectionString = "DSN = SystemDSN_nome"
strConn = "driver={Microsoft Access Driver (*.mdb)}; dbq=C:\database.mdb"
conn.Open strConn

Set rst = New ADODB.Recordset
rst.Open tabella1, conn, , adLockPessimistic

' Prima query

string1 ="SELECT Staz_Inizio, Staz_Fine, count(motivo) as Somma FROM tabella1 GROUP BY Staz_Inizio, Staz_Fine"
Set query1 = conn.Execute(string1)

'Seconda query: query incriminata

string2="" _
& "SELECT * FROM query1 WHERE Staz_Inizio=""Milano Centrale"" AND Staz_fine=""Novara"" "
set query2= conn.Execute(string2)

______________________


RunTime Error '-2147217904 (80040e10)'
[Microsoft][Driver ODBC Microsoft Access] Parametri Insufficienti. Previsti 2

______________________

GRazie a tutti

cionci
05-10-2005, 14:57
Ma query1 è salvata nel database ?

deggial
05-10-2005, 15:25
Sinceramente non sono sicuro che sia salvata.
Io all'inizio della routine dichiaro query1 come variabile di tipo recordset.

Inoltre, se string2 fosse così:

string2= "SELECT * FROM query1"

il programma non darebbe più errore. Quindi il problema non sta nel salvataggio di query1 secondo me.
ho letto che quell'errore si verifica quando sbagli a mettere il nome dei campi nell'istruzione WHERE, ma sono sicuro di aver scritto giusto.

cionci
05-10-2005, 15:41
Probabilmente query1 è salvata dentro al DB... Non puoi fare in questo modo per filtrare il risultato della query che hai fatto all'inizio... Devi comporre una nuova query SQL che esegue sia la prima query che il filtraggio dei dati risultanti...

deggial
05-10-2005, 15:59
ok. a questo punto però mi si presenta un altro problema.

per fare tutto insieme devo utilizzare l'istruzione HAVING (visto che c'è un raggruppamento) e in qualunque modo la scriva mi da errore di sintassi.