Avatar billede Slettet bruger
09. august 2003 - 14:24 Der er 9 kommentarer og
1 løsning

Formular - søgefelter - laves simpelt?

Hej

Jeg er ved at lave en database over kontaktpersoner. I den forbindelse vil jeg lave en formular, hvor det er muligt at slå personerne op. Formularen indeholder felter som "fornavn", "efternavn", "adresse" osv.
Det jeg ønsker der skal ske er:
Hvis der skrives i feltet fornavn skal den selv gætte på resten ud fra indholdet i databasen.
Når det rigtige navn er fundet skal de resterende felter komme frem
Det må ikke være muligt at rette i data
Hvis der er flere der hedder det samme skal de sorteres stigende efter efternavn.
Der skal kunne søges i alle felter, dvs. at hvis der skrives i efternavnsfeltet skal de andre komme frem.
Nu har jeg rodet med det rigtig længe og kan ikke forstå at der ikke skulle være en meget nem løsning på det, uden at skulle kaste sig ud i VBA.
Derfor håber jeg på at en eller anden kan fortælle mig hvordan jeg skal gøre.
På forhånd tak.
Avatar billede henrik13 Nybegynder
09. august 2003 - 15:18 #1
Hej
Uden VBA bliver det meget svært at lave.
Vh Henrik13
Avatar billede Slettet bruger
09. august 2003 - 16:02 #2
Hmmm - øv. Nåmen tak.
Avatar billede terry Ekspert
09. august 2003 - 23:24 #3
anthonsen>It squite easy to make a search routine, what makes it a more difficult is the fact that you want it to "guess" the rest of the text!
If you used combo boxes for the first name and last name then when you started entering text it would automatically find the first in the combo.
Avatar billede mugs Novice
10. august 2003 - 05:36 #4
Korrekt hvad terry skriver angående autoudfyld. En søgefunktion til en tekstfelt (her Felt1) kan evt. se således ud:

Dim SQLstr As String
Dim Felt1 As String
Dim MSG As String
Dim Svar As Integer
Dim Ctrl As Control
DoCmd.GoToControl "Felt1"
Felt1 = InputBox(Prompt:="Indtast strengen du søger:" & vbNewLine & vbNewLine, Title:="Find tekststreng")
Me.RecordsetClone.FindFirst "Felt1=  '" & Felt1 & "'"
While Me.RecordsetClone.NoMatch = True
If Me.RecordsetClone.NoMatch = True Then
Svar = MsgBox(Prompt:="Den søgte tekststreng findes ikke", Title:="Søgningen lykkedes ikke")
Exit Sub
End If
Me.RecordsetClone.FindFirst "Felt1=  '" & Felt1 & "'"
Wend
Me.Bookmark = Me.RecordsetClone.Bookmark
For Each Ctrl In Me
If Ctrl.Tag = "Tekst" Then
If Ctrl <> "" Then
SQLstr = SQLstr & "[" & Ctrl.Name & "] = '" & Ctrl & "' And "
End If
ElseIf Ctrl.Tag = "Tal" Then
If Ctrl <> "" Or Not IsNull(Ctrl) Then
SQLstr = SQLstr & "[" & Ctrl.Name & "] = " & Ctrl & " And "
End If
End If
Next Ctrl
SQLstr = Left(SQLstr, Len(SQLstr) - 5)
DoCmd.OpenForm "Form2", , , SQLstr

Når det ønskede er fundet, vil "Form2" blive åbnet visende de poster der opfylder søgekriteriet. form2 kan evt. være en fortløbende formular, så du evt. kan vælge mellem posterne.
Avatar billede Slettet bruger
10. august 2003 - 13:32 #5
Mange tak. Jeg vil kigge lidt på det, og så vender jeg tilbage.
Avatar billede Slettet bruger
13. august 2003 - 00:59 #6
Hej Nu er jeg tilbage igen og håber på at I vil hjælpe mig. Jeg har nu sat mig ind i de helt grundlæggende VBA rutiner og har leget lidt mere med Formulare.
Jeg mener at være nået frem til at jeg vil bygge min formular på en forespørgsel hvor fornavn og efternavn er comboboxe som terry foreslår. Men hvordan undgår jeg at når navnet i comboboxen ændres så ændres navnet i postsættet i stedet for at skifte til de data (efternavn, adresse mv) som hører til navnet? Og hvordan får jeg den til at søge i alle navnene i stedet for kun at kende det navn der hører til postsættet. Forstår i mig eller er jeg et rodehoved?
Ps. jeg kunne ikke få ovenstående kode til at virke.
Avatar billede mugs Novice
13. august 2003 - 05:54 #7
Ovenstående fungerer. Kan sende en testdb, når jer er hjemme fra arbejde. Blot læg din e-mail.

Når navnet i postsættet ændres, er det fordi du indtaster i en combo, der er tilknyttet dit postsæt. Se koden ovenfor, hvor du indtaster i en inputbox. Denne søgefunktion er lidt mere simpel:

Felt1 = InputBox(Prompt:="Indtast strengen du søger:" & vbNewLine & vbNewLine, Title:="Find tekststreng")
DoCmd.OpenForm "Form2"
Forms!Form2!Felt1.SetFocus
DoCmd.FindRecord Me!Felt1
Avatar billede Slettet bruger
13. august 2003 - 14:08 #8
Hej og tak.
Men jeg tror ikke jeg har fattet hvor jeg skal sætte koden ind, og hvor jeg skal ændre koden så den passer til min formular?
Avatar billede Slettet bruger
13. august 2003 - 14:09 #9
...og jeg vil meget gerne se en demo. Min mail anthonsen@webspeed.dk
Avatar billede mugs Novice
13. august 2003 - 16:12 #10
Eksempler sendt.
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