fout in sql syntax

Status
Niet open voor verdere reacties.

djemmers

Gebruiker
Lid geworden
7 jul 2006
Berichten
129
ben in visual basic een applicatie aan het schrijben,
in visual basic genereer ik volgend sql commando:
INSERT INTO tblInschrijving VALUES ( 7366,919,6137,027,#7-9-2007#,#7-9-2007#,0,0,#7-9-2007#,#7-9-2007#,0,0,23,3,0,null,#7-9-2007#,24,3,null,3,null,3,,,,,0,1,1,1)
die dus een inschrijving toevoegd aan bijgevoegde tabel.
en ik krijg telkens een syntaxfout maar niet meer dan dat, ik weet dus niet waar die zou zitten ofzo , Hoe kan ik die fout vinden?

als er meer info nodig is geef ik die natuurlijk graag.
alvast bedankt
 

Bijlagen

Bij een INSERT-query is het in veel gevallen handig aan te geven in welke kolom je de waardes gooit.

INSERT INTO Tabel (Tabel1, Tabel2, Tabel4) VALUES (1, 2, 4)

Probeer dat maar eens.
 
Misschien een domme vraag, maar waarom heb je datums tussen hekjes (#) staan?

Kun je de foutmelding posten?
 
De foutmelding is enkel dat er een fout in de syntax is, meer krijg ik niet te zien.Niet waar die fout zit, of wat voor syntaxfout, enkel: "er is een syntaxfout".

Over die hekjes... geen idee, zo kwam dat automatisch als ik die datums genereer in php of sql, zal eens proberen zonder die hekjes...
 
Probeer het eens met aanhalingstekens. Teksten en datums moeten tussen aanhalingstekens, bij getallen hoeft dat niet.
 
ok even super druk geweest,

en nu kan ik weer naar het "oude" probleem.
Het probleem zit em dus in de reeks ,,,, die zou ,"","","", moeten zijn aangezien die in tekstcellen komt te staan.

ik haal die gegevens op volgende manier op:

in VB:
Code:
Dim opm1 As String

 If .Text1.Text = "" Then
            omp1 = ""
 Else: omp1 = .Text1.Text & ""
 End If
en het creëren van de sql string:
Code:
cnn.Execute "INSERT INTO tblInschrijving VALUES ( " & intMax & "," & intCurrentCamp & "," & intCurrentMedewerker_ID & "," & Left(.lstStatus.List(.lstStatus.ListIndex), 3) & ",#" & strDatum(1) & "#,#" & strDatum(0) & "#," & .txtTeBetalen(1) & "," & Val(.txtUitbetaald) & ",#" & strDatum(3) & "#,#" & strDatum(2) & "#," & intAnnulatie & "," & intBevestiging & "," & strVBweekend & "," & intVBkans & "," & intVoorstelVerstuurd & "," & strDatumVerstuurd & ",#" & strDatum(2) & "#," & strVova & "," & intVovakans & "," & strVrij1 & "," & intVrij1kans & "," & strVrij2 & "," & intVrij2kans & "[B]," & opm1 & ",[/B]" & opm2 & "," & opm3 & "," & opm4 & "," & intaanw(0) & "," & intaanw(1) & "," & intaanw(2) & "," & intaanw(3) & ")"

hoe kan ik er nu voor zorgen dat ," & opm1 & ", het volgende geeft ,"", en niet ,, zoals nu?
voor de duidelijkheid, dit is enkel als opm1 leeg is, anders werkt het goed
 
dit topic gaat verder bij programmeren->visual basic aangezien het probleem eigenlijk in visual basic zit

Je fout zit in de query, zoals al boven gemeld wordt. Je moet aangeven voor elke waarde, in welke kolom deze moet komen te staan.

Als je dit niet aangeeft, dan krijg je al snel een foutmelding. Ook als de volgorder van je waarden niet klopt krijg je een fout. Als je dus een datum in een INT veld probeerd te krijgen en dergelijk, is dat een probleem.

Tussen haakjes zetten hoeft niet perse, alleen als het tekstwaarden zijn.
 
Je moet aangeven voor elke waarde, in welke kolom deze moet komen te staan.

Dit hoeft niet als de values (waarden) exact overeenkomen met de kolommen in je database. Dus stel je hebt een tabel met kolom A, B en C, dan kán je de query uitvoeren zoals de TS aangeeft.

Opmerking: dit is wel in MySQL, weet niet hoe en of dit in SQL zit.
 
'" & opm1 & "','" & opm2 & "','" & opm3 & "','" & opm4 & "'
was de oplossing! er nog even ' rond zetten.

bedankt voor de reacties
 
Dit hoeft niet als de values (waarden) exact overeenkomen met de kolommen in je database. Dus stel je hebt een tabel met kolom A, B en C, dan kán je de query uitvoeren zoals de TS aangeeft.

Opmerking: dit is wel in MySQL, weet niet hoe en of dit in SQL zit.

Klopt, echter dat woordtje "EXCACT" is nogal een valkuil. Daarbij het je tevens het probleem dat je op een gegeven moment niet meer weet wat je in welke table hebt staan, vooral met een table die zoveel kolomen heeft.

Belangrijkste is echter dat, mocht je ooit 1 kolom in de table toevoegen, dat je al je PHP code weer moet aanpassen. Door ze bij hun naam te noemen, heb je dit niet.

Verder is het voor fout zoeken (zoals hier), erg handig. Immers kun je zien of de syntax zelf goed is, en verder of het aantal kolomen en vars gelijk is, en of soort kolom en waarde goed is. Als je een kolom "getal" hebt, waar je vervolgens text in wilt zitten, dan weet je al snel dat je mogelijk een probleem hebt dat een kolom INT is i.p.v. VARCHAR en dergelijke.

Conclusie: Ja, het kan op de aangegeven manier, maar Nee, verstandig is het zeker niet.
 
inderdaad, heb het ondertussen aangepast met de "VALUES" manier

bedankt allemaal
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan