Avatar billede train Nybegynder
18. december 2005 - 21:39 Der er 31 kommentarer og
1 løsning

søge funktion

Jeg har en lille tabel der hedder person, med felterne:
cpr, fornavn, mellemnavn, og efternavn.

jeg kunne godt tænke mig at lave en tekstboks hvor jeg kunne angive et cpr nr, og så den korekte linje i tabellen ville "poppe" op.

Nogen der kunne være behjælpelig med dette ?
Avatar billede -anders- Juniormester
18. december 2005 - 21:59 #1
hej train, det kan sagtens laves, men det skal køre fra en formular enten som fortløbende eller enkeltkolonne, kunne du give lidt flere oplysninger, så vil jeg se om jeg kan hjælpe dig
Avatar billede train Nybegynder
18. december 2005 - 22:03 #2
det lydder super tak.
Avatar billede train Nybegynder
18. december 2005 - 22:06 #3
Jeg vil gerne have en ny formular hvor jeg har en textboks hvor CPR kan angives - resultatet af hvad der findes i tabellen (går ud fra det er et SELECT statement der skal bruges) skal dette listes i et datagrid eller lignende. Der er kun 1 CPR nr i tabellen , da det er PKey. så der skal kun være en kolonne der bliver vist.

Håber jeg fik formuleret dette forståligt
Avatar billede -anders- Juniormester
18. december 2005 - 22:08 #4
Prøve med denne:

Opret en form navngiv formen frmfindcpr

Indsæt en ubunden tekstbox på formen og navngiv tekstboksen txtfindcpr

Indsæt en kommandoknap på formen navngiv den cmd_findcpr

Skriv nedenstående kode ved OnClick event på knappen:

Dim sCPR as String
sCPR = Me!txtfindcpr
DoCmd.OpenForm "NavnPåDinFormHvorDataEr",,,"NavnPåDitCprNrFeltITabellen = '" & sCPR & "'"
Avatar billede -anders- Juniormester
18. december 2005 - 22:10 #5
Koden vil så åbne din registereingsform og vise den post der matcher det CPR nr du har indtastet i txtfindcpr, det er vist også det man kalder et et serverfilter
Avatar billede -anders- Juniormester
18. december 2005 - 22:12 #6
Hvis du har en fortløbende form kan koden også bruges på samme måde, du skal blot placere txtfindcpr og knappen øverst i formen, eller for den sags skyld i en enkeltkolonne form
Avatar billede -anders- Juniormester
18. december 2005 - 22:14 #7
Vis cpr er angive som datatypen tal og ikke tekst skal koden de sådan ud:

Dim sCPR as String
sCPR = Me!txtfindcpr
DoCmd.OpenForm "NavnPåDinFormHvorDataEr",,,"NavnPåDitCprNrFeltITabellen = " & sCPR
Avatar billede train Nybegynder
18. december 2005 - 22:16 #8
jeg er ved at prøve det af tak - lige et spørgsmål:

NavnPåDinFormHvorDataEr

er det en subform jeg skal oprette på min Form ?
Avatar billede -anders- Juniormester
18. december 2005 - 22:17 #9
Nej, det er blot navnet på den form der indeholder dine data fra tabellen, hvis den form der skal vise resultatet af din søgning ligger som en subform skal det skrues lidt anderledes sammen
Avatar billede -anders- Juniormester
18. december 2005 - 22:19 #10
Man behøver ikke subforms, man mange bruger det, det kan drille hvis man ikke har arbejdet med sub,og mainforms før
Avatar billede train Nybegynder
18. december 2005 - 22:20 #11
super - det ser ud til at virke - det eneste problem lige nu er så den også åbner "Find And Replace" vindue samtidig med den åbner resultatet af min søgning - kan dette ungås ?
Avatar billede -anders- Juniormester
18. december 2005 - 22:21 #12
Hmm det lyder mystisk, find an replace er jo den indbygget søgefunktion (kikkert), prøv at poste den kode du har skrevet
Avatar billede train Nybegynder
18. december 2005 - 22:22 #13
Private Sub cmd_findcpr_Click()
Dim sCPR As String
sCPR = Me!txtfindcpr
DoCmd.OpenForm "person2", , , "person.CPR = '" & sCPR & "'"

'alt herunder er autogenereret
On Error GoTo Err_cmd_findcpr_Click


    Screen.PreviousControl.SetFocus
    DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70

Exit_cmd_findcpr_Click:
    Exit Sub

Err_cmd_findcpr_Click:
    MsgBox Err.Description
    Resume Exit_cmd_findcpr_Click
   
