sto utilizzando lo starterkit TimeTracker distribuito sul sito asp.net per
una mia applicazione. Ho modificato il codice DAL in modo da poter usare MS
access come database. Sembra funzionare tutto ma ricevo un errore durante
l'uso:
"Stringa non riconosciuta come valore Boolean valido"
L'errore segnala una riga del codice in cui appare l'istruzione
sqlCmd.ExecuteScalar()
Il codice intero è il seguente:
Public Overrides Function CreaNuovoCat(ByVal nuovoCat As Cat) As Integer
If nuovoCat Is Nothing Then
Throw New ArgumentNullException("nuovoCat")
End If
Dim sqlCmd As OleDbCommand = New OleDbCommand()
AddParamToSQLCmd(sqlCmd, "@ReturnValue", SqlDbType.Int, 0,
ParameterDirection.ReturnValue, Nothing)
AddParamToSQLCmd(sqlCmd, "@Codice", SqlDbType.NText, 255,
ParameterDirection.Input, nuovoCat.Codice)
AddParamToSQLCmd(sqlCmd, "@Cognome", SqlDbType.NText, 255,
ParameterDirection.Input, nuovoCat.Cognome)
AddParamToSQLCmd(sqlCmd, "@Nome", SqlDbType.NText, 255,
ParameterDirection.Input, nuovoCat.Nome)
SetCommandType(sqlCmd, CommandType.StoredProcedure, SP_CAT_CREA)
ExecuteScalarCmd(sqlCmd)
Return CInt(sqlCmd.Parameters("@ReturnValue").Value)
End Function
L'istruzione "executescalarCmd(sqlcdm) richiama la seguente routine
If ConnectionString = String.Empty Then
Throw New ArgumentOutOfRangeException("ConnectionString")
End If
If sqlCmd Is Nothing Then
Throw New ArgumentNullException("sqlCmd")
End If
Using cn As OleDbConnection = New OleDbConnection(Me.ConnectionString)
sqlCmd.Connection = cn
cn.Open()
sqlCmd.ExecuteScalar()
End Using
Sembra essere tutto a posto. I parametri sono corretti e cosi pure la
query....
Morningstar Jobs
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 !
"Corrado" ha scritto:
si è così. Il problema è che con il provider SQL funziona tutto bene.
Inoltre, da quello che ho visto sul sito Microsoft, il comando
ExecuteNonQuery restituisce il numero di righe sui cui ha avuto effetto la
query.
Se ad esempio volessi sapere quale Id (è un contatore) è stato assegnato al
nuovo record dovrei poterlo sapere con ExecuteScalar. Considera che la query
è scritta in ms access.
L'errore è proprio strano poichè non ho valori booleani da nessuna parte...
"Davide Senatore [MCSD.net]" ha scritto:
> si è così. Il problema è che con il provider SQL funziona tutto bene.
> Inoltre, da quello che ho visto sul sito Microsoft, il comando
> ExecuteNonQuery restituisce il numero di righe sui cui ha avuto effetto la
> query.
Giustissimo
> Se ad esempio volessi sapere quale Id (è un contatore) è stato assegnato
> al
> nuovo record dovrei poterlo sapere con ExecuteScalar. Considera che la
> query
> è scritta in ms access.
Giusto anche quello, ma tu stai usando un output parameter di una stored
procedure da quello che leggo...Col command type stored procedure cosa
chiami, delle stored queries? Può essere che l'errore è li dentro.
Invece dell'output parameter cmq ti consiglio L'identity con
L'executeScalar... @@Identity è disponibile anche in access da OleDb4 in
avanti se non erro
Ciao
--
Alessandro
ASP.NET MVP -
https://mvp.support.microsoft.com/profile=C17782C0-2737-42F4-AB87-AD31C701EB21
UGIdotNET Founding Member - http://www.ugidotnet.org
Blog - http://blogs.ugidotnet.org/box
Site - http://www.unboxing.net (Under Construction)
Ludo - http://www.ussleonardo.net (Online soon)