01. april 2002 - 17:46Der 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?
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.
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.
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.
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.
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.
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).
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.
Ref thomasjepsen 09:10: laekkert, nu virker det. Nu har jeg vist styr paa den Dlookup funktion.
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.