09. august 2003 - 14:24Der 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.
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.
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.
Synes godt om
Slettet bruger
10. august 2003 - 13:32#5
Mange tak. Jeg vil kigge lidt på det, og så vender jeg tilbage.
Synes godt om
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.
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:
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.