28. oktober 2005 - 10:21Der er
14 kommentarer og 1 løsning
SQL sætning via VB til Access
Hej eksperter
jeg har nu igennem et par dage prøvet forskellige ting forslået herinde (og også selv prøvet at lege lidt med det) men kan ikke få en simpel SELECT kommando til at virke ved at kode den gennem "hændelsesgeneratoren" i Access...
det jeg prøver på er at få en knap til at tage værdien af felt1, felt2 og felt3... og hvis den værdi findes i min tabel, skal den gå videre... ellers komme frem med en boks om at posten allerede eksistere...
(det hele udspringer fra at jeg har oprettet det hele i Access, med felter og forbindelser osv. hvor der er 3 felter der f.eks. giver værdierne A, B og C, som samles i felt4 i tabellen, ved tryk på knap. Det virker også fint. Men hvis man så indtaster A, B og C igen med samme værdier oprettes der en ny post i min tabel, og det er netop det man ikke skal få lov til når den allerede eksistere :)
det kode jeg har lavet for knappen er som følger: felt1 = navn i tabel felt1.value = værdien i min formular (skulle det ihvertfald gerne være :) osv...
Private Sub Opdater_felt_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "SELECT * FROM tabel WHERE felt1 = felt1.value AND felt2 = felt2.value AND felt3 = felt3.Value")
If ANTAL AF POSTER > 0 Then Msgbox "Posten findes allerede i databasen" Else
DoCmd.SetWarnings True
On Error GoTo Err_Opdater_felt_Click DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
DoCmd.SetWarnings False DoCmd.RunSQL "UPDATE tabel SET felt4 = felt4.Value WHERE felt1 = felt1.value AND felt2 = felt2.value AND felt3 = felt3.value" DoCmd.SetWarnings True End If
meningen er at man indtaster 3 værdier i 3 forskellige felter, der automatisk kommer til felt4 (dette er lavet i access, og virker fint). ved tryk på gem knappen, skal man så få indtastet værdien i felt4 i tabellen medmindre den eksistere i forvejen, hvor man så bare skal få besked om dette, og så sker der ikke mere
men nu virker dcount godt nok, og den kommer med antal... Men det er 0 hele tiden, også selvom posten findes tabellen (værdierne for Felt1 og Me.Felt1 osv. passer ellers godt nok...)
okay, tælleren ser ud til at virke perfekt nu. Tak for hjælpen :)
men nu hvor jeg så er igang med den kan jeg se at felt4 ikke længere acceptere de 3 tal, og ender ud med en fejl, er det pga. måden den er opstilt? (xx1.xx2.x3) og hvis, kan du hjælpe mig med et alternativ?
...smider gerne flere point ind hvis det kræves, nu hvor det orginale spørgsmål er løst
Databasen ligger hjemme, og jeg kan dårligt huske hvordan den så ud. Men et skud i tågen vil være, at du først skal se på felttypen i felt4. Hvis det er numerisk, så prøv ikke at lagre punktum.
Jeg kan ikke rigtig huske, hvad jeg skrev igår men du har vel bemærket, at dine felætnavne i din tæller ikke vil fungere fordi du anvendte forkerte navne.
Det felt du havde navngivet Niveau1 hedder ikke sådan men Kombinationsboks12, de andre hedder så -14 og -16. Du ser navnet i egenskabsarket under fanen Andre.
men kan efterhånden se at fejlen må ligge i datatypen (numerisk/ikke...) men hvordan jeg får de 3 tal adskilt i et felt er mig en gåde her fra morgenstunden af :)
Jeg tror her det sørtste problem er, at jeg ikke rigtig kan huske hvordan din db er skruet sammen. Men umiddelbart skal du se på funktionern Left, Right og Mid der uddrager bestemte karanterer fra en længere streg.
Jeg har ikke så meget tid idag, og slet ikke tid til at se på databaser i arbejdstiden, men prøv ar arbejde lidt videre med disse funktioner, og løber du ind i problemer så send db til mig, så ser jeg på det iaften. Prøv lige at forklare problemstillingen.
Synes godt om
Ny brugerNybegynder
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.