Avatar billede fuskeren Nybegynder
01. februar 2005 - 15:07 Der er 17 kommentarer og
1 løsning

Søgeformular

Hej alle
Jeg har med en del hjælp fra mange gode folk på Eksperten fået skruet en (efter min mening) hæderlig database sammen. Der mangler lidt finish og at få lavet en fornuftig søgemulighed. Databasen har en central formular (FRMgrunddata). Her vil jeg gerne have en lille søgeformular som popper op når der trykkes på en SØGknap i FRMgrunddata. Søgeformularen skal kun have et felt (NAVN), en OK-knap og evt. en cancel-knap (som i en msgbox). Når det navn jeg søger er indtastet i søgefeltet, skal søgeformularen lukke ved tryk på OK-knappen, og de poster der er resultatet af søgningen vises i FRMgrunddata. En anden løsning kan naturligvis også bruges, men denne vil være mest optimal.

Jeg har læst alle svar på eksperten der lugtere lidt af "søgeformular" igennem, men jeg kunne ikke af denne vej løse problemet. Er der nogle der kan hjælpe mig med denne min første lidt større database.
Avatar billede mugs Novice
01. februar 2005 - 15:25 #1
Lav en kommandoknap, der ved et tryk åbner en inputboks hvori du indtaster et navn. Find herefter den indtastede tekststreng med Do.cmd.find Record.

Ikke særlig fyldestgørende, men har ikke så meget tid lige nu.
01. februar 2005 - 16:18 #2
Prøv denne (som Mugs også nævner):

Dim Svar as string
Svar = Inputbox("Angiv navn")
If Svar = "" then exit sub
Forms!FRMgrunddata.Filter = "Navn = '" & Svar & "'"
Forms!FRMgrunddata.Filteron = true
Avatar billede fuskeren Nybegynder
02. februar 2005 - 09:08 #3
Tak mugs og thomas jeg skal afprøve det og se om jeg kan finde ud af at lave en inputboks, jeg vender tilbage - har lidt travlt i dag.
Avatar billede fuskeren Nybegynder
02. februar 2005 - 11:36 #4
Hej igen
Jeg har prøvet at indsætte thomas lille script under "ved click" hendelsen på en knap. Det ser således ud:

Private Sub Kommandoknap51_Click()
Dim Svar As String
Svar = InputBox("Søg artsnavn")
If Svar = "" Then Exit Sub
Forms!FRMgrunddata.Filter = "1Artsnavn = '" & Svar & "'"
Forms!FRMgrunddata.FilterOn = True
End Sub
Feltet der skal søges i hedder 1Artsnavn som er i formularen FRMGrunddata.

Jeg får en fin inputboks men jeg tror ikke at den kan finde rette felt at søge i, jeg får en fejlmeddelse "Du kan ikke tildele en værdi til dette objekt". Har i nogle forslag ?
02. februar 2005 - 11:39 #5
hvilken linie giver denne fejl? (hvis du trykker Debug)
Avatar billede fuskeren Nybegynder
02. februar 2005 - 11:47 #6
den giver fejl i denne linie
Forms!FRMgrunddata.Filter = "1Artsnavn = '" & Svar & "'"
02. februar 2005 - 11:49 #7
hmm det lyder mærkeligt...!?

Kan du kontrollere, at formularen virkelig hedder "FRMgrunddata" i databasevinduet, og at den ikke er en underformular til en anden formlar
Avatar billede fuskeren Nybegynder
02. februar 2005 - 12:16 #8
Jeg har nu kontrolleret navne m.m., og de er rigtige. Formularen hedder "FRMGrunddata" og feltet der skal søges på hedder "1Artsnavn". Kan det betyde noget at formularens datakilde er en tabel (TBLData) og ikke en forespørgsel.
02. februar 2005 - 12:32 #9
om det er en tabel eller forespørgsel har ingen betydning.

Har du mulighed for at sende databasen (zippet) til mig? Så skal jeg lige kigge på den. Jeg tror ikke, at vi kommer meget længerer her...
Avatar billede fuskeren Nybegynder
02. februar 2005 - 12:42 #10
Hej igen thomas
Jeg har løst problemet, der skulle kantede parenteser om feltnavnet [1Artsnavn]. Søgemuligheden køre fint nu, men jeg kan se der ikke er mulighed for søgning på en del af et navn ved at bruge *, kan der laves en lille tilføjelse til koden så det kan lade sig gøre.

Efter søgningen bliver det nok nødvendigt med en "vis alle poster" knap som fungere som den i menulinien. Har du forslag til dette.
02. februar 2005 - 12:44 #11
argh....ja selvfølgelig! Den kan ikke lide 1-tallet forrest!

Godt, at du fandt ud af det :o)

Fjern filter:

Forms!FRMgrunddata.FilterOn = false
Avatar billede fuskeren Nybegynder
02. februar 2005 - 12:57 #12
Perfekt thomas Det dur bare, du har redet min uge.
Har du et forslag til en ændring søgemuligheden ved at en del af søgestrengen kan erstattes af *, kan der laves en lille tilføjelse til koden ?
02. februar 2005 - 12:59 #13
ja da:

Forms!FRMgrunddata.Filter = "[1Artsnavn] Like '" & Svar & "'"

Brugeren skal selv skrive *

Ved nedenstående løsning er * altid med:

Forms!FRMgrunddata.Filter = "[1Artsnavn] Like '*" & Svar & "*'"
Avatar billede fuskeren Nybegynder
02. februar 2005 - 13:25 #14
kanon thomas det virker !!!!!!
1000 tak for hjælpen, du har ærligt fortjent dine point.
Dog har jeg et sidste spørgsmål, du kan svarer ja eller nej, hvis ja vil jeg stille det med point i halen.
Er det muligt at ændre på inputboksens størrelse (lidt for stor og klodset) og især inputfeltes længde. Et inputfelt på 20 tegn var rigeligt.
02. februar 2005 - 13:28 #15
Nej, inputboksen er fast defineret og kan ikke ændres.

Jeg har derfor selv lavet min egen inputboks. Er du interesseret i den?
Avatar billede fuskeren Nybegynder
02. februar 2005 - 13:32 #16
ja meget
02. februar 2005 - 13:32 #17
Jeg har den liggende på min hp her: http://www.makeiteasy.dk/eksempler/Downloads.htm

Den hedder "Brugerdefineret InputBox med komboboks" og benytter en komboboks i stedet for inputboks (for brugervenlighedens skyld). Denne kan du evt selv prøve at lave om, hvis du kun vil nøjes med en tekstboks.
Avatar billede fuskeren Nybegynder
02. februar 2005 - 13:36 #18
tak skal du have, jeg glæder mig til at komme i gang med den i aften. Her kommer dine point.
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