Query con parametro

lunedì 17 maggio 2004 - 11.43

cracci Profilo | Newbie

Salve a tutti, sto cercando di eseguire una query che mi tiri fuori da un database access un solo campo di un record che contiene il codice dei Comuni italiani per la creazione del codice fiscale. Ebbene non riesco a passare come filtro nella query il valore (stringa) della TextBox che l'utente riempie indicando il Comune di residenza. Ho provato attraverso una variabile all'interno del WHERE della query...ho provato con un parametro nell'istruzione command che contiene la query...ma non funziona... la query sembra funzionare solo se confronto nel WHERE la TextBox con una stringa ben precisa e non con una variabile o un parametro...
Come posso fare???

Grazie

Brainkiller Profilo | Guru

Ciao,
il codice che hai allegato non mi sembra molto corretto.
Allora per recuperare un solo campo da un database puoi utilizzare la funzione ExecuteScalar() della classe OleDbCommand quindi puoi fare così:

1) Crea la connessione
2) Costruisci la stringa che estrae il dato e passi come filtro il valore della textbox

Dim strsql as String
strsql="SELECT CODICE_COMUNE FROM TabellaComuni WHERE NomeComune='" + TextBoxComune.Text +"'"

Dim cmd as OleDbCommand
cmd=new OleDbCommand(strsql,connession)

Dim valorerecuperato as String
valorerecuperato=CStr(cmd.ExecuteScalar())

Così dovrebbe funzionare.
ciao

david

cracci Profilo | Newbie

Ti ringrazio per la risposta ma ho provato con quanto suggerito e niente da fare. Non riesco proprio. Per sicurezza scrivo il codice della funzione che deve restituirmi il codice del comune:

Public Function Codice(ByVal Ccomuni As String) As String
Dim cnn1 As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Documents and Settings\cracci\Documenti\Progetti d" & _
"i Visual Studio\Codice_fiscale\Comuni.mdb")
Dim cmd1 As New System.Data.OleDb.OleDbCommand
Dim str1 As String = TextBox4.Text
With cmd1
.Connection = cnn1
.CommandText = "SELECT COMU_COD FROM Comuni WHERE COMU_COD = " & str1
End With
cnn1.Open()
Dim Ccodice As String = CStr(cmd1.ExecuteScalar())
cnn1.Close()
Return Ccodice
End Function

Il file access contiene 1 sola tabella di nome 'Comuni' e 3 colonne: 'COMU_COD', 'COMU_DESCR', 'COMU_PROV'

Grazie a chiunque mi dia una mano... :)

cracci Profilo | Newbie

Correggo...:
WHERE WHERE COMU_DESCR = " & str1

Ma chiaramente non funziona lo stesso....
Chiunque volesse aiutarmi.... GRAZIE

cracci Profilo | Newbie

Tutto risolto.... il codice corretto è qui:

With cmd1
.Connection = cnn1
.CommandText = "SELECT COMU_COD FROM Comuni WHERE COMU_DESCR = " & "'" & str1 & "'"
End With

Mancavano gli apici... incredibile che neanche i libri Microsoft riportino questo fatto...
E noi poveri NewBies come facciamo!?!?!?

Grazie a tutti comunque

Brainkiller Profilo | Guru

Ciao,
mah non so che libro hai letto ma in genere sui libri che spiegano come funziona SQL c'è scritto.
Inoltre è una cosa molto conosciuta il fatto che i valori di testo devono esser ecompresi fra apici singoli.

ciao
david
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 !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5