sql en Visual Basic

Status
Niet open voor verdere reacties.

djemmers

Gebruiker
Lid geworden
7 jul 2006
Berichten
129
dit topic staat al onder sql ook maar blijkbaar is het meer een visual basic probleem

*relevante code in vet*
Ik genereer in VB de volgende sql string:
Code:
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[B],,,,,[/B]0,1,1,1)
op de volgende manier:
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 & "," & opm2 & "," & opm3 & "," & opm4 & ",[/B]" & intaanw(0) & "," & intaanw(1) & "," & intaanw(2) & "," & intaanw(3) & ")"
ik krijg een sql syntax error (maar niet waar die zit)
nu werkt die sql opdracht wel als je ,,,, vervanget door ,"","","",

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

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
 
Je kan een intrinsic if functie gebruiken.
Doordat het een functie is kan je hem rechtstreeks in je samenstelling van je SQL plaatsen.
Dat werkt als volgt:
Code:
[FONT="Courier New"]iif(voorwaarde, resultaat als voorwaarde voldaan, resultaat als voorwaarde [COLOR="Red"]niet[/COLOR] voldaan)[/FONT]
in dit geval kan je het volgende doen:
Code:
[FONT="Courier New"]... & "," & Iif(Len(opm1), opm1, """""") &  "," & iif(len(opm2), opm2, """""") & ...[/FONT]
Len(opm1) geeft true (voldaan) als opm1 niet leeg is. Bijgevolg wordt als opm1 niet leeg is opm1 ingevoegd, anders worden twee aanhalingstekens ingevoegd. Om een aanhalingsteken in een string te zetten moet je hem twee keer vlak na elkaar in de string plaatsen vandaar de eigenaardige constructie. Je kan ook chr(34) gebruiken om een aanhalingsteken in te voegen. Dat wordt dan dit:
Code:
[FONT="Courier New"]... & "," & Iif(Len(opm1), opm1, chr(34) & chr(34)) &  "," & iif(len(opm2), opm2, chr(34) & chr(34)) & ...[/FONT]
Je kan ook een constante definiëren en die gebruiken:
Code:
[FONT="Courier New"]const strQuote = chr(34)
... & "," & Iif(Len(opm1), opm1, strQuote & strQuote) &  "," & iif(len(opm2), opm2, strQuote & strQuote) & ...[/FONT]
Of nog:
Code:
[FONT="Courier New"]const strLeeg = chr(34) & chr(34)
... & "," & Iif(Len(opm1), opm1, strLeeg) &  "," & iif(len(opm2), opm2, strLeeg) & ...[/FONT]
 
'" & opm1 & "','" & opm2 & "','" & opm3 & "','" & opm4 & "'
was de oplossing!

er nog even ' rond zetten!

bedankt voor de reactie
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan