![]() |
Re: DBase (dbf) mit 3 Index-Dateien, aber werden nicht angez
Hab aktuell gerade einen Testlauf am laufen und so wie es aktuell aussieht dauert es über 6,5 Std. bis er komplett durch ist. Also falls jemand noch Vorschläge hat, bin für alles offen (Try-finally, und sonstiges zur Statusanzeige hab ich erstmal alles rausgenommen damit es übersichtler ist):
Delphi-Quellcode:
var
i, z : Cardinal; nr : Single; str : String; dbtxt : TStrings; begin steppi := 0; dbtxt := TStringList.Create; dbtxt.LoadFromFile(QuellDB); z := dbtxt.Count; with TTable.Create(nil) do begin DatabaseName := 'EinAlias'; TableName := ZielDB; Open; for i := 1 to z -1 do begin str := AnsiToIBMAscii(Copy(dbtxt[i], 1,12)); if Locate('ARTN', str, []) then Edit else Append; FieldByName('ARTN').AsString := str; FieldByName('ARTU').AsString := AnsiToIBMAscii(Copy(dbtxt[i],13,12)); FieldByName('ARTD').AsString := AnsiToIBMAscii(Copy(dbtxt[i],27,12)); FieldByName('TAUS').AsString := AnsiToIBMAscii(Copy(dbtxt[i],39, 1)); FieldByName('BEZE').AsString := AnsiToIBMAscii(Copy(dbtxt[i],53,12)); if Trim(Copy(dbtxt[i], 69,7)) <> '' then begin nr := StrToInt(Copy(dbtxt[i], 69,7)) div 100; FieldByName('VK').AsFloat := nr; FieldByName('EK3').AsFloat := nr; end else begin FieldByName('VK').AsFloat := 0; FieldByName('EK3').AsFloat := 0; end; FieldByName('BCODE').AsString := AnsiToIBMAscii(Copy(dbtxt[i],76, 1)); FieldByName('PCODE').AsString := AnsiToIBMAscii(Copy(dbtxt[i],77, 1)); if Trim(Copy(dbtxt[i],134,7)) <> '' then FieldByName('EK1').AsFloat := StrToInt(Copy(dbtxt[i],134,7)) div 100 else FieldByName('EK1').AsFloat := 0; if Trim(Copy(dbtxt[i],141,7)) <> '' then FieldByName('EK2').AsFloat := StrToInt(Copy(dbtxt[i],141,7)) div 100 else FieldByName('EK2').AsFloat := 0; Post; Application.ProcessMessages; end; Close; end; end; |
Re: DBase (dbf) mit 3 Index-Dateien, aber werden nicht angez
Hi,
wenn die Datenbank nicht gemeinsam (gleichzeitig) mit der anderen Anwendung geöffnet wird kannst du sie exclusiv öffnen das bringt richtig Geschwindigkeit. Gruß Frank |
Re: DBase (dbf) mit 3 Index-Dateien, aber werden nicht angez
Zitat:
|
Re: DBase (dbf) mit 3 Index-Dateien, aber werden nicht angez
Der Exclusive-Zugriff hat leider nicht wirklich was geändert ...
Aber ich hab jetzt XBase++ 1.1 aufgetrieben, nur leider kann ich irgendwie nix damit anfangen. Das einzige was ich gefunden habe sind 2 DLL-Dateien (DbfDbe.DLL u. NTXDbe.DLL) in einem Unterzeichnis des Programms. Ansonsten wird dort ja noch fast alles in DOS kompiliert etc und nur die Fenster kann man unter Windows zusammenbasteln. In den Code-Beispielen die dabei waren werden halt XBase-Befehle eingesetzt um auf die DBs zuzugreifen, aber das hilft mir irgendwie auch nicht weiter. Wie kann ich wohl die DB-Treiber nutzen? Ist es überhaupt so möglich? Alternativ bastel ich gerade an einer anderen Lösung. Und zwar das ich die Daten aus der DBF-Datei(100 MB) komplett in einen Paradox-DB übernehme (mit Index :)) dort dann die 230.000 Datensätze ver- und abgleiche und anschliessend die kompletten Daten wieder zurück in die DBF schreibe (die ich natürlich vorher ausleere). Und vom Programm das die DBF-DB dann nutzt, wird die DB dann sowieso neu reorganisiert. Dürfte zumindest schneller sein, als die vorherge Variante da diese nach letzten Schätzungen um die 8 Std. läuft ... |
Re: DBase (dbf) mit 3 Index-Dateien, aber werden nicht angez
Hi,
mit den XBase kannst du vergessen da wirst du keinen Chance haben. Was ich die anbieten könnte das du den Datenbankcode kapsels in einen extra Programm und ich das entsprechend mit Apollo compiliere. Gruß Frank |
Re: DBase (dbf) mit 3 Index-Dateien, aber werden nicht angez
ADS kann DBase3-Tabellen mit Clipper-, bzw XBase-Index. Also den NTX Dateien.
Hat r_kerber doch schon geschrieben. Also bei Extendetsystems mal den ARC32 runterladen, das ist die Datenbankoberfläche und Testen obs geht. Bei mir laufen die alten Clipper-Programme z. Teil auch noch, und mit meinen Delphiprogrammen greif ich auch auf die gleichen Tabellen und Index zu. Aber nicht vergessen: Diese Index müssen extra geöffnet werden. Und man muß wissen, welche Indexdatei zu welchet Tabelle gehört. Im Kopf der Indexdatei steht nur das Feld. Karsten |
Re: DBase (dbf) mit 3 Index-Dateien, aber werden nicht angez
Zitat:
Zitat:
![]() Hab vorher schon mal danach gesucht bin aber nur auf der Server-Variante gestossen und das diese mehrere 100€ kostet ... |
Re: DBase (dbf) mit 3 Index-Dateien, aber werden nicht angez
Hi,
Apollo kostet $379 ![]() War das andere was ich dir angeboten habe keine Alternative ? Gruß Frank |
Re: DBase (dbf) mit 3 Index-Dateien, aber werden nicht angez
Zitat:
Erstmal wäre das wohl eine super Alternative, aber wie soll ich das denn "kapseln" so das ich auch auf Änderungen der DB-Struktur reagieren kann? |
Re: DBase (dbf) mit 3 Index-Dateien, aber werden nicht angez
Hi,
hol dir doch die Eval-Version von Apollo du entwickelst und ich linkes es für dich. Ich weiß natürlich nicht wie statisch das X-Base-Projekt ist also wie oft du anpassen mußt oder umgekehrt sich deine Quelldaten ändern. Grüße Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:28 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