IIf statement in query probleem

Status
Niet open voor verdere reacties.

weswillem

Gebruiker
Lid geworden
8 nov 2011
Berichten
310
Ik zit met het navolgende probleem.
Bij invoer van aankomst vul ik 09:00 en bij vertrek 17:00
Bij het INSERTEN krijg ik de foutmelding
- De conversie van tekenreeks 09:00 naar type Boolean is ongeldig.-

Weet iemand misschien een oplossing voor mij?

Code:
strSqlUrenInsert = "INSERT INTO UrenClienten (PersID, Jaar, Weeknr, MaVan, MaTot) VALUES ('" & PersID & "','" & Year(Now) & "','" & cboWeeknr.Text & _
                    "','" & IIf(CStr(mskAankomst1.Text), mskAankomst1.Text, "00:00") & _
                    "','" & IIf(mskVertrek1.Text, mskVertrek1.Text, "00:00")  & "') "

edit:

Was even te snel.
Zo moet het dan.

Code:
strSqlUrenInsert = "INSERT INTO UrenClienten (PersID, Jaar, Weeknr, MaVan, MaTot) VALUES ('" & PersID & "','" & Year(Now) & "','" & cboWeeknr.Text & _
                    "','" & IIf(CStr(mskAankomst1.Text = mskAankomst1.Text, mskAankomst1.Text, "00:00") & _
                    "','" & IIf(mskVertrek1.Text = mskVertrek.Text, mskVertrek1.Text, "00:00")  & "') "
 
Laatst bewerkt:
In die SQL weet ik het niet maar de standaard Iif constructie is Iif(Conditie, True, False). Aan de melding te zien is dat bij jou ook zo en dan werkt die constructie niet omdat je hem een String wilt laten terug geven in plaats van een Boolean.
 
Laatst bewerkt:
Aan de opbouw van je query te zien raad ik je aan om je eens te verdiepen in SQL injection.
 
Hoi,

In de code in je edit mist volgens mij nog een haakje (2e regel). Ook staat er daar een "mskVertrek1" en een "mskVertrek", terwijl dat in de niet ge-edite code twee keer "mskVertrek1" is. Is dat een foutje of niet?
Wat CoD_NL ook al zei: Kijk naar wat SQL injectie is. Het kan behoorlijk wat problemen opleveren als je je er niet tegen wapent.

MartinJM
 
Laatst bewerkt:
@Cod_nl
Ik weet dat ik mij moet bewapenen daartegen.
Maar moet die query even aan praat krijgen.

@MartinJM

De code = iff(mskaankomst1.text = mskaankomst1.text,mskaankomst1.text,"00:00")
Zo ook voor vertrek.
Voor deze 2 zijn de velden van het type datum tijd.
De 1e drie velden zijn numeriek.
Ik heb denk ik zo beetje alles geprobeerd.
 
Laatst bewerkt:
Maar dan toch, aanhouder wint.
Kost een paar dagen, maar werkt.
Het zat hem in " :",
Je zou denken tijd in MaskedTextBox = __:__ als die leeg is, maar moest toch " :" zijn.

Code:
strSqlUrenInsert = "INSERT INTO UrenPersoneel (PersID, Jaar, Weeknr, MaIn, MaUit, DiIn,DiUit, WoIn, WoUit, DoIn,DoUit, VrIn, VrUit, ZatIn, ZatUit, ZonIn, ZonUit ) VALUES ('" & PersID & _
                     "','" & Year(Now) & "','" & cboWeeknr.Text & _
                     "','" & IIf(MasktxtAankomst1.Text = "  :", "00:00", MasktxtAankomst1.Text) & _
                     "','" & IIf(MasktxtVertrek1.Text = "  :", "00:00", MasktxtVertrek1.Text) & _
                     "','" & IIf(MasktxtAankomst2.Text = "  :", "00:00", MasktxtAankomst2.Text) & _
                     "','" & IIf(MasktxtVertrek2.Text = "  :", "00:00", MasktxtVertrek2.Text) & _
                     "','" & IIf(MasktxtAankomst3.Text = "  :", "00:00", MasktxtAankomst3.Text) & _
                     "','" & IIf(masktxtVertrek3.Text = "  :", "00:00", masktxtVertrek3.Text) & _
                     "','" & IIf(MasktxtAankomst4.Text = "  :", "00:00", MasktxtAankomst4.Text) & _
                     "','" & IIf(masktxtVertrek4.Text = "  :", "00:00", masktxtVertrek4.Text) & _
                     "','" & IIf(MasktxtAankomst5.Text = "  :", "00:00", MasktxtAankomst5.Text) & _
                     "','" & IIf(masktxtVertrek5.Text = "  :", "00:00", masktxtVertrek5.Text) & _
                     "','" & IIf(MasktxtAankomst6.Text = "  :", "00:00", MasktxtAankomst6.Text) & _
                     "','" & IIf(masktxtVertrek6.Text = "  :", "00:00", masktxtVertrek6.Text) & _
                     "','" & IIf(MasktxtAankomst7.Text = "  :", "00:00", MasktxtAankomst7.Text) & _
                     "','" & IIf(masktxtVertrek7.Text = "  :", "00:00", masktxtVertrek7.Text) & "') "
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan