Avatar billede jette1 Nybegynder
21. april 2002 - 19:03 Der er 14 kommentarer og
1 løsning

Resultat af foresp. til felt - hvordan?

Jeg har en form der bl.a. indeholder et Postnr-felt og et By-felt. Når brugeren forlader Postnr-feltet skal By'en automatisk fremkomme i By-feltet vha. en forespørgsel.

Jeg er nået hertil....

Private Sub Postnr_LostFocus()
    Dim sql As String
    sql = "select By from byer where Postnr = " & Postnr.Text
    CurrentDb.Execute sql
    'Her skal jeg så på én eller andet måde
    'have resultatet af forespørgslen skrevet
    'til min By-label
End Sub

Hvordan gør jeg det?

På forhånd tusind tak :-)
Avatar billede mugs Novice
21. april 2002 - 19:16 #1
Detr mest simple du kan gøre er at lave en relation mellem dine tabeller. Du har både postnr. og byer i samme tabel (lad os kalde den postnr.). I den tabel hvor du opretter dine poster (tabel2), har du et felt med postnr. I dette felt "plukker" du et postnr. I din forespørgsel indsætter du feltet postnr. Fra tabel2 og feltet postne fra tabellen postnr. relationen bevirker, at du vil få vist den by der svarer til postnr.
Avatar billede mugs Novice
21. april 2002 - 19:19 #2
Du kan også bruge funktionen DloopUp:
Me!By = DLookup("[Postnr]", "By", "[By]='"Me!Postnr"'")
Avatar billede terry Ekspert
21. april 2002 - 19:37 #3
I am assuming that the postnr is numeric so use in the after update event for the postnr field you can use the following

byfelt = DLookup("By", "Byer", "Postnr= " & Me.Postnr )
21. april 2002 - 19:41 #4
Min erfaring er, at den bedste og mest brugervenlig løsning er, at man dropper By-feltet i hovedtabellen, da man til hver en tid kan slå det op i Byer-tabellen.

På formularen har du således en tekstboks, som viser Postnr og en kombinationsboks, som også er bundet til Postnr. Kombinationsboksen skal så have Byer-tabellen som rækkekilde og bundet kolonne som den kolonne, hvor postnr er (typisk kolonne 1)

Derved vil brugeren enten kunne indtaste postnr eller vælge byen på dropdown-listen (hvis man f.eks. ikke kan huske postnr, men kender byen)

/Thomas
Avatar billede jette1 Nybegynder
22. april 2002 - 01:37 #5
thomasjepsen -> Postnr og by er ikke i samme tabel, og det er heller ikke meningen at værdien i feltet by skal gemmes nogen steder. Når brugeren forlader postnr-feltet, vil jeg bare gerne vise byen i en label, så brugeren kan se at postnummeret er korrekt... håber du forstår hvad jeg mener, eller må du sige til.

Kan det slet ikke lade sig gøre at lave en sql forespørgsel som vist herover, når brugeren forlader feltet - og så skrive resultatet til formens by-label?
Avatar billede mugs Novice
22. april 2002 - 06:54 #6
jette1 > Det er netop hvad både Terry og jeg foreslår. Funktionen DLookup henter værdien af et felt i en anden tabel. Koden ser således ud, hvis postnr er et numerisk felt:

Byfelt = DLookup("By", "By1", "Postnr= " & Me.Postnr)

Hvor formularens felt "Byfelt" får tildelt værdien af feltet "By" i tabellen "By1", hvor tabellen felt "Postnr" er = formularens felt "Postnr".

Formularens Byfelt er en ubundet tekstboks, der ikke har forbindelse "bagud" i databasen, og derfor ikke lagres.
22. april 2002 - 07:39 #7
Jette-> Ja, det er også netop det, som er resultatet af mit forslag. Du gemmer KUN postnr! Bynavnet vises blot i en forespørgsel.

Mugs og terry-> DLookup er lidt mere besværlig, da man således skal placere koden både på VedAktuel (på formularen) og VedEfterOpdatering (af postnr), men kombinationsboksen bare virker uden en eneste linie kode.

Jette-> Hvis du har en email-adresse, vil jeg gerne sende et eksempel.
Ellers skriv til mig på tj@makeiteasy.dk
Du må også gerne senne mig din base, som jeg så kan implementere det i.

/Thomas
22. april 2002 - 07:57 #8
never mind. Jeg har lagt et eksempel her: www.makeiteasy.dk/tj/postnr.mdb

(db'en er i Acc 2000 format - sig til, hvis du bruger et andet format)
Avatar billede terry Ekspert
22. april 2002 - 08:13 #9
another soultion is to make a query including the By in the query, and then use the query instead of the table in the form. Then make the By field read only so that it cant be changed. Then if youchange the postnr or go to another record the By will get updated.
NO code is necessary doing it this way. You can use th equery builder in the forms record source to replace the tabel with a query.
Then it sjust a case of adding the By field to the form
22. april 2002 - 08:17 #10
jeps, men du mister noget af den brugervenlighed, som jeg tilbyder i mit forslag. Men du har ret - og om ikke andet, så er dit forslag velegnet til rapporter m.m.

Generelt skal man være forsigtig med at bruge forspørgsler på formularer, hvor der skal opdateres.
Avatar billede terry Ekspert
22. april 2002 - 08:23 #11
Morning Thomas!
Yes I agree that you have to be carefull thats why I suggest making the field read only, so it doesnt get changed.
22. april 2002 - 08:28 #12
Morning :o)

Det kommer af sig selv: Feltet kan IKKE ændres med mindre, at du tager Postnr-feltet fra By-tabellen med. (og så gemmes postnr jo ikke i hovedtabellen)
Avatar billede terry Ekspert
22. april 2002 - 08:36 #13
Have you tried it Thomas?
22. april 2002 - 09:30 #14
hmm, guess not ;o)

In a one-to-many relation like this, you can do it, yes - my bad :o(
Avatar billede jette1 Nybegynder
22. april 2002 - 11:03 #15
thomasjepsen -> Tusind tak! 2000 format er helt okay... Jeg kigger på dit eksempel når jeg kommer hjem i aften, og så hører du fra mig hvis jeg har spørgsmål :-)

Jeg kender en del til VB og sql, men kender ikke Access særlig godt. Så derfor har jeg valgt den metode jeg nævner i mit første indlæg. Jeg forstår derfor heller ikke helt den diskussion der har været her mellem Terry og Thomas. Men der går jo nok et lyst op for mig på et tidspunkt efterhånden som min skoleopgave skrider frem :-)

Tak til Jer alle for hjælpen...
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