Avatar billede ncbr Nybegynder
10. oktober 2001 - 17:28 Der er 16 kommentarer og
3 løsninger

Hjælp til VBA kode

Jeg har en forespørgsel \"QFindtid\" som indeholder følgende felter \"DisciplinID\", \"Tid\", \"Køn\", Naalbetgenelse\", \"NaalID\".

Når der oprettes en ny post, skal der før Datofeltet opdateres søges i \"Qfindtid\" efter en post hvor \"QFindtid\".\"DiciplinID\" = me.DisciplinID & \"QFindtid\".\"Køn\" = me.Køn & \"QFindtid\".\"tid\" > me.tid.
hvis udtrykket er sandt skal den returnere en meddelelsesboks med \"tekst\"&\"QFindtid\".\"Naalbetegnelse\"\"tekst\"

forespørgslen \"QFindtid\" er sorteret efter stigende \"Disciplinid\",Stigende \"Køn\" og Stigende \"tid\".

Det jeg har virker ikke men ser sådan her ud:

If Me.tid < DFirst(\"tid\", \"Qtider\", [DisciplinID] = Me.DisciplinID And [Køn] = Me.Køn) And Me.tid < [tid] Then
    If True Then
    MsgBox \"nål fortjent \" & DLookup(\"naalbetegnelse\", \"Qfindtid\", Me.tid < DFirst(\"tid\", \"Qtider\", [DisciplinID] = Me.DisciplinID And [Køn] = Me.Køn) And Me.tid < [tid])
     
//ncbr\\\\
Avatar billede fdata Forsker
10. oktober 2001 - 18:41 #1
If True vil da vist altid være sand  :o)
Prøv den enkle:
If Me.tid < DFirst(\"tid\", \"Qtider\", [DisciplinID] = Me.DisciplinID And [Køn] = Me.Køn) And Me.tid < [tid] Then
    MsgBox \"nål fortjent \" & DLookup(\"naalbetegnelse\", \"Qfindtid\", Me.tid < DFirst(\"tid\", \"Qtider\", [DisciplinID] = Me.DisciplinID And [Køn] = Me.Køn) And Me.tid < [tid])
end if

10. oktober 2001 - 19:37 #2
Jeg ville nok gøre det sådan her (der er en masse fundamentale fejl i den måde DFirst er brugt):

Dim Nål as string
Nål = DFirst(\"naalbetegnelse\", \"QFindtid\", \"[DisciplinID] = \" & Me.DisciplinID & \" And [Køn] = \'\" & Me.Køn & \"\' And [tid] > #\" & Me!Tid & \"#\")
If Nål <> \"\" then
  msgbox \"nål fortjent \" & Nål
endif

Derved sparer jeg et DFirst-kald (som er ret langsomt og resourcekrævende)

Jeg er ikke 100% sikker på at jeg har forstået dig ret, så det kan godt være at det er noget forkert jeg finder. Men så må du lige forklare det nærmere.

/Thomas
Avatar billede terry Ekspert
10. oktober 2001 - 19:41 #3
ncbr> What is this outside the Dlookup?
And Me.tid < [tid]

In the where part of the Dlookup you have to be carefull to have the fields where your taking the values from OUTSIDE of the strings \" \".
The & character is used to concatenate  strings into one string. If they are outside of the string then Access can put the values into the string, otherwise it is just one long string with for example the word Me.tid in the middle.

This is NOT correct, but hopefully it will put you on th eright track.


If Me.tid < DFirst(\"tid\", \"Qtider\", \"[DisciplinID] = \" & Me.DisciplinID & \" And [Køn] = \" & Me.Køn ) And Me.tid < [tid] Then
    MsgBox \"nål fortjent \" & DLookup(\"naalbetegnelse\", \"Qfindtid\", \" Me.tid < \" & DFirst(\"tid\", \"Qtider\", \"[DisciplinID] = \" & Me.DisciplinID \" & \"And [Køn] = \" &  Me.Køn \" & And \" & Me.tid & \" < [tid])
end if
10. oktober 2001 - 19:48 #4
Hi Terry,

Seems like we\'ve seen the same errors in the DLookup-construction!

ncbr-> Jeg var også lidt i tvivl om Qtider ikke skulle være den samme som Qfindtid? Du nævner i hvert fald ikke QTider i din beskrivelse...!?
Avatar billede ncbr Nybegynder
10. oktober 2001 - 19:50 #5
selvom jeg har en forespørgsel som hedder Qtider, har den intet med dette at gøre, det er \"Qfindtider \" det handler om
Avatar billede terry Ekspert
10. oktober 2001 - 19:52 #6
Hi Thomas, Yes it seems so :o)
10. oktober 2001 - 19:54 #7
Men du siger at der skal søges i Qfindtid. Men i dit eget eks. søger du i QTider?
Avatar billede ncbr Nybegynder
10. oktober 2001 - 20:01 #8
Hvad kan jeg sige

jeg er et fjols o)
Avatar billede ncbr Nybegynder
10. oktober 2001 - 23:33 #9
Thomas>>> jeg får en run-time error \'
der er en syntaksfejl i datoen i forespørgselsudtrykket \"[DisciplinID] = 1 And
[Køn]= \'Dreng\' And [tid] > #5597#\".

Hvad gør jeg ?
10. oktober 2001 - 23:40 #10
Det er nok din [Tid], som den er gal med. Jeg gik ud fra, at det var alm. klokkeslet-format.

Prøv at fjerne #\'erne:

DFirst(\"naalbetegnelse\", \"QFindtid\", \"[DisciplinID] = \" & Me.DisciplinID & \" And [Køn] = \'\" & Me.Køn & \"\' And [tid] > \" & Me!Tid)
Avatar billede ncbr Nybegynder
10. oktober 2001 - 23:47 #11
det virker næsten, problemet er nu at den returnere det samme uanset hvorlavt jeg sætter tiden.
Avatar billede 3brugere Nybegynder
10. oktober 2001 - 23:47 #12
11. oktober 2001 - 09:33 #13
3Brugere-> Stop det latterlige spamming!

ncbr-> Jeg tror måske at vi har fået vendt <-tegnet forkert.
Indsæt < istedet for > og se om det hjælper?
Avatar billede ncbr Nybegynder
11. oktober 2001 - 10:20 #14
Det skal være en dlast istedet for dfirst
11. oktober 2001 - 10:22 #15
okay, det har jo bare noget med sorteringsrækkefølgen at gøre!

Virker det så?
Avatar billede ncbr Nybegynder
11. oktober 2001 - 15:07 #16
det virker mår den kan finde en post hvor [tid] er større me!tid, men ellers kommer der en meddelelse om at det er ulovelig brug af null, det skal jeg lige have kodet mig ud af.

nogen ideer hertil ?
Avatar billede terry Ekspert
11. oktober 2001 - 15:16 #17
You should test using IsNull() I assume its the me.tid which is Null so you could palce this at the start of the code

if IsNull(me.tid) Then exit Sub \'(or function)

Avatar billede ncbr Nybegynder
11. oktober 2001 - 15:19 #18
no it returns null from this:
Dim Nål as string
Nål=dlast\"naalbetegnelse\", \"QFindtid\", \"[DisciplinID] = \" & Me.DisciplinID & \" And [Køn] = \'\" & Me.Køn & \"\' And [tid] > #\" & Me!Tid & \"#\")
If Nål <> \"\" then
  msgbox \"nål fortjent \" & Nål
endif

because it did not find a record that matched
Avatar billede terry Ekspert
11. oktober 2001 - 15:21 #19
Dim Nål as variant

Then you have to test if Nål is Null before
If Nål <> \"\" then
  msgbox \"nål fortjent \" & Nål
endif

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