PDA

Visualizza la versione completa : [VB - ACCESS] Errore su INSERT


ladyBlu
09-09-2002, 18:09
Ciao a tutti.
ho un problemuccio con una insert.
I campi da inserire sono tutte stringhe, fatta eccezione per Cartaceo,Elettronico e CD che sono booleani.

Vi posto il codice... se trovate il problema mi fate un grosso favore:


Public Sub Add()

Dim IntCartaceo As Integer, IntCD As Integer
Dim IntElettronico As Integer

If Cartaceo = True Then IntCartaceo = -1 Else IntCartaceo = 0
If Elettronico = True Then
IntElettronico = -1 & _
Else
IntElettronico = 0
End If
If CdAllegato = True Then IntCD = -1 Else IntCD = 0

miasql = "Insert into tbCataloghi " & _
"(SocietÓ,Testata,AnnoPubblicazione," & _
"MesePubblicazione,Revisione,Cartaceo," & _
"Elettronico,Categoria," & _
"Note,Tipologia,Lingua1,Lingua2," & _
"CdAllegato,DescrizioneCD,Piano,Armadio,Scaffale) "
miasql = miasql & "values (""" & SocietÓ & """,""" & Testata & _
""","""" & AnnoPubblicazione & """,""" & _
""""MesePubblicazione & """," & _
"""" & Revisione & ""","
miasql = miasql & IntCartaceo
miasql = miasql & IntElettronico
miasql = miasql & ",""" & Categoria & """," & _
"""" & Note & """,""" & _
& Tipologia & """," & _
"""" & Lingua1 & """,""" & _
& Lingua2 & ""","
miasql = miasql & IntCD
miasql = miasql & ",""" & DescrizioneCD & """," & _
"""" & Piano & """,""" & Armadio & """," & _
"""" & Scaffale & """)"

MiaConn.Execute (miasql)

End Sub


grazie a tutti.
:ciauz:

ChReAn
09-09-2002, 18:19
Che errore ti da'?

ladyBlu
09-09-2002, 18:21
ops, scusami, ho dimenticato di scrivere l'errore.
cmq mi dice:
"Errore di sintassi nella query Insert Into"

solo questo... e nient'altro!
grazie.
:)

ChReAn
09-09-2002, 18:28
Io personalmente farei due cose, per iniziare:

1) eliminerei tutti i doppi apici dalla query e li sostituirei con i singoli apici. In questo modo togli un po' di confusione e non sei obbligato/a a vedere """""""""""...

2) Lancerei l'applicazione in debug con breakpoint sulla query, la copiaincollerei su notepad e vedrei se e' sintatticamente corretta.
In questo modo potrei accorgermi di eventuali valori non corretti passati alla clausola "Values" e/o di errori negli apici (cosa possibile con query di questa lunghezza).

Infine, se non trovassi il problema, incollerei la query in access e proverei ad eseguirla inserendo dei valori opportuni.
Se funzionasse controllerei i valori, altrimenti saprei con certezza che si tratta di un problema di sintassi.
Ciapz! :ciauz:

ladyBlu
09-09-2002, 18:35
ok, provo a vedere se in access funziona, ma senza togliere i doppi apici, perchŔ se li sostituissi con l'apice singolo, access non riconoscerebbe le stringhe contenenti l'apostrofo.

ti faccio sapere come va la mia prova.
:)

ChReAn
09-09-2002, 18:38
Ostia hai ragione... Avevo dimenticato le stringhe contenenti l'apostrofo. :fagiano:

Famme sape'! :)

ladyBlu
09-09-2002, 19:02
allora, questa Ŕ la query fatta direttamente su ACCESS:


INSERT INTO tbCataloghi(SocietÓ,Testata,AnnoPubblicazione,Mese Pubblicazione,
Revisione,Cartaceo,Elettronico,Categoria,[Note],Tipologia,
Lingua1,Lingua2,CdAllegato,DescrizioneCD,Piano,Arm adio,Scaffale)
Values
("Prova","Titolo","2002","settembre","ultima",0,-1,"provacategoria",
"ciao","provatipologia","ita","ing",0,"ppprova","provapiano",
"provaarmdio","provascaffale")

Sono tutti valori fittizi, inseriti per prova e come potete vedere sono tutte strighe, tranne i numerici, che in realtÓ sono booleani.

Ora, su access la query funziona, ma da vb va in errore.
io non sono in grado, o x lo meno fino ad ora non ce l'ho fatta, di trovare dove sia l'errore.
aiutatemi voi, please.
:)

Gammino
10-09-2002, 00:12
Prova a fare un insert "ridotta" e se funziona la espandi sempre di pi¨...
Per esempio, parti da:



INSERT INTO tbCataloghi (SocietÓ, Testata) Values ("Prova", "Titolo")

E man mano gli aggiungi campi e valori...
Arrivata al campo "minato" :gren: ti ritrovi l'errore...
O no? :bubu:

darkblOOd
10-09-2002, 10:28
Originariamente inviato da ladyBlu
ops, scusami, ho dimenticato di scrivere l'errore.
cmq mi dice:
"Errore di sintassi nella query Insert Into"

solo questo... e nient'altro!
grazie.
:)

Ciao myLady,
metti un punto di interruzione sulla query e appena si ferma visualizzala nella finestra immediata. Essendo campi stringa sicuramente ci sarÓ qualcuno di questi che contiene o un apice o una virgola e di conseguenza la insert divide il valore in due.

Ricorda che le stringhe devono essere passate racchiuse tra apici singoli, basta fare un replace sui campi che ti creano il problema.

:smack:

darkblOOd
10-09-2002, 11:03
ricordati anche che se stai inserendo i valori in tutti i campi non c'Ŕ bisogno di specificare il loro nome nella query a meno che non li stai inserendo in una sequenza che non corrisponde al tracciato record della tabella.

Loading