Avatar billede jpoulsen Nybegynder
01. april 2002 - 17:46 Der er 10 kommentarer og
1 løsning

Opdatering af formular

I en formular har jeg et felt, hvor der indtastes en bogstavskode. I næste felt er der en Dlookup funktion, som henter data i en tabel. Problemet er, at den først henter data når formularen genåbnes. Hvad gør jeg forkert?
Avatar billede henrik13 Nybegynder
01. april 2002 - 17:56 #1
DoCmd.Requery
Ved din hændelse.
Vh Henrik
Avatar billede jpoulsen Nybegynder
01. april 2002 - 18:16 #2
Hvis jeg forstår det korrekt, skal jeg lave en Hændelsesprocedure under Hændelser i det ønskede felt? Men hvilken Hændelse skal jeg vælge? Jeg vil gerne have, at der springes fra indtastningsfeltet "automatisk" gennem DlookUp feltet og videre i formularen. Jeg har sagt Nej til Tabulatorstop.
Avatar billede weinreich Nybegynder
01. april 2002 - 18:25 #3
Det er ligemeget. Du kan lægge det på exit-eventet der hvor du indtaster bogstavkoden. Det medfølger at når du tab-er ud af kontrollen vil din programkode blive kørt. Men hvis du gør det skal du nok bruge commandoen:
Me.Requery
Den vil så opdatere hele din form.
Avatar billede mugs Novice
01. april 2002 - 18:28 #4
Korrekt som Henrik skriver, formularen opdateres ikke før du igen kører den underliggende forespørgsel. Denne køres når du åbner formularen, eller ved kommandoen DoCmd.Requery.

Efter kommandoen DlookUp indtaster du en kommando der får markøren til at gå til et ønsket felt:

Docmd.GoToControl "FELTNAVN"

der får markøren til aty springe til feltet efter klik på OK i MsgBox i DlookUp.
01. april 2002 - 19:45 #5
jpoulsen-> Hvis din Dlookup er skrevet direkte i tekstboksens Kontrolelementkilde, så burde den opdateres lige så snart du forlader dit bogstavkode-felt. Hvis den ikke gør det, så er der noget galt.

I tekstboksen skal der stå:
=Dlookup("[Felt der skal vises]";"Din tabel";"Bogstavkode = '" & [Bogstavkode] & "'")

(felterne tilpasses selvfølgelig til de rigtige navne)

Herefter burde feltet opdateres hver gang du enten bladres i posterne eller når du har skrevet noget i bogstavkode-feltet og forlader det.

Du kan også godt styre det hele via VBA og hændelsesprocedure (hvilket er en hel del hurtigere), men så skal du placere koden flere steder: Ved Form_Current og Bogstavkode_AfterUpdate.

/Thomas
Avatar billede jpoulsen Nybegynder
01. april 2002 - 22:16 #6
Tak for svarene. Jeg må indrømme, at jeg ikke helt har fundet løsningen. Så vidt jeg kan forstå er der løsninger, som anvender VBA og een som ikke gør. Det jeg har forsøgt hidtil er, at klare det gennem Kontrolelementkilden: i felt 1, [From], indtaster jeg en kode, f.eks. EKVL. I felt 2 vil jeg gerne hente en korresponderende værdi fra en anden tabel. I felt 2´s k.e.kilde har jeg skrevet =Dlookup("[Name]";"T_Pladser";"[From]=[T_Pladser]![ICAO]"). Name er feltet jeg vil hente, T_Pladser er tabellen, Icao er feltet i tabellen, som korresponderer med [From]. Værdien bliver hentet, men altså først når jeg genåbner formularen.
Avatar billede mugs Novice
01. april 2002 - 23:19 #7
Hvornår er det VBA, og hvornår er det SQL?
du kan jo udføre en SQL via en VBA kommando, så hvad kom først: Hønsene eller ægget?

Det vil lette et løsningsforslag, hvis du helt eksakt vil forklare dit problem. Mit svar er korrekt ifølge dit spørgsmål (og de andre svar er ligeledes korrekte).

Jvf. dit sidste svar kl. 22:16 har du gang i noget med flyvepladser og flyvemaskiner(EKVL og ICAO).

Prøv at omformulere dit spørgsmål.
01. april 2002 - 23:49 #8
Der er også noget galt med din opbygning af DLookup'en. Er det feltet From eller feltet ICAO som er i T_Pladser-tabellen?

Prøv én af disse kontrolelelemtkilder i stedet (afhængigt af hvilket af felterne, som findes i T_Pladser-tabellen:

=Dlookup("[Name]";"T_Pladser";"[From]='" & [ICAO] & "'")

=Dlookup("[Name]";"T_Pladser";"[ICAO]='" & [From] & "'")
Avatar billede jpoulsen Nybegynder
02. april 2002 - 09:06 #9
Jeg prøver netop i min kommentar kl 23:19, at tydeliggøre mit problem. Jeg beklager, at jeg ikke er kyndig nok til helt at forstå Jeres løsningsmodeller; (til gengæld er jeg nok mere kyndig omkring flyvemaskiner). Jeg prøver, at tygge på dem igen. Til thomasjepsen: det er ICAO, som ligger i T_Pladser. Tak for indsatsen til alle.
02. april 2002 - 09:10 #10
Så er det, den sidste Dlookup, du skal bruge:
=Dlookup("[Name]";"T_Pladser";"[ICAO]='" & [From] & "'")

/Thomas

PS: Det var mugs, som skrev kl 23:19, men lad det nu ligge :o)
Avatar billede jpoulsen Nybegynder
02. april 2002 - 09:33 #11
Ref thomasjepsen 09:10: laekkert, nu virker det. Nu har jeg vist styr paa den Dlookup funktion.
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