AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TDBF-Komponente

Ein Thema von roth · begonnen am 5. Apr 2011 · letzter Beitrag vom 8. Apr 2011
Antwort Antwort
roth

Registriert seit: 25. Nov 2005
Ort: -
72 Beiträge
 
#1

TDBF-Komponente

  Alt 5. Apr 2011, 15:22
Datenbank: dbf • Version: 1 • Zugriff über: tdbf
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:
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;
Vielen Dank!
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

AW: TDBF-Komponente

  Alt 5. Apr 2011, 17:27
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.
Andreas
  Mit Zitat antworten Zitat
roth

Registriert seit: 25. Nov 2005
Ort: -
72 Beiträge
 
#3

AW: TDBF-Komponente

  Alt 8. Apr 2011, 13:19
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:
// 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);
denn wenn ich nur inserts mache ohne was reinzufüllen läuft es durch...

mfg
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

AW: TDBF-Komponente

  Alt 8. Apr 2011, 15:04
Also um Felder zu befüllen gibt es zwei sinnvolle Schreibweisen
Delphi-Quellcode:
FDbfFile['EinNumFeld'] := 0; // 1.)
FDbfFile.FieldByName('EinNumFeld').AsInteger := 0; // 2.)
Ich würde die Variante 1.) vorziehen, da weniger Tipparbeit.

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.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz