Avatar billede tekno-hedningen Nybegynder
28. oktober 2005 - 10:21 Der 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

Exit_Opdater_felt_Click:
    Exit Sub

Err_Opdater_felt_Click:
    MsgBox Err.Description
    Resume Exit_Opdater_felt_Click
   
End Sub
Avatar billede mugs Novice
28. oktober 2005 - 11:00 #1
Prøv evt. med en Dcount.

Men her tælles du jo antal poster, og hvis resultatet er >0 skal der jo ikke oprettes en ny post, altså skal den forlade procedüren:

If ANTAL AF POSTER > 0 Then
Msgbox "Posten findes allerede i databasen"
Else

If ANTAL AF POSTER > 0 Then
Msgbox "Posten findes allerede i databasen"
exit sub
Else
Avatar billede tekno-hedningen Nybegynder
28. oktober 2005 - 11:20 #2
ja, okay. Den manglede jeg så også at indsætte, takker :)

Men det ændre ikke på at jeg overhovedet ikke får lov til at trække noget ud af databasen (altså select * blabla giver SQL fejl)

men nu vi er ved den, hvad er så den smarteste måde at få dcount defineret på?

noget i stil med dette vel?

var1 = "SELECT * FROM osv."
DoCmd.RunSQL (var1)
If DCount("var1") > 0 Then
  MsgBox "Posten findes allerede i databasen"
  Exit Sub
Else
Avatar billede mugs Novice
28. oktober 2005 - 11:36 #3
Hvad vil du med din sql? Dette burde være nok:

DCount("*", "Tabel1", "[Felt1]= " & Me.Felt1 & " And [Felt2]= " & Me.Felt2 & "And [Felt3]= " & Me.Felt3 & ")
Avatar billede tekno-hedningen Nybegynder
28. oktober 2005 - 12:05 #4
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...)
Avatar billede mugs Novice
28. oktober 2005 - 12:12 #5
Hmm - Kan du sende db til:

mugs@mail.dk

så ser jeg på det senere. Husk at zippe.
Avatar billede tekno-hedningen Nybegynder
28. oktober 2005 - 14:13 #6
jo det kan jeg godt. Men har først adgang til filen igen på mandag, så det må blive der

så, god weekend :)
Avatar billede skovge Novice
31. oktober 2005 - 08:19 #7
Hej Mugs - bare lige en hilsen med tak for hjælpen med min Afghanske database, er nu tilbage i FKO trygge rammer.  :-)

Beklager den manglende relevans for tråden.
Avatar billede mugs Novice
31. oktober 2005 - 18:55 #8
Hej skovge > Jamen velkommen hjem.

Hvis du stadig arbejder med Access har jeg muligvis nogle filer, der kan hjælpe dig. Blot smid en mail på:

wskp-rsek031
Avatar billede mugs Novice
31. oktober 2005 - 19:21 #9
Databasen er modtaget, rettet og returneret.

Fejlen var, at spørgeren prøver at køre en DCount og sammenligne alfanumeriske med numeriske datatyper.
Avatar billede tekno-hedningen Nybegynder
31. oktober 2005 - 21:03 #10
...også modtaget. jeg tester af i morgen tidelig når jeg kommer tilbage på en maskine med access. foreløbig mange tak for hjælpen!
Avatar billede mugs Novice
31. oktober 2005 - 21:05 #11
OK.
Avatar billede tekno-hedningen Nybegynder
01. november 2005 - 08:37 #12
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
Avatar billede mugs Novice
01. november 2005 - 08:59 #13
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.
Avatar billede tekno-hedningen Nybegynder
01. november 2005 - 09:22 #14
ja, det så jeg godt...

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 :)
Avatar billede mugs Novice
01. november 2005 - 09:51 #15
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.
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