Avatar billede boenne Nybegynder
11. november 2004 - 22:15 Der er 36 kommentarer og
2 løsninger

Fejl i SQL syntakst

Hej igen :)

Jeg har følgende sætning

    dbs.Execute "INSERT INTO gennereretTimeplan(dato,ugedag) VALUES(" & dato & "," & UGEDAG & ") WHERE dag = " & taeller & ";"
Til denne får jeg en meddelelse:
Fejl 3075
Der mangler en operator i forespørgselsudtrykket
Nu syntes jeg at jeg har prøvet længe nok.. håber der er nogen der kan hjælpe mig..
11. november 2004 - 22:18 #1
Der er noget i vejen med din SQL; Du kan ikke bruge WHERE, når du samtidigi bruger VALUES!

Er dato og Ugedag variabler eller tekstbookse på formularen?
Avatar billede kabbak Professor
11. november 2004 - 22:18 #2
dbs.Execute "INSERT INTO gennereretTimeplan(dato,ugedag) VALUES(#" & dato & "#," & UGEDAG & ") WHERE dag = " & taeller & ";"

og hvis taeller er en streng

dag = '" & taeller & "';"
Avatar billede boenne Nybegynder
11. november 2004 - 22:20 #3
Prøver den lige :)
Avatar billede kabbak Professor
11. november 2004 - 22:21 #4
ok, thomasjespersen ved mere end mig, så du skal nok rette dig efter hans forslag.
Avatar billede boenne Nybegynder
11. november 2004 - 22:22 #5
Ok.. lidt fremskridt.. nu siger den at der mangler en ; i slutningen af sætningen?
Avatar billede boenne Nybegynder
11. november 2004 - 22:23 #6
Tæller er sat som følger:
Dim taeller
taeller = 1
11. november 2004 - 22:26 #7
Hvis derimod du blot ønsker at oprette én enkelt post med værdierne fra dato og Ugedag, så skal syntaksen se således ud:

"INSERT INTO gennereretTimeplan(dato,ugedag) VALUES #" & dato & "#, " & Ugedag & ";"

Hvis Taeller også skal med i tabellen (i feltet Dag), skal SQL'en se således ud:

"INSERT INTO gennereretTimeplan(dato, ugedag, dag) VALUES #" & dato & "#, " & Ugedag & ", " & Taeller & ";"
11. november 2004 - 22:27 #8
Kabbak-> nu ikke så beskeden! Du plejer da nok, at kunne komme med gode input :o)
Avatar billede boenne Nybegynder
11. november 2004 - 22:28 #9
Hov undskyld thomas, så dig slet ikke.. :/
I selve formularen er der kun en knap: Hele koden kommer her - godtnok amatøragtigt :/ men jeg har gjort hvad jeg kunne.. :)

Private Sub Kommandoknap4_Click()

    Dim dbs As Database
    Dim dato
    Dim UGEDAG
    Dim taeller
   
    dato = Now()
    UGEDAG = Format(Now(), "dddd")
    taeller = 1
   
    Set dbs = OpenDatabase("c:\documents and settings\standard\skrivebord\Kopi af test.mdb")
    dbs.Execute " INSERT INTO gennereretTimeplan " _
        & "SELECT * " _
        & "FROM [Fastplan];"
   
    For taeller = 1 To 42
    dbs.Execute "INSERT INTO gennereretTimeplan(dato,ugedag) VALUES(#" & dato & "#," & UGEDAG & ") WHERE dag = " & taeller & ";"
   
    dato = Now() + taeller
    UGEDAG = Format(dato, "dddd")
    taeller = 1 + taeller
    Next
   
    dbs.Close
   
 
End Sub
Avatar billede boenne Nybegynder
11. november 2004 - 22:32 #10
Grunden til at jeg har tilføjet WHERE er at jeg kun vil have at felterne /dato/ugedag/ i tabellen bliver opdateret hvor feltet /dag/ i tabellen er det samme som tælleren.. (men den har du nok regnet ud) :)
Avatar billede kabbak Professor
11. november 2004 - 22:32 #11
når du bruger Now() , får du også klokken med, så er det svært at grupper på dato senere.
Avatar billede boenne Nybegynder
11. november 2004 - 22:34 #12
Kabbak - ja ok.. men kunne ikke lige finde syntaksten for ganske almindelig dato...
hedder det date()??
Avatar billede boenne Nybegynder
11. november 2004 - 22:36 #13
Det gjorde det jo.. :)
11. november 2004 - 22:37 #14
Men jeg forstår ikke....Først indsætter du HELE Fastplan-tabellen i GennereretTimeplan. Derefter indsætter du 42 poster i din løkke.

Er det korrekt?

Bemærk forøvrigt, at for hvert gennemløb, stiger dato med 1, 2, 3, 4, 5, ....42
6. nederste linie burde vel bare hedde:
dato = dato + 1
Avatar billede kabbak Professor
11. november 2004 - 22:37 #15
"UPDATE gennereretTimeplan SET dato =#" & dato & "#,ugedag = '" & UGEDAG & "' WHERE dag = " & taeller & ";"
11. november 2004 - 22:40 #16
Ja, Kabbak, eg tror også, at du har ret i, at vi skal over i en UPDATE i stedet for INSERT!

Og du har tilmed også fanget, at Ugedag er String og derfor skal have ' ' omkring :o)

