![]() |
Datenbank: dbf • Version: 1 • Zugriff über: tdbf
TDBF-Komponente
Hallo,
Ich habe folgendes Problem. Ich versuche einen Export zu schreiben in diverse .dbf Dateien. Die dbf-Dateien sind mit der Struktur schon vorhanden und leer in einem Verzeichnis abgelegt. Nun möchte ich diese Dateien abfüllen (siehe Code beispiel). Nun erhalte ich immer einen EOutOfMemory...Obwohl genügent speicherplatz vorhanden ist und ich auch keine memoryleaks habe... Zusagen ist das es ca. 35 Tabellen sprich .dbf-Dateien sind welche ich so abfülle. Jemand eine Idee oder schon erfahrungen mit in .dbf Files exportieren?
Delphi-Quellcode:
Vielen Dank!
FDbfFile := TDbf.Create(nil);
FDbfFile.FilePath := AFile.DirectoryName; FDbfFile.TableName := AFile.FileName; FDbfFile.ReadOnly := False; FDbfFile.Open; // Dann eine while schlaufe um die zu exportierenden Daten: it.First; while it.HasData do begin FDbfFile.Insert; // Dann hier ein Integer abfüllen FDbfFile.Fields.FieldByName(AName).AsInteger := 0; // Habe auch schon so probiert AValue = Int FDbfFile.SetFieldData(FDbfFile.Fields.FieldByName(AName), @AValue, True); it.Next; FDbfFile.Post; end; FDbfFile.Close; FDbfFile.Free; |
AW: TDBF-Komponente
Ich würde anstelle von .Insert die .Append Methode verwenden.
Der Unterschied zwischen diesen beiden Methoden ist zwar gering. Aber die TDBF-Komponente könnte auf die Idee kommen die neuen Datensätze tatsächlich immer als 1. Datensatz einzufügen, anstatt neue Datensätze am Ende anzuhängen. Dieses Einfügen am 1. Datensatz wäre fatal, weil alle Datensätze dann um einem Platz "nach hinten" rücken müssten. Das hätte zur Folge, dass bei jedem Einfügen die komplette DBF-Datei neu beschrieben würde. |
AW: TDBF-Komponente
mmh danke für den hinweis habe dies mal so geändert...leider kommt der Fehler immer noch :(
ich denke es liegt an der art der abfüllung:
Delphi-Quellcode:
denn wenn ich nur inserts mache ohne was reinzufüllen läuft es durch...
// Dann hier ein Integer abfüllen
FDbfFile.Fields.FieldByName(AName).AsInteger := 0; // Habe auch schon so probiert AValue = Int FDbfFile.SetFieldData(FDbfFile.Fields.FieldByName(AName), @AValue, True); mfg |
AW: TDBF-Komponente
Also um Felder zu befüllen gibt es zwei sinnvolle Schreibweisen
Delphi-Quellcode:
Ich würde die Variante 1.) vorziehen, da weniger Tipparbeit.
FDbfFile['EinNumFeld'] := 0; // 1.)
FDbfFile.FieldByName('EinNumFeld').AsInteger := 0; // 2.) In deinem Code gibt es die Variable "AName", die dort nicht gefüllt wird. Die Feldnamen müssen natürlich korrekt sein (Grossbuchstaben, max 10 Zeichen!), sonst wird das nix. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:25 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