Newsgroup: it.comp.lang.visual-basic
Titolo: [?2] Query parametrica con ADO. Dov'e' l'errore?(Ci riprovo!!!)

Ciao
Con il seguente codice per chiamare una query parametrica di Access con ADO
ricevo il seguente errore al momento dell'esecuzione di rec.movefirst "Data
provider or other service returned an E_FAIL status."
Qualcuno sa dirmi dov'e' l'errore e come correggerlo?
La mia query in Access e' definita cosi' e l'ho chiamata QUERY
PARAMETERS [nome] text (255);
SELECT *
FROM children LEFT JOIN project ON children.id_child=project.id_child where
children.child_name = [nome]
e il codice usato e' questo
Dim rec As ADODB.Recordset
Dim cnn As ADODB.Connection
Dim cmd As ADODB.Command
Dim prm As ADODB.Parameter
Set cnn = New ADODB.Connection
Set rec = New ADODB.Recordset
Set cmd = New ADODB.Command
Set prm = New ADODB.Parameter
cnn.ConnectionString = "Driver={Microsoft Access Driver
(*.mdb)};DBQ=C:\Db.mdb"
cnn.CursorLocation = adUseClient
cnn.Open
Set cmd.ActiveConnection = cnn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "QUERY"
cmd.Parameters.Append cmd.CreateParameter("[nome]", adVarChar, adParamInput,
255, "teo")
Set rec = cmd.Execute
rec.MoveFirst
e qui mi da' l'errore...
Qualche idea?
Grazie in anticipo



rec.MoveFirst
[CUT]
Non è che il recordset è vuoto oppure è di tipo forwar-only?
Ciao
Aran

 cmd.CommandType = adCmdStoredProc
sicuro di mdover usare adCmdStoredProc?
prova com adCmdText
--
bye BlackMagic
ICQ: 85485468
Aiuta la ricerca sul cancro 
http://members.ud.com
Join
at:
http://members.ud.com/services/teams/team.htm?id=2E71C62A-8E67-48DB-B472-
BCA129B35412


Se uso AdCmdText ottengo questo errore:
"[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1."
al momento del cmd.execute
ma io il parametro gliel'ho passsato con l'istruzione
cmd.Parameters.Append cmd.CreateParameter("[nome]", adVarChar, adParamInput,
255, "teo")
oppure devo usare un altro metodo???
grazie teo

 Aran
si' il recordset e' vuoto ma non lo dovrebbe essere perche' la query
dovrebbe ritornare un recordset pieno
ho provato inoltre a mettere diversi tipi di cursori ma ottengo gli stessi
risultati....
idee?


Se uso AdCmdText ottengo questo errore:
"[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1."
al momento del cmd.execute
ma io il parametro gliel'ho passsato con l'istruzione
cmd.Parameters.Append cmd.CreateParameter("[nome]", adVarChar, adParamInput,
255, "teo")
oppure devo usare un altro metodo???
grazie teo

 grazie teo
guarda nella guida Oggetto Parameter:
Impostare o restituire il nome di un parametro utilizzando la proprietą
Name.
Impostare o restituire il valore di un parametro utilizzando la proprietą
Value.
Impostare o restituire caratteristiche di parametro utilizzando le proprietą
Attributes e Direction, Precision, NumericScale, Size e Type.
Passare dati di tipo carattere o binario lunghi a un parametro utilizzando
il metodo AppendChunk.


 ha scritto nel messaggio
news:adpqqe$5oa$2...@knossos.btinternet.com...
Vabbč, arrivo per ultimo e masochisticamente a dimostrare la mia ignoranza
abissale (mai usato parametri). Non č che
PARAMETERS [nome] text (255);
SELECT *
FROM children LEFT JOIN project ON children.id_child=project.id_child where
children.child_name = [nome]
debba, per caso (mi parrebbe pure logico), essere scritta:
PARAMETERS [nome] text (255);
SELECT *
FROM children LEFT JOIN project ON children.id_child=project.id_child where
children.child_name = '[nome]'

 Aran
si' il recordset e' vuoto ma non lo dovrebbe essere perche' la query



cito testualmente dal sito della Microsoft
Private Sub cmdText_Click()
       'Passes a Text parameter to a Microsoft Access 97 QueryDef that
       'is based on the Customers table. The parameter is on the
       'CustomerID field.
         With Cmd1
           Set .ActiveConnection = Conn
           .CommandText = "Customerbyid"
           .CommandType = adCmdStoredProc
           'Can use either adVarChar or adChar dataType
           .Parameters.Append .CreateParameter("paramCustID", _
                                                adVarChar, _
                                                adParamInput, _
                                                5) 'needs Size to work
         End With
         Cmd1.Parameters("paramCustID") = "COMMI"
         Rs.Open Cmd1, , adOpenStatic, adLockReadOnly
          Debug.Print Rs(0), Rs(1), Rs(2)
          Rs.Close
      End Sub
MA PERCHE' DIAVOLO DA ME NON FUNZIONA ALLORA???
Mi ritorna un record vuoto quando invece dovrebbe ritornarmi un record con
almeno una riga!
(Nel senso che facendo girare la stessa query in Access ritorna un record ma
da VB no!)
Sono disperato!
Qualcuno sa dirmi quale potrebbe essere il problema?
Grazie
Teo