120 messaggi dal 23 gennaio 2007
Ho la necessità di ewseguire delle query diverse a seconda di cosa viene selezionato in alcune drop, fin qui nessun problema perchè nello script faccio una serie di if then else ed indirizzo le azioni da fare correttamente.
Il problema sorge quando nelleseguire la query devo far leggere il valore selezionato da una drop per confrontarlo nella query stessa.
Il codice è questo in Vb e con database Access(access data source)

Protected Sub AccessDataSource5_Selecting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs)

If DropDownList4.SelectedValue = "0" Then
e.Command.CommandText = ("SELECT [IDImmobile], [Tipo], [Tipologia], [Località], [Comune], [Prezzo], [Metri Quadri] AS Metri_Quadri FROM [DomekImmobili]")
e.Command.Parameters.Clear()
Else
Dim x As New OleDbParameter("@Prezzo", SqlDbType.VarChar)
e.Command.CommandText = ("SELECT [IDImmobile], [Tipo], [Tipologia], [Località], [Comune], [Prezzo], [Metri Quadri] AS Metri_Quadri FROM [DomekImmobili] WHERE ([Prezzo] = ?)")
x.Value = DropDownList4.SelectedValue
e.Command.Parameters.Add(x)


End If
End If
il primo if funziona e mi visualizza tutto il secondo mi da errore dicendo tipi di dati non corrispondenti nell'espressione criterio!! Cosa mi dite sono giorni che ormai ci sbatto la testa!!
non ho mai usato OleDb, ne access quedi non sono esattamente come i tipo dei parametri sono mappati.

mi ricordo che Price era del tipo Numerico, e ti dissi di convertirlo in Int ma non funzionava, bhe adesso ti dico prova Decimal.

ripeto ho sempre lavorato con SqlServer quindi la mia esperienza in questo settore è nulla.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
36 messaggi dal 13 marzo 2007
CinoRe ha scritto:
...
Dim x As New OleDbParameter("@Prezzo", SqlDbType.VarChar)
e.Command.CommandText = ("SELECT [IDImmobile], [Tipo], [Tipologia], [Località], [Comune], [Prezzo], [Metri Quadri] AS Metri_Quadri FROM [DomekImmobili] WHERE ([Prezzo] = ?)")
x.Value = DropDownList4.SelectedValue
e.Command.Parameters.Add(x)
...


Dirò una cavolata...
ma quando scrivi 'Dim x As New OleDbParameter("@Prezzo", SqlDbType.VarChar)' imposti un oledbparameter che poi definisci come 'SqlDbType.VarChar' non è che cozzano insieme? Cioè non esiste un OleDbType?????

e poi lo chiami "@Prezzo" ma nella query metti solo ([Prezzo] = ?), non è che devi anche qui mettere ([Prezzo] = @Prezzo) il nome definito prima?

Se ho sparato abbiate pietà di me...
nik
Modificato da nicoladima il 12 luglio 2007 12.37 -
Ha ragione nicoladima.

Dim strSql As String = "SELECT IDImmobile, Tipo, Tipologia, Località, Comune, Prezzo, Metri Quadri AS Metri_Quadri FROM DomekImmobili WHERE (Prezzo = ?)"
Dim cmd As New OleDbCommand(strSql, conn);
Dim parm OleDbParameter As New OleDbParameter("Prezzo", OleDbType.Decimal)
parm.Direction = ParameterDirection.Input
parm.Value = DropDownList4.SelectedValue
e.Command.Parameters.Add(parm)


Inoltre, presta attenzione all'ordine con il quale passi i parametri all'oggetto OleDbCommand. L'ordine, se non ricordo male, deve essere il medesimo con il quale i parametri sono dichiarati all'interno della query.
Te lo dico perchè, a suo tempo, ci persi parecchio tempo.
Modificato da naighes il 12 luglio 2007 12.56 -

Nicola Baldi
"Make things as simple as possible, but not simpler."
>>> My blog <<<
ottimo suggerimento sia di naighes che di nicoladima:

Dim x As New OleDbParameter("@Prezzo", SqlDbType.VarChar)

usa OleDbType e prova con Decimal e ricordari di fare il parse del valore preso dalla DropDownList

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
nostromo ha scritto:
...usa OleDbType e prova con Decimal e ricordari di fare il parse del valore preso dalla DropDownList

Giusto.
Io invece devo farmi un bel parsing delle mie cellule celebrali!  (invecchio, che ci volete fare?!)

Nicola Baldi
"Make things as simple as possible, but not simpler."
>>> My blog <<<
e perche mai? il suggerimento che hai dato è giusto :D

ciao marco
Modificato da nostromo il 12 luglio 2007 14.40 -

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
120 messaggi dal 23 gennaio 2007
ragazzi sto per uscire pazzo, ho fatto tutti i cambiamenti che mi avete detto,(che poi era la prima versione che io avevo elaborato)l'errore è sempre lo stesso non so piu cosa controllare....

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.