Avatar billede kimsand Nybegynder
07. maj 2014 - 12:18 Der er 6 kommentarer og
1 løsning

mangler operator i sql sætning

Har fået denne fejlmeddelelse.

Run-time error '3075'

Der er en syntaksfejl, fordi der mangler en operator i forespørgselsudtrykket "[DT_tilbudskalender].[IDmedarbejder] = 7 AND [DT_tilbudskalender].[dato] = 05-05-2014 AND [DT_tilbudskalender].[starttid] <= 09:00:00 AND [DT_tilbudskalender].[sluttid] >= 09:00:00*.

Dette er min kode, og det den skulle gøre er at checke om en given medarbejder er "brugt" indenfor den angivne periode i de timer der andre steder er angivet.

Dim sCrit As String
Dim medarbejderid As Integer
Dim vdato As Date
Dim starttid As Date
Dim sluttid As Date


'Her skal checkes om underviseren er tilgængelig på det tidspunkt.
       
       
        If IsNull(Kombinationsboks125.Value) = True Or IsNull(Kombinationsboks96.Value) = True Or IsNull(Kombinationsboks129.Value) = True Or IsNull(Tekst133.Value) = True Or IsNull(Tekst135.Value) = True Or IsNull(AntalUger.Value) = True Or IsNull(HoldPladser.Value) = True Then
            p = MsgBox("Du har ikke udfyldt data ovenover tilstrækkeligt. Udfyld venligst alle felter", vbOKOnly)
            Tekst61.Value = ""
            Exit Sub
        End If
       
        medarbejderid = Kombinationsboks125.Value
        vdato = Tekst133.Value
        starttid = Tekst61.Value
        sCrit = ""
   
        sCrit = "[DT_tilbudskalender].[IDmedarbejder] = " & medarbejderid & " AND [DT_tilbudskalender].[dato] = " & vdato & " AND [DT_tilbudskalender].[starttid] <= " & starttid & " AND [DT_tilbudskalender].[sluttid] >= " & starttid
       
        If DCount("*", "DT_tilbudskalender", sCrit) > 0 Then ' underviseren er allerede allokeret
            Tekst61.Value = ""
            Exit Sub
        End If
    'slut

Alle værdierne bliver sat rigtigt ind i sCrit og strengen bliver korrekt opbygget.

Jeg har googlet mig sønder og sammen på den her, men der er ikke rigtigt nogen rigtig god forklaring nogen steder.

Jeg ligger parametrene over i nogle variable der matcher de typer som er i DB, da der ellers kan komme overraskelser hvis jeg lægger tekstfelter.value over i et Date type felt i DB, men det bliver ordnet inden.

Er der nogen af jer der kan fortælle mig hvad jeg gør galt i den sætning. Hvilken operator er det jeg mangler ?
Avatar billede terry Ekspert
07. maj 2014 - 12:37 #1
you need to put your variables into '' if they are text/dates
Avatar billede MSchlamovitz Mester
07. maj 2014 - 14:19 #2
Du mangler havelågerne omkring dato og klokkeslæt - se godt efter - der er 6 i alt:

sCrit = "[DT_tilbudskalender].[IDmedarbejder] = " & medarbejderid & " AND [DT_tilbudskalender].[dato] = #" & vdato & "# AND [DT_tilbudskalender].[starttid] <= #" & starttid & "# AND [DT_tilbudskalender].[sluttid] >= #" & starttid & "#"
Avatar billede kimsand Nybegynder
07. maj 2014 - 17:29 #3
hej med jer :) tak for jeres svar...

Hvad betyder de havelåger der ?
Avatar billede MSchlamovitz Mester
07. maj 2014 - 18:04 #4
Når du formulerer din SQL sætning i VBA er reglen den, at der skal havelåger (#) omkring dato og klokkeslæt variable, ligesom der skal apostrof (') omkring strengvariable

fx:
sCrit = ".... WHERE Fakturadato = #11/07/2014#"
sCrit = ".... WHERE Fakturadato = #" & datovariabel & "#"

Her skal man passe på:
Hvis man angiver sin datovariabel på dansk, dvs. dd/mm/åå, vil følgende ske:
11/07/2014 vil blive opfattet som 7. november 2014
15/07/2014 vil blive opfattet som 15. juli 2014
Så derfor: angiv altid dine datoer på amerikansk, dvs mm/dd/åå

Jeg har følgende lille rutine:
if IsDate(Danskdato) then
USADato = Month(Danskdato) & "/" & Day(Danskdato) & "/" & Year(Danskdato)
End If



eksempel på apostrof:
sCrit = ".... WHERE Sælger = 'Hansen' "
sCrit = ".... WHERE Sælger = ' " & sælgervariabel & " ' "

Der skal ikke være mellemrum mellem apostrof og anførselstegn. Det er kun for at du kan læse det.
Avatar billede kimsand Nybegynder
07. maj 2014 - 21:40 #5
De gør det ikke nemt hva :) tak for info... jeg prøver det imorgen når jeg kommer på arbejde :)
Avatar billede kimsand Nybegynder
08. maj 2014 - 08:34 #6
MSchlamovitz... Den sad lige i skabet den der :) tak for hjælpen !
Avatar billede kimsand Nybegynder
08. maj 2014 - 12:29 #7
p.s. din info omkring dansk til amerikansk dato, gælder i den grad her.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester