AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi [DBase] Tabelle mittels TTable erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

[DBase] Tabelle mittels TTable erstellen

Ein Thema von brechi · begonnen am 10. Sep 2008 · letzter Beitrag vom 1. Okt 2008
Antwort Antwort
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#1

[DBase] Tabelle mittels TTable erstellen

  Alt 10. Sep 2008, 14:40
Datenbank: DBASE • Version: 4/7 • Zugriff über: TTable
Folgendes Problem: Ich möchte eine DBase Tabelle (*.dbf) in Version 4 erstellen.
Dazu sollte eigentlich das TableLevel auf 4 gesetzt werden. Beim BDE-Admin unter Control-Panel->Configuration->Native->DBase ist ein Level von 7 angegeben.

Mittels:
Delphi-Quellcode:
  FTable.DatabaseName := ExtractFileDir(FileName);
  FTable.TableName := ExtractFileName(FileName);
  FTable.TableType := ttDBase;
  FTable.TableLevel := 4;
  FTable.FieldDefs.Clear;
  FTable.FieldDefs.Add('HALLO', ftFloat);
  FTable.CreateTable;
wird mir immer eine DBF erstellt in der höheren Version von den beiden die ich angegeben habe. D.h. Ist beim BDE-Admin "7" angegeben und bei TableLevel in Delphi der Wert "4" (obiges Beispiel) wird eine DBase in der Version 7 erstellt. (1. Byte der Datei gibt die Version an: 03=Version4; 04=Version7). Nur wenn bei beiden Einstellungen jeweils eine "4" steht, erhalte ich auch wirklich eine DBase 4 Datei. Jetzt darf ich aber die Einstellungen beim BDE-Admin NICHT ändern.

Mittels:
Delphi-Quellcode:
  FTable.DatabaseName := 'dBASE-Dateien';
  FTable.TableName := ExtractFileName(FileName);
  FTable.TableType := ttDBase;
  FTable.TableLevel := 4;
  FTable.FieldDefs.Clear;
  FTable.FieldDefs.Add('HALLO', ftFloat);
  FTable.CreateTable;
bekomme ich eine Tabelle die immer im DBase 4 Format ist. Dort kann ich aber den Ordner nicht setzten in dem diese gespeichert werden soll (d.h. der speichert diese immer in dem Ordner wo auch das Hauptprogramm liegt).

Wie bekomme ich nun eine DBase4 Tabelle OHNE den BDE-Admin DBase-Level zu verändern und OHNE SetCurrentDirecory von Windows.

Danke
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#2

Re: [DBase] Tabelle mittels TTable erstellen

  Alt 11. Sep 2008, 10:47
Ich upps mal weil es heute fertig werden soll. Wie kann ich eine dBASE 4 Tabelle mittels TTable erstellen? Wie machr ihr das? Ich hab jetzt ewig dran rumgesucht und bekomms einfach net hin, so schwierig kanns doch net sein. Oder bin ich einfach viel zu doof dafür?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: [DBase] Tabelle mittels TTable erstellen

  Alt 11. Sep 2008, 10:49
Wir arbeiten halt nicht mehr mit der BDE.
Markus Kinzler
  Mit Zitat antworten Zitat
Kuster Peter

Registriert seit: 3. Apr 2007
Ort: Zürich
136 Beiträge
 
Delphi 7 Professional
 
#4

Re: [DBase] Tabelle mittels TTable erstellen

  Alt 11. Sep 2008, 14:29
Warum nimmst Du nicht TDBF. Kannste einfach installieren und spricht die TDBF ohne BDE an. Ganz einfach.

http://tdbf.sourceforge.net/

Peter
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#5

Re: [DBase] Tabelle mittels TTable erstellen

  Alt 16. Sep 2008, 10:14
Danke dann müsste ich aber das Projekt ändern. Vielleicht für die nächsten.

Hab immerhin nun rausgefunden, dass bei ftString und ftBCD er Dbase4 Tabellen erstellt, erst bei ftFloat und ftInteger werden DBase7 Tabellen erstellt. Müsste also alles als BCD/String speichern anstatt Integer/Float, das würde erstmal reichen. Schön ist es aber nicht.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: [DBase] Tabelle mittels TTable erstellen

  Alt 16. Sep 2008, 10:16
Dir ist aber schon bewusst, das dein Projekt u.U. mit dem nächsten Windows-Update dann nicht mehr funktioniert?
Markus Kinzler
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#7

Re: [DBase] Tabelle mittels TTable erstellen

  Alt 16. Sep 2008, 10:22
Ist kein Problem, da hier auch noch mit Dos gearbeitet wird (dafür z.B. DBase 4 Dateien für den Zugriff). Wenn du aber irgendwo Infos dazu hast, bzw es darüber ne Diskussion gibt kannst mir gerne den Link posten bzw. mich aufklären warum es nicht mehr mit dem nächsten Windows Update funktionieren sollte.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: [DBase] Tabelle mittels TTable erstellen

  Alt 16. Sep 2008, 10:25
Die BDE ist nunmal seit D6 abgekündigt. Bei Vista kann (konnte) man diese nur mit Klimmzügen installieren. Auch unter Win2000 und XP gab/gibt es gewisse Probleme. TDbf greift direkt ohne Abhängigkeit zu. Alternativ halt ADO verwenden, aber keine BDE!
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von simmi
simmi

Registriert seit: 24. Nov 2004
Ort: Röbel/Müritz
112 Beiträge
 
Delphi XE5 Professional
 
#9

Re: [DBase] Tabelle mittels TTable erstellen

  Alt 1. Okt 2008, 14:22
Hallo,

leider ist es aber so, dass nicht immer alles ganz einfach auf etwas neues umzustellen ist. Ich hatte ein ähnliches Problem. Die BDE steht im Level 7 und die ODBC im Level 5. Ich habe das Problem über die Registry gelöst. Bedingung ist ein erlaubter Schreibzugriff.

Die Procedure in den Programmstart stellen und die Sache ist erledigt. Übrigens hat auch Word 2007 ein Problem damit eine dbf Datei als Datenquelle zu akzeptieren, wenn Sie im Level über 5 ist.

Delphi-Quellcode:
Procedure BDE_registry;
var regist: TRegistry;
  s : string;
  i : integer;

begin
  regist:=TRegistry.Create;
  regist.RootKey:=HKEY_LOCAL_MACHINE;
  if not regist.OpenKey('SOFTWARE\Borland\Database Engine\Settings\DRIVERS\DBASE\TABLE CREATE', false) then
     begin
      showmessage('Rechte nicht vorhanden');
      regist.closekey;
      regist.free;
      exit;
     end;
  {Der Wert kann nur als String gelesen werden - sonst Fehlermeldung}
  s:=regist.ReadString('LEVEL');
  i:=StrToInt(s);
  if i>5 then regist.WriteString('LEVEL','5');
  regist.Free;
end;
Uwe
  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 00:34 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