Eseguire query diretamente su db access vb6 e ado

mercoledì 15 aprile 2009 - 13.09

sal21 Profilo | Junior Member

Ho creato una query in un db di access.
Ora vorrei richiamarla via ado e fare ul loop sui record selezionati con i comndi della query...
solo che durante il loop nella variabile TEST ho dei recordset che non appartengono alla tabella
dichiarata nella query!!!!!!!!!
Note:se lancio la query dal db tutto funziona benissimo!

modulo1
Option Explicit
Public RST As New ADODB.Recordset
Public CNSQL As New ADODB.Connection
Public CMD As New ADODB.Command

modulo2
Option Explicit
Sub QUERY_ACCESS()

On Error GoTo errore
Dim TEST As String
If Not CNSQL.State = adStateClosed Then
CNSQL.Close
End If

CNSQL.CursorLocation = adUseClient
CNSQL.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\APPLICAZIONI\DB_PAST_DUE.mdb;"

CMD.ActiveConnection = CNSQL
CMD.CommandText = "STAFF Query"
CMD.CommandType = adCmdUnknown

Set RST = CMD.Execute

Do Until RST.EOF
TEST = Trim(RST("DESCR_COD_4"))
TEST = Trim(RST("SETTORE"))
RST.MoveNext
Loop

Exit Sub

errore:
MsgBox "Errore Numero: " & CStr(Err.Number) & vbCrLf & _
"Descrizione: " & Err.Description & vbCrLf & _
"Sorgente dell'Errore: " & Err.Source

Err.Clear

End Sub

query:
SELECT STAFF.DESCR_COD_4, STAFF.SETTORE
FROM STAFF
WHERE (((STAFF.DESCR_COD_4) Like '*FILIALE*') AND ((Len([settore]))<>0))
ORDER BY STAFF.SETTORE;

sal

sanbiz Profilo | Senior Member

>solo che durante il loop nella variabile TEST ho dei recordset
>che non appartengono alla tabella
>dichiarata nella query!!!!!!!!!
>Note:se lancio la query dal db tutto funziona benissimo!

Prima cosa che mi viene in mente: sei sicuro che si stia lavorando sul database corretto?
Seconda cosa: quando dici che non appartengono alla tabella della query intendi che viene fatta una select su un'altra tabella dello stesso database?

> CMD.CommandType = adCmdUnknown
Perchè non usi CMD.CommandType = adCmdStoredProc?
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/

Dainesi Profilo | Senior Member


> CNSQL.CursorLocation = adUseClient
Usa adUseServer se poi non è possibile in automatico ti converte sul client

> CMD.CommandText = "STAFF Query"
In ADO non puoi utilizzare questa sintassi, devi utilizzare SQL ANSI'89 e '92 e quindi SELECT * FROM [STAFF Query] (notare le parentesi quadre !!)

> CMD.CommandType = adCmdUnknown
Usa adCmdText


Fammi sapere e ...... cancella i post doppi, tripli, quadrupli... :D

.
Autore del libro sul FOREX, MetaTrader e creazione dei trading system http://ilmiolibro.kataweb.it/schedalibro.asp?id=115872

sal21 Profilo | Junior Member

ok.. ti faro sapere ..ma per i post doppi o quadrupli solo perche il servr del forum è andato in time out parecchie volte e non sapevo se era stato accettato il post o no.... dopo li cancello.
Ciao e grazie tante.
sal
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5