![]() |
Datenbank: Paradox • Version: 4 • Zugriff über: BDE
dbf Tabelle per BatchMove füllen
Hallo DPler
Ich möchte eine dbf Tabelle per BatchMove mit Daten aus einer Tabulator-getrennten Quell Datei füllen. Hier mein Ansatz:
Delphi-Quellcode:
Leider preßt BatchMove alle Datensätze in ein Feld.
procedure TForm1.Button1Click(Sender: TObject);
begin with Table1 do begin Active := false; DataBaseName := 'C:\'; TableName := 'Quell.txt'; TableType := ttASCII; Table1.Open; end; with Table2 do begin Active := false; DataBaseName := 'C:\'; TableName := 'Ziel.dbf'; TableType := ttDbase; end; with Table2.FieldDefs do //Benenne Tabellenfeld begin Clear; Add('Feld001', ftString, 50, false); Add('Feld002', ftString, 250, False); end; Table2.CreateTable; //Erzeuge Tabelle Table2.BatchMove(Table1, batAppend); Form1.Close; end; Also wie mache ich BatchMove begreiflich den Tabulator als Feldtrennzeichen zu verwenden. |
AW: dbf Tabelle per BatchMove füllen
Hier scheinen Tabs nicht als Feldtrenner erkannt zu werden.
Btw: -Paradox <> dBase -die BDE ist total veraltet |
AW: dbf Tabelle per BatchMove füllen
Datenbankdateien direkt unter "C:\". Du kennst scheinbar Vista/Win7 auch nur vom hörensagen bzw. schaltest generell UAC ab?
|
AW: dbf Tabelle per BatchMove füllen
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
da gab es vor Urzeiten mal eine Schrift, wie der TXT-Treiber mit der BDE zu benutzen ist, hab ihn mal angehängt. Gruß Peter |
AW: dbf Tabelle per BatchMove füllen
Zitat:
was aber hat das mit Vista oder Win7 zu tun? Anmerkung: Quell.txt ist eine AnsiDatei BatchMove spricht aber von ASCII. Bringt mich zur Frage: Ist BatchMove überhaupt geeignet ?? |
AW: dbf Tabelle per BatchMove füllen
Schade, daß es niemanden gibt der zu diesem Thema etwas zu sagen hat.:cry:
|
AW: dbf Tabelle per BatchMove füllen
Hast du Dir schon mal den Inhalt der Table1 angeschaut. Wird die in einem Grid richtig dargestellt? Kannst Du normal auf die Felder zugreifen, also getrennt?
|
AW: dbf Tabelle per BatchMove füllen
Ich habe keine Probleme mit der Quell.txt. Sie ist nur viel zu groß für ein Grid. Dafür benötige ich wenigstens 4 Stringgrids. Also geviertelt und in ein Stringgrid geladen...
Ich hatte die Hoffnung, daß das Ganze mit BatchMove sich wesentlich beschleunigen läßt (Alles in einem Schritt), aber der Tabulator wird halt nicht als Trennzeichen erkannt. BatchMove lädt wie bereits gesagt alle Datensätze in ein Feld. Aber in affenartiger Geschwindigkeit. |
AW: dbf Tabelle per BatchMove füllen
Ich weiß nicht, ob wir uns richtig verstehen.
Wofür willst Du 4 String Grids? Was ist zu groß? Wenn das Grid nicht auf den Monitor passt, brauchst Du vielleicht einen größeren Monitor?! :stupid: Meine Frage war, ob deine Table1 richtig gelesen wird, also deine Batchmove Quelle. Wenn die schon falsch geöffnet wird, kann BatchMove auch nichts dafür.
Delphi-Quellcode:
Ich meine:
with Table1 do
begin Active := false; DataBaseName := 'C:\'; TableName := 'Quell.txt'; TableType := ttASCII; Table1.Open; end; Hast Du da einmal ein DBGrid drangebunden, werden deine CSV Daten via Table1 richtig dargestellt? |
AW: dbf Tabelle per BatchMove füllen
Zitat:
Achso, du meinst: von DBGrid nach dbf wandeln, dafür gibt es ja hier Beispiele. Das ganze hebelt aber das Thema BatchMove aus. Oder nicht? |
AW: dbf Tabelle per BatchMove füllen
Nein, das meinte ich nicht.
Hast Du Dir mal die Datei von peterlepan angeschaut oder hier nach Batchmove gesucht? Was Du schreibst klingt zumindest nicht so. Zum Üben würde ich Dir empfehlen, eine bestehende DBase oder Paradox Datei nach CSV zu exportieren. Dabei entsteht von allein eine Schema Datei, an die Du Dich halten könntest. Die ganze Technik ist aber von vorgestern und Du solltest es vielleicht besser anders versuchen. (JetEngine oder so) |
AW: dbf Tabelle per BatchMove füllen
Zitat:
|
AW: dbf Tabelle per BatchMove füllen
Zitat:
![]() |
AW: dbf Tabelle per BatchMove füllen
Ja, natürlich Entschuldigung
|
AW: dbf Tabelle per BatchMove füllen
Ich habe mich mittlerweile eine Dbase schemadatei beim Umwandeln einer dBase Tabelle erhalten.
Diese Sch-Datei wurde angepaßt auf die Feldgrößen meiner Quell.txt, Der Feldtrenner wurde mit angegeben und dennoch funktioniert das nicht. BatchMove erkennt zwar die Feldgrößen der Ziel.dbf, quetscht aber dennoch alles in Feld001. Frage: 1. Trennzeichen ist ein Tabulator wie muß ich den angeben? Vermutlich als Ascii Zeichen (#09). 2. Die Quell.txt ist eine Ansi-Datei. Wie kann ich das ordnungsgemäße Umwandeln der Umlaute erreichen? Mit BatchMove.Transliterale ? |
AW: dbf Tabelle per BatchMove füllen
Der Delimiter wird nicht (wie in einigen Anleitungen gezeigt) per # Codierung angegeben, sondern als Klartext. Wenns richtig gemacht wurde, kann man im Hexeditor hinter dem "=" den Tab Code 9 sehen.
Die gesamte Codierung der Datei kann man notfalls vor dem Import ändern, gute Editoren erlauben diverse Umkodierungsvarianten. |
AW: dbf Tabelle per BatchMove füllen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo DPler,Hallo blutiger Anfänger,
Anbei eine Konvertierdatei die deinen Ansprüchen wohl genügt. Leider zeigt diese Datei einen EinvalidErrorPointer, damit kenne ich mich nicht aus. Ich hoffe es gibt auf DP einige Cracks, die diesen Fehler beseitigen können. |
AW: dbf Tabelle per BatchMove füllen
Hallo
Ich habe diesen Fehler auch.
Delphi-Quellcode:
Durch das hin und herkopieren von( with Table2 do...)
with Table2 do begin
FieldDefs.Clear; IndexDefs.Clear; end; {Get list of all field types in Filename (ASCII), store in Fields} EnumerateFieldTypes(Filename, Fields); {Write schema file} AssignFile(Fil, Copy(Filename,1,Pos('.',Filename)-1) + '.SCH'); hinter den Aufruf (EnumerateFieldTypes...) wird meiner Ansicht nach klar, daß der Fehler in der Routine (EnumerateField...) liegt. Aber den Fehler zu beseitigen, fehlt mir jede Kenntnis. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:18 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-2025 by Thomas Breitkreuz