17. maj 2004 - 23:25Der er
10 kommentarer og 1 løsning
Fritekstsøgning i accesdatabase
Jeg sidder med en lille database som indeholder nogle felter.. her skriver jeg kun nogle få af dem: kundenr, firmanavn og kontakt_fornavn... Hvis jeg skal søge i den fra min Form.. med lidt fritekst.. hvordan gør jeg det... fatter det ikke rigtigt.. men er også lidt ny på området.. jeg kan sagtens bladre i alle filerne fra min Form osv... har prøvet med at lave en button:
rivate Sub Command2_Click() strSQL = "SELECT * FROM Historik WHERE firmanavn Like '*" & Text15.Text & "*'" End Sub
min tekstboks ser således ud:
Private Sub Text15_Change()
End Sub
min mening er så at den skal hente den fil fra databasen hvor firmanavnet passer med det jeg skriver i "tekstboksen"...
istedet for at hente alle records som den jo bare gør nu.. hvor man bare kan bladre mellem dem alle..
Jeg bladrer i tekstfelterne i øjeblikket med:
Private Sub Data1_Validate(Action As Integer, Save As Integer)
jeg har i min form nogle "Textboxe" som passer til felterne i min accesdatabase. dvs. at min database "Historik" har felterne "kundenr" og "firmanavn". altså har jeg to textboxe i min form. jeg kan også sagtens se data, men kun bare sådan fortløbende så jeg kun kan bladre i dem... gad godt at ku søge på et firmanavn, og så sku den vise det firmanavn jeg søgte på... og så vise det i mine textboxe...
Det ku også være cool, hvis man ku lave sådan en "Find" knap som åbnede en lille boks hvor man så ku vælge 'datafeldt' <> 'søgetekst'. det ku være liret.. men nok lidt overdrevet svært
jeg ville smide en listbox ind, hvor du kan hente de forskellige forekomster ind i, f.eks. søger du på s så er der måske 3 styks, der giver du den et nyt index i din listbox der svare til et kundenummer, så når du trykker på en forekomst så vises det i dine textboxe........
du henter data ind i din listbox med: strSQL = "SELECT * FROM Historik WHERE firmanavn Like '*" & Text15.Text & "*'"
If Not rs.EOF Then rs.MoveFirst Do While Not rs.EOF lstFirma.AddItem rs!dbFirma lstFirma.ItemData(lstNavn.NewIndex) = rs!dbKundenummer rs.MoveNext Loop End If
Når du så laver en click på listboxen så:
rs.MoveFirst Do While rs.EOF = False If rs!dbKundenummer = lstFirma.ItemData(lstFirma.ListIndex) Then txtFirma.Text = rs!dbFirma txtKundenummer.Text = rs!dbKundenummer txtLand.Text = rs!dbLand txtTelefonnummer.Text = rs!dbTelefonnummer txtMobilnummer.Text = rs!dbMobilnummer txtEmail.Text = rs!dbEmail txtHjemmeside.Text = rs!dbHjemmeside txtFoedselsdag.Text = rs!dbFoedselsdag End If rs.MoveNext Loop
hmmm... jeg er måske lidt dum.. hehe.. men ku ikke rigtigt finde ud af det..
men det jeg vil er at jeg starter min form.. altså med f5.... når jeg har startet den viser den altså lidt forkortet.. to textboxe.. 'kundenr' og 'firmanavn'... her henter den de data jeg har i min acces-database... jeg kan så bladre frem og tilbage mellem de records jeg så har oprettet... men hvis jeg nu havde 100 records i databasen ville det være smart hvis jeg ku søge på et firmanavn, og så sku den gå til det firmanavn jeg søgte på... og så vise det i de samme textbokse som jeg normalt bladrer i... jeg skal også kunne bladrer videre igen... hvis jeg nu havde nogle forskellige firmanavne i databasen... fx: aa og bb og cc og dd og ee... når jeg starter min form med f5 starter den med at vise dem i alfabetisk rækkefølge... det ku jo så være cool hvis jeg ville se firmaet ee's data... så ku jeg bare søge på "ee", og så hopper den direkte til firmaet ee... hmmmmm lyder måske lidt mystisk.. men jeg prøver da
Hej Tubber... det er super cool det du har sendt mig.. det må jeg sige... men det er godt nok lidt mere avanceret at rode med.. he he.. gider du ikke lige sende et "svar" så du ka få lidt point.... og der er flere point på vej til dig hvis du gider at lave lidt flere funktioner og maile det til mig igen... bare sådan lidt med fx.. hvis jeg skal tilføje en ny, hvor den skal hente det højeste kundenr og lægge 1 til, så den nye der bliver oprettet får et nummer højere end det højeste der ligger i databasen.... ell.. fx bare bladre frem og tilbage ell. slette.. el hvad du nu lige kan finde på..... Jeg er altså lidt grøn.. men det er bare så jeg kan få et lidt bedre overblik over hvordan det hænger sammen.... for det er helt sikkert en meget mere cool måde at lave det på.. sådan som du gør... lidt mere profff... ell.. 1000000 gange mere proff.
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.