Autor Beitrag
colaka
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 200
Erhaltene Danke: 4

Win XP, W7
Delphi 2005 Prof.
BeitragVerfasst: Di 10.08.10 21:06 
Hallo,

ich lade täglich von den Servern meiner Lieferanten die Artikeldateien herunter, um aktuelle Preise und Verfügbarkeiten in meine WaWi einzufügen. Ein neuer Lieferant stellt mir jetzt eine DBF-Datei zur Verfügung. Beim Versuch, diese mithilfe der BDE zu öffnen, erscheint die Fehlermeldung "Indexdatei nicht vorhanden (Tabelle.MDX)". Mir wird aber nur eine DBF-Datei angeboten, keine MDX-Datei.

Meine Frage ist deshalb:
Gibt es eine Möglichkeit, diese Fehlermeldung zu umgehen? Ich muß anschließend zum Auslesen der Preise usw. aber schon auf die einzelnen Felder zugreifen können.
Oder gibt es eine Möglichkeit, die fehlende MDX-Datei neu zu erzeugen? Das habe ich schon versucht mit
Table.exclusiv := true;
DBIRegenindexes(Table.handle);
Das funktioniert aber nicht.

Danke Ebi
Reinhard Kern
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: Mi 11.08.10 00:59 
user profile iconcolaka hat folgendes geschrieben Zum zitierten Posting springen:
...
Oder gibt es eine Möglichkeit, die fehlende MDX-Datei neu zu erzeugen? Das habe ich schon versucht mit
Table.exclusiv := true;
DBIRegenindexes(Table.handle);
Das funktioniert aber nicht.


Hallo,

soweit ich mich erinnern kann, geht die Indexstruktur bei DBase NICHT aus der DBF-Datei hervor, die enthält nur die Daten. Um einen Index aus vorhandener DBF zu erzeugen, muss man daher explizit angeben, was indiziert wird, und zwar in Form eines DBase-Ausdrucks. Im einfachsten Fall ist das ein Feldname. Daher kann eine Funktion wie DBIRegenindexes garnicht funktionieren, sie weiss ja nicht was sie tun soll.

Man kann das natürlich mit DBase IV unter DOS erledigen, oder man schreibt ein Programm dafür mit Hilfe einer DBF-Library. Ich habe CodeBase benutzt, um Clipper-Indexe neu zu erstellen.

Gruss Reinhard
dummzeuch
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 593
Erhaltene Danke: 5


Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
BeitragVerfasst: Fr 13.08.10 22:19 
user profile iconcolaka hat folgendes geschrieben Zum zitierten Posting springen:

Beim Versuch, diese mithilfe der BDE zu öffnen, erscheint die Fehlermeldung "Indexdatei nicht vorhanden (Tabelle.MDX)". Mir wird aber nur eine DBF-Datei angeboten, keine MDX-Datei.

Meine Frage ist deshalb:
Gibt es eine Möglichkeit, diese Fehlermeldung zu umgehen?


in der DBF-Datei wird vermutlich auf einen externen Index verwiesen, den Dein Lieferant nicht mitliefert. Da kommt die BDE nicht dran vorbei. Du hast folgende Moeglichkeiten:


  1. Deinen Lieferanten bitten, die DBF ohne diesen Verweis zur Verfuegung zu stellen (d.h. er muss vor der Weitergabe den Index der Datei loeschen)
  2. Mit DBase den Index "loesen", danach kann die DBF-Datei dann mit der BDE gelesen werden.
  3. Den Header der DBF-Datei patchen, so dass der Verweis rausfliegt. Dazu muss das Byte an Position 28 auf 0 gesetzt werden (wenn ich das noch richtig im Kopf habe).