Query INSERT nuonamente

giovedì 24 febbraio 2011 - 07.59

jekisi Profilo | Senior Member

Salve a tutto il forum, ho nuovamente un problema con la query.

La query è scritta così:

sql = "INSERT INTO [Tabella1] (Dataconsegna, Cliente, Indirizzo, Città, Prov,Cap, Variazione, Telefono1, Fax, Email, NumeroDocumento, SerieDocumento, TipoDocumento) VALUES(" & Chr(34) & DATATextBox.Text & Chr(34) & ", " & Chr(34) & DITTATextBox.Text & Chr(34) & ", " & Chr(34) & INDIRIZZOTextBox.Text & Chr(34) & ", " & Chr(34) & CITTATextBox.Text & Chr(34) & ", " & Chr(34) & PRTextBox.Text & Chr(34) & ", " & Chr(34) & CAPTextBox.Text & Chr(34) & ", " & Chr(34) & VARIAZIONETextBox.Text & Chr(34) & ", " & Chr(34) & TELEFONO_1TextBox.Text & Chr(34) & ", " & Chr(34) & FAXTextBox.Text & Chr(34) & ", " & Chr(34) & E_MAIL_1TextBox.Text & Chr(34) & ", " & Chr(34) & NUMEROTextBox.Text & Chr(34) & ", " & Chr(34) & SERIETextBox.Text & Chr(34) & ", " & Chr(34) & TextBox1.Text & Chr(34) & ")"


Appena arrivo sul record che come Cliente ha scritto:

DI CRISTINA Natale
"Commercio Carni Bianche"


Mi da questo errore:

Errore di sintassi (operatore mancante) nell'espressione della query '"DI CRISTINA Natale "Commercio Carni Bianche""'.

Forse perche il campo contiene degli apici?

Come dovrei intervenire sulla query?

Distinti Saluti

Fabio Messina

AntCiar Profilo | Expert

Ciao.

In generale nelle query scritte direttamente (cioè senza usare le parametriche) i campi di tipo stringa vanno passati tra apici o doppi apici.

Se sai a priori che il tuo campo non conterrà mai apici singoli (vedi il caso di un CAP che normalmente non ne contiene) puoi lasciare la convenzione:

..... '" & txt.text & "', .....

Se invece sai che il tuo campo potrà contenere l'apice, allora utilizzi come delimitatori i doppi apici (come ti ho fatto vedere nella risposta al post di ieri).

Ora se il valore che vai a scrive contiene i doppi apici sei fregato. Due sono le soluzioni:

1 - sostituire i doppi apici con due apici singoli. La query andrebbe scritta in questo modo:

...... " & chr(34) & txt.text.Replace(chr(34),"xx") & chr(34) & ", " ..........

(al posto di xx ci devi mettere due apostrofi. Non li ho messi perchè dopo non si capiva niente)

2 - riscrivere la query con le parametriche.

A te la scelta.

Ciao
Cristian Barca

jekisi Profilo | Senior Member

Grazie mille, risolto.
sql = "INSERT INTO [Tabella1] (Dataconsegna, Cliente, Indirizzo, Città, Prov, Cap, Variazione, Telefono1, Fax, Email, NumeroDocumento, SerieDocumento, TipoDocumento) VALUES(" & Chr(34) & DATATextBox.Text & Chr(34) & ", " & Chr(34) & DITTATextBox.Text.Replace(Chr(34), "''") & Chr(34) & ", " & Chr(34) & INDIRIZZOTextBox.Text.Replace(Chr(34), "''") & Chr(34) & ", " & Chr(34) & CITTATextBox.Text.Replace(Chr(34), "''") & Chr(34) & ", " & Chr(34) & PRTextBox.Text & Chr(34) & ", " & Chr(34) & CAPTextBox.Text & Chr(34) & ", " & Chr(34) & VARIAZIONETextBox.Text.Replace(Chr(34), "''") & Chr(34) & ", " & Chr(34) & TELEFONO_1TextBox.Text & Chr(34) & ", " & Chr(34) & FAXTextBox.Text & Chr(34) & ", " & Chr(34) & E_MAIL_1TextBox.Text.Replace(Chr(34), "''") & Chr(34) & ", " & Chr(34) & NUMEROTextBox.Text & Chr(34) & ", " & Chr(34) & SERIETextBox.Text & Chr(34) & ", " & Chr(34) & TextBox1.Text & Chr(34) & ")"
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5