Så mangler der vist kun at få tælleren til at tælle dagene korrekt?
Avatar billede boenne Nybegynder
11. november 2004 - 22:45 #17
thomasjepsen ja, der er 84 poster, = 42 poster pr. person i timeplanen.
Dette er lagt i et fast skema. Data fra det faste skema bliver kopieret over i
en ny tabel, hvor man kan redigere m.m og bliver nummereret fra 1 - 42 pr. person pr. post. Når skemaet bliver gennereret er det meningen at alle poster skal gennemløbes fra 1-42.. og nederste linie.. ja klart :)
Avatar billede boenne Nybegynder
11. november 2004 - 22:46 #18
Jeg prøver lige update :)
Avatar billede boenne Nybegynder
11. november 2004 - 22:49 #19
Hmmm thomas, jeg beundrer din observationsevne mht. tælleren... :)
Avatar billede boenne Nybegynder
11. november 2004 - 22:52 #20
Den skriver fint ind i tabellen , men kun i hveranden post
11. november 2004 - 22:52 #21
tak...men jeg prøvde jo bare at forstå, hvad der sker ;o)
Avatar billede kabbak Professor
11. november 2004 - 22:52 #22
du burde også

    Dim dato as date
    Dim UGEDAG as string
    Dim taeller as integer
11. november 2004 - 22:53 #23
hvordan ser din kode ud nu?
11. november 2004 - 22:54 #24
Nå, du skal jo også fjerne denne linie:
taeller = 1 + taeller

Det ligger jo i For-Next-løkken, at taeller skal tælle op.
Avatar billede kabbak Professor
11. november 2004 - 22:54 #25
Private Sub Kommandoknap4_Click()

    Dim dbs As Database
    Dim dato as date
    Dim UGEDAG as string
    Dim taeller as integer
   
    dato = date()
    UGEDAG = Format(date(), "dddd")
    taeller = 1
   
    Set dbs = OpenDatabase("c:\documents and settings\standard\skrivebord\Kopi af test.mdb")
    dbs.Execute " INSERT INTO gennereretTimeplan " _
        & "SELECT * " _
        & "FROM [Fastplan];"
   
    For taeller = 1 To 42
    dbs.Execute ""UPDATE gennereretTimeplan SET dato =#" & dato & "#,ugedag = '" & UGEDAG & "' WHERE dag = " & taeller & ";"
   
    dato =Dato +1
    UGEDAG = Format(dato, "dddd")
    taeller = taeller + 1
    Next
   
    dbs.Close
   
 
End Sub
Avatar billede kabbak Professor
11. november 2004 - 22:56 #26
det er rigtig, taeller  til sidst er unødvendig.
11. november 2004 - 22:56 #27
Private Sub Kommandoknap4_Click()

    Dim dbs As Database
    Dim dato as date
    Dim UGEDAG as string
    Dim taeller as integer
   
    dato = date()
    UGEDAG = Format(date(), "dddd")
   
    Set dbs = OpenDatabase("c:\documents and settings\standard\skrivebord\Kopi af test.mdb")
    dbs.Execute " INSERT INTO gennereretTimeplan " _
        & "SELECT * " _
        & "FROM [Fastplan];"
   
    For taeller = 1 To 42
        dbs.Execute ""UPDATE gennereretTimeplan SET dato =#" & dato & "#,ugedag = '" & UGEDAG & "' WHERE dag = " & taeller & ";"
   
        dato =Dato +1
        UGEDAG = Format(dato, "dddd")
    Next
   
    dbs.Close
   
 
End Sub
Avatar billede boenne Nybegynder
11. november 2004 - 22:58 #28
Min kode ser nu sådan ud og virker!!!! TAK TIL JER BEGGE :)

rivate Sub Kommandoknap4_Click()

    Dim dbs As Database
    Dim dato
    Dim UGEDAG
    Dim taeller
   
    dato = Date
    UGEDAG = Format(Date, "dddd")
    taeller = 1
   
    Set dbs = OpenDatabase("c:\documents and settings\standard\skrivebord\Kopi af test.mdb")
    dbs.Execute " INSERT INTO gennereretTimeplan " _
        & "SELECT * " _
        & "FROM [Fastplan];"
   
    For taeller = 1 To 42
    dbs.Execute "UPDATE gennereretTimeplan SET dato =#" & dato & "#,ugedag = '" & UGEDAG & "' WHERE dag = " & taeller & ";"
    '"INSERT INTO gennereretTimeplan(dato,ugedag) VALUES(#" & dato & "#," & UGEDAG & ") WHERE dag = " & taeller & ";"
   
    dato = dato + 1
    UGEDAG = Format(dato, "dddd")
    Next
   
    dbs.Close
   
   
   
End Sub

Husk nu at lave et svar :)
Avatar billede kabbak Professor
11. november 2004 - 22:59 #29
der er da vist en linie for mehet med, ikke ?
11. november 2004 - 23:00 #30
Kabbak-> den er rem'et ud! Jeg studsede også over den :o)
11. november 2004 - 23:00 #31
Men den linien

taeller = 1

Behøver ikke at være der
Avatar billede kabbak Professor
11. november 2004 - 23:01 #32
det er den da osse. ;-))
Avatar billede kabbak Professor
11. november 2004 - 23:02 #33
skulle vi ikke smide et svar thomas
Avatar billede boenne Nybegynder
11. november 2004 - 23:03 #34
Ok tak igen :) den ligger som jeg kan forstå også i For-sætningen ?
Men nu ikke så mange kommentarer :) jeg vil gerne af med mine points :)
11. november 2004 - 23:05 #35
Så pyt da....du skulle jo nødig få forstoppelse ;o)

Nu er det vist også sengetid inden min søn finder på at vågne - han synes, det er så hyggeligt at være oppe om natten......gaaaab :o(
11. november 2004 - 23:07 #36
Takker :o)
Avatar billede boenne Nybegynder
11. november 2004 - 23:07 #37
Tak for hjælpen - og sov godt begge to :)
Avatar billede kabbak Professor
11. november 2004 - 23:09 #38
takker
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