Hallo, ich habe gerade mal die dBase Schnelligkeit getestet und war überrascht,
wie schnell doch gesucht wird, auch ohne Index. Die DB hat über 42000 Einträge
und ist ideal für solche Tests. Wo hat man schon so große Datenbanken, auch nur
schon über 1000 Sätze ?
Anbei ein kleines Programm und eine .zip - Datei, die die .dbf und die ursprüngliche
Textdatei enthält. In die Textdatei kann man reinschauen, um zu sehen, welche
Bezirkscodes (letztes Feld mit 2 Buchstaben) enthalten sind. Um sie hier aufzulisten
sind es zu viele. Einfach zum Probieren in den Windowseditor laden und scrollen.
Dann kann man mal mit dem Suchen beginnen.
Code
Declare Handle Grid, btn1, btn2, text1, edit1
Declare String spalten, such
Declare Long anz, ende
spalten = "POSTALCODE;0;120;STAAT;0;120;BEZIRK;2;80"
ende = 0
Window 600, 400
btn1 = Create("Button", %HWnd, "Suche", 10, 10, 60, 25)
btn2 = Create("Button", %HWnd, "Ende", 400, 10, 60, 25)
text1 = Create("Text", %HWnd, "Suche Bezirk", 10, 50, 120, 25)
edit1 = Create("Edit", %HWnd, "", 135, 50, 60, 25)
Grid = Create("Gridbox", %HWnd, spalten, 0, 10, 90, 340, 150)
db("Open", #1, $ProgDir + "ZIPCODE.DBF")
db("Use", #1)
WindowTitle Str$(&dbRecCount) + " Datensätze in Datenbank gefunden !"
WhileNot ende
WaitInput
If Clicked(btn1)
' Suche
such = GetText$(edit1)
If such <> ""
Suchen()
EndIf
ElseIf Clicked(btn2)
ende = 1
EndIf
EndWhile
db("Close", #1)
Proc Suchen
Declare Long Satz, String feld
db("go","|<")
ClearList Grid
WhileNot %dbeof
Satz = db("Seek", "BEZIRK", Trim$(Upper$(such)), 1)
If Satz > 0
AddString(Grid, db("Get", "POSTALCODE") + "|" + db("Get", "STAAT") + "|" + db("Get", "BEZIRK"))
EndIf
db("go",">")
EndWhile
EndProc
End
Alles anzeigen
Viel Spaß damit.