Avatar billede erlandsen Seniormester
16. maj 2009 - 11:33 Der er 6 kommentarer og
1 løsning

Søgefunktion starter når man åbner formular

Jeg har en formular som mine brugere skal vælge en af fire knapper fra og hvis man f.eks. klikker på den ene - åbnes formularen "sagsoprettelse".

Da mine brugere ikke er specielt velbevandret i access vil jeg gerne gøre så meget som muligt for at de ikke opdaterer forkerte data.

F.eks. kunne jeg godt tænke mig at når de klikker på "sagsoprettelse" - så åbnes formularen "sagsoprettelse" (som nedenfor) - men samtidig vil jeg gerne have at søgefunktionen starter op - så de ikke kommer til at skrive i det første felt før de selv vælger "søg".

Det første felt i "sagsoprettelse" er "CPRnr" - så kort fortalt vil jeg gerne have at det første de skal når de klikker på knappen er at søge efter et cpr nr.

Private Sub OpretSag_Click()
On Error GoTo Err_OpretSag_Click

    Dim stDocName As String
    Dim stLinkCriteria As String

    stDocName = "sagsoprettelse"
    DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_OpretSag_Click:
    Exit Sub

Err_OpretSag_Click:
    MsgBox Err.Description
    Resume Exit_OpretSag_Click
   
End Sub
Avatar billede mugs Novice
16. maj 2009 - 11:40 #1
Du skriver ikke om CPRnr i forvejen er oprettet, men er det tilfældet kan du bruge denne:

Dim VARa As String
VARa = InputBox(Prompt:="Indtast CPRnr.", Title:="Find CPRnr.", Default:="")
DoCmd.GoToControl "CPRnr"
DoCmd.FindRecord VARa, acEntire, False, , True, acCurrent, True
Avatar billede erlandsen Seniormester
16. maj 2009 - 12:13 #2
hej mugs!
jeg er desværre ikke en haj til VBA som du - så kan du sige mig om ovenstående skal ind i den "OpretSag_Click()" jeg allerede har - og hvis ja - hvor det skal ind?

jeg har allerede feltet CPRnr i formularen som "Etiket137"

mvh johnny
Avatar billede mugs Novice
16. maj 2009 - 12:40 #3
"feltet CPRnr i formularen som "Etiket137""

Det skullle gerne være et datafelt. 

Men prøv blot at åbne formularen med denne i din kommandoknap:

Dim VARa As String
docmd.openform "sagsoprettelse"
VARa = InputBox(Prompt:="Indtast CPRnr.", Title:="Find CPRnr.", Default:="")
DoCmd.GoToControl "CPRnr"
DoCmd.FindRecord VARa, acEntire, False, , True, acCurrent, True
Avatar billede erlandsen Seniormester
16. maj 2009 - 13:02 #4
Det fungerer fint, tak!
Men jeg kan se at det måske ikke løser hele mit problem alligevel...

vi er en virksomhed der hjælper kommuner med at få deres borgere i arbejde m.m.

vi har derfor en sagsstyrings database hvor vi opretter en sag hver gang vi har en borger inde - og da vi kan lave flere ting med borgeren - har vi også flere sager pr. borger - men vi har altid kun en aktiv sag.

jeg har lavet en tabel hvor vi opretter borgerne og en tabel hvor vi opretter sagerne - og af sagens natur kan borgerne kun optræde en gang i borgertabellen men flere gange i sagstabellen.

når vi nu har lavet denne smarte søgefunktion samtidig med at formularen åbnes - så er det ikke sikkert at det er den rigtige sag der kommer frem - da det ikke nødvendigvis er den der er aktiv.

da jeg har et felt i tabellen "sager" der indikerer om sagen er aktiv eller ej - så ville det være genialt hvis den samtidig med at søge efter cpr nr. også checkede om der var en aktiv sag.

hvorfor jeg skriver det på denne måde er, at man også nogle gange skal søge efter borgere der ikke har en aktiv sag - og så skal den bare finde den første record.
Avatar billede erlandsen Seniormester
16. maj 2009 - 13:56 #5
hæves til 100 points (mugs - jeg har sendt dig en intern besked)
Avatar billede mugs Novice
16. maj 2009 - 19:29 #6
Private Sub Kommandoknap20_Click()
Dim VARa As String
VARa = InputBox(Prompt:="Indtast CPRNR.", Title:="Find CPRNR.", Default:="")
DoCmd.GoToControl "CPRNR"
DoCmd.FindRecord VARa, acEntire, False, , True, acCurrent, True
Me.Filter = "aktiv = True"
Me.FilterOn = True
End Sub

hvor aktiv er et felt (Ja/Nej) der er sat til True hvis posten er aktiveret. Det betyder, at du kun vil se poster der matcher dit søgekriterie (CPRNR) og finder den post der er aktiv.
Avatar billede mugs Novice
16. maj 2009 - 21:30 #7
Ovennævnte kode finder det indtastede CPRnr og derefter filtrerer den alle poster, men i dette eksempel, skal der 2 kriterier til. Først findes CPRnr og derefter filtreres de fundne poster til aktiv = true. Så filteret skal modificeres lidt:

Me.Filter = "CPRNR = '" & Me!CPRnr & "' And aktiv = True"
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