Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Stringa non riconosciuta come valore Boolean valido

175 views
Skip to first unread message

Corrado

unread,
Nov 5, 2007, 4:16:00 AM11/5/07
to
Salve a tutti,

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 !

Davide Senatore [MCSD.net]

unread,
Nov 5, 2007, 4:55:02 AM11/5/07
to
Ciao Corrado,
mi pare di aver capito che stai scrivendo la routine per creare un nuovo
record all'interno del DB. Ora, visto che usi un parametro di ritorno del
Command per la tua funzione, non dovresti usare ExecuteScalar che ritorna un
valore dalla query, bensì ExecuteNonQuery(), che comunque ritorna il return
value, a patto di averlo correttamente impostato nella Stored Procedure.
Ciao
--
Davide Senatore [MCSD.net]
Web: http://www.codesapiens.net
Blog: http://blogs.ugidotnet.org/dsenatore


"Corrado" ha scritto:

Corrado

unread,
Nov 5, 2007, 7:24:00 AM11/5/07
to
Ciao Davide,

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:

Alessandro Ghizzardi [MVP]

unread,
Nov 5, 2007, 4:36:47 PM11/5/07
to
Ciao,

> 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)


0 new messages