Errore in query

giovedì 17 maggio 2007 - 13.25

jekisi Profilo | Senior Member

Salve a tutto il forum, avrei il seguente problema:
Ho una lista di documenti in una datagridview, premendo un button dovrei modificare alcuni valori, cioè:
Il campo Fatturata dovrei cambiarlo da S a N
Nel campo Fattura dovrei togliere il valore.

Ho provato ad eseguire questa query:

Cn.Open()

sql = "UPDATE TDDT SET FATTURATA='N', fattura='' WHERE DDT=" & DDTTextBox1.Text

cmd = New OleDb.OleDbCommand(sql, Cn)
dr = cmd.ExecuteReader

Cn.Close()

solo che mi da il seguente errore:

Tipi di dati non corrispondenti nell'espressione criterio.



781x384 49Kb



Qualcuno sa dirmi dove sbaglio?


Distinti Saluti Fabio Messina

us01739 Profilo | Expert

I campi fattura e fatturata sono giusti? ... e di che tipo sono nel database?
Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
http://www.robertogelmini.com
---------------------------------------------------

the_follet Profilo | Newbie

Ciao,
nella tua istruzione SQL:
sql = "UPDATE TDDT SET FATTURATA='N', fattura='' WHERE DDT=" & DDTTextBox1.Text

dopo la clausola (WHERE DDT =) passi un valore stringa (DDtTextBox1.text), ma non hai inserito correttamente gli apici, per cui l'istruzione SQL lo interpreta come valore numerico e ti dà l'errore di Type Mismatch.
(presumo che nel DB tu abbia impostato il campo DDT come tipo testo)

Se è come immagino, risolvi in questo modo:

- dopo <DDT => devi mettere prima un apice singolo, poi i doppi apici. A questo punto puoi inserire il valore della stringa, ed alla fine devi richiudere l'apice singolo. Il risultato è:

sql = "UPDATE TDDT SET FATTURATA = 'N', fattura = '' WHERE DDT = '" & DDTTextBox1.Text & "'"

Non è proprio leggibilissimo, te lo traduco:

- apice doppioapice & DDTTextBox1.Text & doppioapice apice doppioapice

Spero così vada meglio, rispondi se ti crea ancora problemi (ma non credo).
Ciao.
Luca

jekisi Profilo | Senior Member

Ciao, niente da fare, sempre lo stesso errore.
I campi sono:

DDT = NUMERICO
FATTURA = NUMERICO
FATTURATA = TESTO

us01739 Profilo | Expert

Se fattura è numerico, il problema è che utilizzi gli apici. Prova a toglierli e facci sapere.
Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
http://www.robertogelmini.com
---------------------------------------------------

jekisi Profilo | Senior Member

sql = "UPDATE TDDT SET FATTURATA='N', fattura= WHERE DDT=" & DDTTextBox1.Text

Ma così non va nemmeno

us01739 Profilo | Expert

Certo, così non và perchè un valore lo devi inserire:
sql = "UPDATE TDDT SET FATTURATA='N', fattura=50 WHERE DDT=" & DDTTextBox1.Text

Riprova.
Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
http://www.robertogelmini.com
---------------------------------------------------

jekisi Profilo | Senior Member

Ma scusa, ma se io il valore del campo fattura devo toglierlo
Fatturata=N
Fattura=
Come dovrebbe essere allora questa query= Quale apici devo togliere?

us01739 Profilo | Expert

Non avevo capèito che dovevi toglierlo:
come prima cosa devi impostare sulla tabella che per quel campo sono consentiti valori nulli, dopo di che prova cosi:
sql = "UPDATE TDDT SET FATTURATA='N', fattura= dbnull WHERE DDT=" & DDTTextBox1.Text
Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
http://www.robertogelmini.com
---------------------------------------------------

jekisi Profilo | Senior Member

Niente da fare
sql = "UPDATE TDDT SET FATTURATA='N', fattura= dbnull WHERE DDT=" & DDTTextBox1.Text

da questo errore:
Nessun valore specificato per alcuni parametri necessari.



us01739 Profilo | Expert

Ho voluto provarla facendo una prova con il QA perchè mi sembra impossibile che non vada ancora.
Così a me funziona:
sql = "UPDATE TDDT SET FATTURATA='N', fattura=null WHERE DDT=" & DDTTextBox1.Text
Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
http://www.robertogelmini.com
---------------------------------------------------

jekisi Profilo | Senior Member

Adesso va, solo che prima avevi detto dbnull no null


Grazie tante per l' aiuto

us01739 Profilo | Expert

Mea culpa!
Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
http://www.robertogelmini.com
---------------------------------------------------
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5