Avatar billede somaliomar Praktikant
06. september 2002 - 19:25 Der er 18 kommentarer og
1 løsning

Hurtigere søgefunktion i Access

Jeg har en database med mange data i. Jeg har derudover en formular som søger i informationerne med flg. kode:


Private Sub btnSearch_Click()
  Dim db As Connection
  Dim rs As New ADODB.Recordset

  Set db = CurrentProject.Connection
  rs.Open "Medlemmer", db

  Do
    If txtSearch.Text = rs![Navn] Then
      MsgBox "Søgeordet fundet!"
      Exit Do
    End If
  Loop While rs.EOF = False


  rs.Close
  db.Close
End Sub


Søgningen virker udemærket. Problemet er bare, at det tager lang tid at søge i de mange data. Så spørgsmållet er:
Er der nogle herinde, der ved hvordan man kan gøre søgningen hurtigere eller har en bedre søgealgoritme i Access?
Avatar billede terry Ekspert
06. september 2002 - 19:34 #1
You can use the Dlookup to find a specific value from a table.
But your code doesnt show what it is you intend doing with the record when found.
Avatar billede terry Ekspert
06. september 2002 - 19:35 #2
Dlookup function
Avatar billede somaliomar Praktikant
06. september 2002 - 19:36 #3
Can u give an example using the Dlookup function?
Avatar billede terry Ekspert
06. september 2002 - 19:37 #4
In ADO you can also us ethe FIND method

rs.Find "Navn = '" & txtSearch.Text & "'"
Avatar billede somaliomar Praktikant
06. september 2002 - 19:41 #5
I can't use the Find method in ADO. Don't ask me why, but I get an error when I try to use it.
Avatar billede terry Ekspert
06. september 2002 - 20:02 #6
So I dont suppose SEEK works either?
Do you have any indexes in your table?
Avatar billede somaliomar Praktikant
06. september 2002 - 20:09 #7
No, I do not.
Avatar billede somaliomar Praktikant
06. september 2002 - 20:09 #8
Yes you are right, seek don't works either!
Avatar billede terry Ekspert
06. september 2002 - 20:14 #9
INDEXES?
you can also use SQL to find a specific record

"SELECT * FROM Medlemmer where Navn ='" & txtSearch.Text & "'"
Avatar billede somaliomar Praktikant
06. september 2002 - 20:15 #10
How do i use in the form?
Avatar billede terry Ekspert
06. september 2002 - 20:15 #11
You should try adding at least one index (primary key) you may find it helps
Avatar billede somaliomar Praktikant
06. september 2002 - 20:17 #12
I have one primary key in my table its called ID
Avatar billede nih Novice
06. september 2002 - 20:58 #13
Dim db As Connection
  Dim rs As New ADODB.Recordset
  Dim strSQL As String
 
  Set db = CurrentProject.Connection
 
  strSQL = "SELECT * FROM medlemmer WHERE navn = '" & _
        txtSearch.Text & "'"
  rs.Open strSQL, db, adOpenDynamic
 
  If rs.EOF And rs.BOF Then
    MsgBox "no data found"
  Else
    MsgBox "data found"
  End If
  rs.Close
  db.Close


prøv det her
Avatar billede somaliomar Praktikant
06. september 2002 - 21:00 #14
Okay tester lige
Avatar billede somaliomar Praktikant
06. september 2002 - 21:30 #15
Det virker ihvertfald nu, efter nogle få justeringer hist og her.

nih >> Gider du lægge et svar, så du kan få pointene :)
Avatar billede nih Novice
06. september 2002 - 21:33 #16
Terry havde det rigtige svar 06/09-2002 20:14:52 - så jeg synes han skal have dem (he needs them :o))

Niels
Avatar billede somaliomar Praktikant
06. september 2002 - 21:35 #17
Okay, hvis du insisterer :)
Avatar billede somaliomar Praktikant
06. september 2002 - 21:40 #18
nih >> Mange tak for hjælpen
Avatar billede terry Ekspert
07. september 2002 - 13:55 #19
Thanks :o)
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