Ho indagato e in effetti l'approccio che hai utilizzato sembra corretto.
Una domanda, come hai definito all'interno della tabella il campo "categoria"?
Che tipo e'?

Ho fatto qualche prova, cercando di simulare la tua situazione.

Public Function OttieniCategoria(ByVal categoria As String) As OleDbDataReader

        Dim objCmd As New OleDbCommand("ottienicategoria", conn)
        objCmd.CommandType = CommandType.StoredProcedure

        Dim parCat As New OleDbParameter("@categoria", OleDbType.VarChar, 150)
        parCat.Value = categoria
        parCat.Direction = ParameterDirection.Input
        objCmd.Parameters.Add(parCat)

  Dim dr As SqlDataReader = objCmd.ExecuteReader(CommandBehavior.CloseConnection)
        If (dr.Read()) Then
            '...
     '...
        End If

        Return dr

End Function


In questo modo funziona.
Posso solo dirti di prestare attenzione alla tipizzazione del parametro e di provare a specificarne la direzione.
Piu' di cosi' non saprei.
Spero di esserti stato di aiuto.

Nicola Baldi
"Make things as simple as possible, but not simpler."
>>> My blog <<<
17 messaggi dal 14 febbraio 2006
linus mi hai salvato.. togliendo la @ dalla definizione della funzione sembra andare ora.. grazie..
17 messaggi dal 14 febbraio 2006
grazie anche della tu asoluzione naighes..
17 messaggi dal 14 febbraio 2006
uff risolto un problema ecco che se ne presenta un altor:
eseguendo questa parte di codice:

Sub page_load(obj As Object, e As EventArgs)
dim intuserid as integer = session("userid")
dim BK as new bikebuilding.bikebuilding

label1.text = bk.ottienitotale(intuserid)

if label1.text = "0" then
button1.visible = false
end if

'popola elenco categoria prodotti
dim objbike as new bikebuilding.bikebuilding

dim reader as oledbdatareader = bk.prodotticarrello(intuserid)
datalist1.datasource = reader
datalist1.databind()
reader.close()
objbike.disponi
End Sub


mi riscontra l'errore alla riga sottolineata parametri insufficienti previsto 2
ottienitotale è una funzione dichiarata all'interno di un file .vb che è scritto così:

public function Ottienitotale (userid as integer) as _
double
dim totale as object
dim reader as oledbdatareader

dim objcmd as new oledbcommand ("ottienitotale", _
conn)
objcmd.commandtype = commandtype.storedprocedure

dim param = new oledbparameter ("userID", _
oledbtype.integer)
param.value = userID
objcmd.parameters.add(param)

try
conn.open
totale = objcmd.executescalar
conn.close
catch e as exception
throw e
end try

if totale.gettype is gettype(DBnull) then
return 0
end if
return ctype(totale, double)
end function

e la query che richiama ("ottienitotale") fa così:

SELECT SUM(Price)
FROM tblparti, tblcarrello
WHERE (tblparti.partid=tblcarrello.tuning Or tblparti.partid=tblcarrello.carene Or tblparti.partid=tblcarrello.colore Or tblparti.partid=tblcarrello.motore Or tblparti.partid=tblcarrello.sella Or tblparti.partid=tblcarrello.ruote) AND tblcarrello.userid=[@userid];

qualcuno saprebbe dirmi come risolvere?? grazie..
148 messaggi dal 12 aprile 2001
è una svista la "@" (=[@userid];) oppure può essere quello il problema?

Inoltre (forse però il mio è un dubbio da sviluppatore C#)bk.ottienitotale(intuserid) restituisce un double e lo assegni a un text ???

Linus
17 messaggi dal 14 febbraio 2006
la @ ho provato a toglierla ma non risolvi questa volta.. in access son sicuro vada perchè altrimenti la query non è più parametrica.. per quel che rguarda il tipo restituisce un double ma poi nella funzione ho dato il tipo integer

dim param = new oledbparameter ("userID", _
oledbtype.integer)
param.value = userID
objcmd.parameters.add(param)

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.