End Sub
Avatar billede -anders- Juniormester
18. december 2005 - 22:23 #14
Fjern alt autogeneret kode så tror jeg det virker :o)
Avatar billede -anders- Juniormester
18. december 2005 - 22:24 #15
Denne kode, DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70, aktivere netop kikkerten, men det er jo ikke nødvendigt her
Avatar billede train Nybegynder
18. december 2005 - 22:25 #16
det virkede - mangler lige en "Catch exception" eller errorhandling, i tilfælde af at der trykkes på knappen og textboxen er tom, var det noget du kunne klare  ?
Avatar billede -anders- Juniormester
18. december 2005 - 22:26 #17
Hvis dette er feltnavnet i tabellen "person.CPR", skal du være varsom med  . i feltnavne
Avatar billede train Nybegynder
18. december 2005 - 22:27 #18
det er det ikke - det er bare tabellen person som har feltnavn CPR  ( gammel vane fra SQL)
Avatar billede -anders- Juniormester
18. december 2005 - 22:28 #19
Ja da prøv at skrive denne kode øverst:

Dim sCPR As String
If IsNull ([NavnPåDiFeltITabellen]) Then
Msgbox "Der skal angivet et CPR-nr"
Else
sCPR = Me!txtfindcpr
DoCmd.OpenForm "person2", , , "person.CPR = '" & sCPR & "'"
Avatar billede -anders- Juniormester
18. december 2005 - 22:29 #20
Og her er den så :o)

Dim sCPR As String
If IsNull ([NavnPåDiFeltITabellen]) Then
Msgbox "Der skal angivet et CPR-nr"
Else
sCPR = Me!txtfindcpr
DoCmd.OpenForm "person2", , , "person.CPR = '" & sCPR & "'"
End IF
Avatar billede train Nybegynder
18. december 2005 - 22:33 #21
er her stadig ... den giver mig lidt problemer .. 2 sek - ser lige om jeg gør noget forkert
Avatar billede -anders- Juniormester
18. december 2005 - 22:35 #22
sorry der var en fejl i min sidste kode, denne er testet og virker:

Dim sCPR As String
If IsNull ([txtfindcpr]) Then
Msgbox "Der skal angivet et CPR-nr"
Else
sCPR = Me!txtfindcpr
DoCmd.OpenForm "person2", , , "person.CPR = '" & sCPR & "'"
End IF
Avatar billede train Nybegynder
18. december 2005 - 22:38 #23
PERfekt - og intet at undskylde for, da jeg er meget taknemmelig for hjælpen :)  - jeg acceptere dit svar.

Hvis du ahr overskud har jeg et enkelt spørgsmål mere - at der laves validering på at det der tastes i tekstboxen ser således ud "060276-2037"
Avatar billede -anders- Juniormester
18. december 2005 - 22:40 #24
Jeg har ikke lige et forslag til at kode det, men du kunne prøve at lave en indputmaske i txtfindcpr, det faktisk meget anvendeligt at styre indtastning i feltter med denne metode
Avatar billede -anders- Juniormester
18. december 2005 - 22:41 #25
Tak for point, jeg prøver lige at strikke en inputmaske sammen
Avatar billede -anders- Juniormester
18. december 2005 - 22:44 #26
Ha, den var nem, i design på formen skal du højreklikke på txtfindcpr, og vælge egenskaber, klik på fanebaldet data, her er det muligt at angive en indputmaske specifikt for CPR-numre, prøv at tjekke det :o)
Avatar billede train Nybegynder
18. december 2005 - 22:45 #27
super tak skal du have :)
Avatar billede -anders- Juniormester
18. december 2005 - 22:46 #28
Et Tip, for at undgå autogeneret kode når du opretter knapper på dine forms, skal du blot deaktivere den lille tryllestav i din værktøjskasse
Avatar billede -anders- Juniormester
18. december 2005 - 22:47 #29
Du kan også benytte indputmasken diret på feltet i tabbellen, på denne måde undgår man fejlindatstninger i cprnummer feltet
Avatar billede train Nybegynder
18. december 2005 - 23:16 #30
tak for informationen

- lige en sidste ting så er jeg færdig :)  - er der en måde at få den til kun at liste 1 linje - så den ikke viser den sidste linje i tabellen som er tom, og ikke kan bruges til noget ?
Avatar billede kasper_knaldperle Nybegynder
18. december 2005 - 23:24 #31
Jeg blander mig lige c",)
Sæt egenskaben "TilladTilføjelser" i formularens egenskaber til "nej".
Det burde løse dit sidste problem :D

/Kasper
Avatar billede train Nybegynder
18. december 2005 - 23:24 #32
tak skal du have :)
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