![]() |
Datenbank: DBase • Version: xx • Zugriff über: Apollo 6.1
dBase Datenbank dauerhaft verbinden mit Apollo
hi
schreibe gerade ein Programm welches aus einer XML datei verschiedene ID´s ausließt und diese dann an eine Funktion übergibt, welche eine DB connection herstellt und diese werte dann prüft. Jedoch öffnet er bei jedem funktionsaufruf die DB was bei 5000 zugriffen zuviel ist. Nun würde ich gerne eine funktion/ procedure schreiben, welche meine DB beim Programmstart öffnen und offen lässt und erst beim beenden wieder schließt. Das ganze soll in delphi mit Apollo realisiert werden und greift auf eine dBase DB zu. hier ist der Code den ich bissher geschrieben habe. hier wird bei jedem übergebenem Node die DB geöffnet und danach geschlossen.
Delphi-Quellcode:
Wäre nett wenn Ihr mir helfen könntet.
//Datenbanken testen
procedure TForm1.DBtestID(Node: TdomNode); var Elem: TDomElement; id: String; begin if (node.nodeName = 'XX') then begin elem:= node.findFirstChildElement; while (elem <> nil) do begin if (Elem.nodeName = 'unterknoten') then begin id:= elem.getAttributeLiteralValue('id'); id:= RightStr(id,length(id)-6); Elem:= elem.findNextSiblingElement; TestID(id); //aufruf der proedure TestDB end; end; end; end; //Öffnet eine DB und prüft ob ID in DB vorhanden ist und gibt die falsche ID aus procedure TForm1.TestID(id: String); var test: String; begin ApolloTable1.Active:= false; ApolloTable1.Filtered:= False; ApolloTable1.Filter:= 'id= ' + queryEncode(id, 16); ApolloTable1.Filtered:= True; ApolloTable1.Open; test:= ApolloTable1.FieldByName('wort').AsString; if (test = '') then begin Label1.Caption:= 'zu folgenden ID´s existieren keine Einträge'; ListBox1.Items.Append(id) end; end; VG Verrückter |
Re: dBase Datenbank dauerhaft verbinden mit Apollo
Ich zwar etwas Off-Topic, aber: Muss es Apollo sein.
Selbst haben wir (mit älteren Versionen) katastrophale Erfahrungen und wenn Du diesen aktuellen ![]() |
Re: dBase Datenbank dauerhaft verbinden mit Apollo
Hi,
Du mußt doch bloß die Datenbank vor Deiner while-Schleife öffnen.
Delphi-Quellcode:
Ist die Table indiziert ? Wenn ja ist ein Seek wesentlich schneller als ein Filter.
//Datenbanken testen
procedure TForm1.DBtestID(Node: TdomNode); var Elem: TDomElement; id: String; begin ApolloTable1.Active:= True; if (node.nodeName = 'XX') then begin elem:= node.findFirstChildElement; while (elem <> nil) do begin if (Elem.nodeName = 'unterknoten') then begin id:= elem.getAttributeLiteralValue('id'); id:= RightStr(id,length(id)-6); Elem:= elem.findNextSiblingElement; TestID(id); //aufruf der proedure TestDB end; end; end; ApolloTable1.Active:= false; end; //Öffnet eine DB und prüft ob ID in DB vorhanden ist und gibt die falsche ID aus procedure TForm1.TestID(id: String); var test: String; begin ApolloTable1.Filtered:= False; ApolloTable1.Filter:= 'id= ' + queryEncode(id, 16); ApolloTable1.Filtered:= True; test:= ApolloTable1.FieldByName('wort').AsString; if (test = '') then begin Label1.Caption:= 'zu folgenden ID´s existieren keine Einträge'; ListBox1.Items.Append(id) end; end; Gruß Frank |
Re: dBase Datenbank dauerhaft verbinden mit Apollo
hi
erst mal danke für die Lösung. Habs gestern noch hin bekommen und zwar hab ich die öffnen funktion der DB auf die erste Buttonclick funktion gelegt, sodass der user sobald er die XML datei öffnet auch automiatisch die entsprechende DB öffnet und mit dem schließen Button sie danach wieder disconnected. Die Tabelle ist nicht indiziert. Aber so groß ist die DB nicht dass es auswirkungen auf die Laufzeit hat... hoff ich mal :-D Gruß verrückter |
Re: dBase Datenbank dauerhaft verbinden mit Apollo
Wenn die Datenbank nicht gleichzeitig für andere zur Verfügung stehen muß
besteht auch noch die Möglichkeit sie exclusiv zu öffnen was eine Menge an Geschwindigkeit ausmacht. Gruß Frank |
Re: dBase Datenbank dauerhaft verbinden mit Apollo
Hab gerade eine anderes Problem vielleicht kannst Du mir ja da schnell nen ansatz geben:-) bin dabei einen String aus einer Stringliste zu suchen wie geh ich da ran ??. For schleife über die Länge der der Stringlist?? und dann mit .pos??
|
Re: dBase Datenbank dauerhaft verbinden mit Apollo
Zitat:
Suchst Du kompletten Eintrag in String-Liste? |
Re: dBase Datenbank dauerhaft verbinden mit Apollo
Schau mal in die Hilfe bei TStringList und die Function IndexOf.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz