Newsgroup: it.comp.lang.visual-basic
Titolo: [SQL] Errore di sintassi in INSERT INTO

Salve a tutti
Non riesco a capire perchè mi da errore di sintassi quando eseguo
questa query:
    "INSERT INTO [Nome Tabella] (Campo1,Campo2,Campo3,Campo4,Campo5)
VALUES ('" & sCampo1 & "','" & sCampo2 & "'," & intCampo3 & "," &
intCampo4 & ",'" & sCampo5 & "')"
Una cosa: se un valore di un campo ha uno spazio, lo devo racchiudere
tra parentesi quadre? E se ha un apice in ultima posizione devo
raddoppiarlo?
ciao e grazie
Giacomo

Giacomo
Se il nome del campo, e non il valore, ha uno o piu' spazi occorrono
le par. quadre.
Si, per gli apici!
Ciao

 raddoppiarlo?
Devi raddoppiarlo in qualsiasi posizione si trovi, e' probabile che il tuo
problema sia proprio questo, verifica se c'e' un apice nei campi stringa 1 2
e 5
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

Ciao

 ha scritto nel messaggio
news:3c6fec1...@news.tin.it...

Ma i nomi delle colonne sono corretti? si chiamano letteralmente 'sCampo1'
ecc.. oppure li costruisci partendo da variabili?


 Ciao
Manca un doppio apice prima della parentesi di chiusura, cosě:
... & sCampo5 & "'")
Mi permetto inoltre di dubitare: Gli apici nei contenuti/valori campi non
devono essere raddoppiati, ma solo quando li si usa per farne oggetto di
ricerca (Where) in un'istruzione SQL

Ciao

ricerca (Where) in un'istruzione SQL
Come faccio allora? Un mio valore di un campo finisce con un'apice,
come devo scrivere la stringa?
ciao

 ha scritto nel messaggio
news:3c6ff571...@news.tin.it...


parentesi.
Questo perche' ora la sintassi che hai postato prima, qui sopra, sembra a
posto, magari pero' hai un nome di campo "svizzero" che confonde il parser
(tanto per dire, in Access 97 se chiamavi una colonna 'Note' si incartava
non poco perche' apparentemente e' una parola chiave)
Un'altra cosa: dici che il campo 7 ha uno spazio, pero' io leggo '140'...
quindi ripeto la domanda: lo spazio e' nel *valore* o nel *nome* del campo??
Come diceva il grande Paperino, la sfera di cristallo e' a lucidare ;-)
senza codice reale si puo' solo tirare a indovinare...


 ricerca (Where) in un'istruzione SQL
Gli apici devono essere raddoppiati sempre, anche quando si specificano
valori per le istruzioni INSERT e UPDATE...



Insisto: NO! solo per campi oggetto di Where di SQL

... e chiarisco:
Possiamo (secondo me dobbiamo!) depositare in un campo testo quanto
l'operatore desidera, compilando un campo, supponiamo un nome: Dall'Aglio
Quando però facciamo una Select su quel campo, l'istruzione:
SELECT FROM TABELLA WHERE NOME='Dall'Aglio'
provocherà un errore, mentre l'istruzione:
SELECT FROM TABELLA WHERE NOME='Dall''Aglio'
ci restituirà il record corretto che, magari, esporremo sullo stesso campo
di esposizione con, si badi bene, un solo apice/apostrofo.
Se depositassimo il campo con doppio apice (Dall''Aglio) dovremo cercarlo
raddoppiando entrambi gli apici, quindi:
SELECT FROM TABELLA WHERE NOME='Dall''''Aglio'
altrimenti non lo troveremo mai!

Ciao
ciao e grazie

Insisto anche con te, per la seconda volta: Ma hai letto???
Manca un doppio apice prima della parentesi di chiusura, cosě:
... & sCampo5 & "'")
quindi:
... & sLAsta & "'            "                  )"
Poi basta, OK?!


prova a paragrafere con quadre il campo [Lunghezza Asta]
Ciao



Vedo che hai le ideeo un po' confuse, ricorda che si sta parlando
sempre di istruzioni SQL ed io OGNI CASO vanno raddoppiate altrimenti
se inserisco una stringa di testo come la seguente:
scritta1','scritta2
e la includo in una query
INSERT INTO Tabella (Campo1,Campo2) VALUES(10,'scritta1','scritta2')
avro' una query che cerca di inserire 3 valori in due campi.
Ciao

OK, hai ragione! Sono stato superficiale perchè io non uso mai SQL per
inserire/editare dati, solo per reperirli. Chiedo scusa... comunque in
quella sintassi manca un doppio apice. ;)

quella sintassi manca un doppio apice. ;)
Perfetto, grazie
Ora provo.
ciao
Giacomo

 fine, il che non dovrebbe comportare problemi ).
Se le tabelle non sono esattamente uguali, quindi e' il tuo caso, visto che
hai campi in piu' alla fine, devi specificarli uno per uno nella stringa:
INSERT INTO Tabella1 (Campo1, Campo2, Campo3) SELECT Campo1, Campo2, Campo3
FROM Tabella2
Mentre puoi usare
INSERT INTO Tabella1 SELECT * FROM Tabella2
solo se sono perfettamente uguali
