Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Erstellen eine Indexdatei für DBASE Datenbank (https://www.delphipraxis.net/14857-erstellen-eine-indexdatei-fuer-dbase-datenbank.html)

Carlos1997 16. Jan 2004 19:35


Erstellen eine Indexdatei für DBASE Datenbank
 
Hallo,
ich habe ein Problem mit einer älteren Delphi4 Datenbankanwendung.
Ich öffne eine DBASE Datenbank mit Table1 und Indexdatei.
Leider ist die Indexdatei defekt oder nicht mehr in Ordnung.
Nun möchte ich eine Abfrage programmieren die überprüft ob die
Indexdatei noch vorhanden ist, wenn nicht soll sie neu erzeugt
werden.

Beispiel:
Delphi-Quellcode:
  Table1.TableName := 'MUSTER.DBF';
  Table1.Exclusive := True;
  If NOT FileExists('MUSTER.MDX') Then Begin
    Table1.IndexName := '';
    Table1.ReadOnly := False;
    Table1.Active := True;
    Table1.AddIndex(Dateiname,'DATUM',[ixPrimary]);
    Table1.Active := False;
  End;
Leider ist hierfür die Funktion AddIndex nicht die richtige.
Für einen Lösungsvorschlag wäre ich dankbar.

:wall: http://www.delphipraxis.net/images/smiles/wall_bash.gif
ouch!

[edit=r_kerber]Delphi-Tags gesetzt. Mfg, r_kerber[/edit]

r_kerber 16. Jan 2004 20:22

Re: Erstellen eine Indexdatei für DBASE Datenbank
 
Hallo Carlos1997,

zunächst erst mal willkommen in der Delphi-Praxis.
Ein Blick in die OH hätte Dir folgendes Beispiel gezeigt!
Delphi-Quellcode:
with Table1 do begin
  Active := False;
  DatabaseName := 'DBDEMOS';
  TableType := ttParadox;
  TableName := 'CustInfo';

  { Vorhandene Tabelle nicht überschreiben }

  if not Table1.Exists then begin
    { Die Tabellenkomponente darf nicht aktiv sein. }
    { Zuerst Typ der Tabelle beschreiben und }
    { ihr einen Namen zuweisen. }
    { Danach die Felder der Tabelle definieren. }
    with FieldDefs do begin
      Clear;
      with AddFieldDef do begin
        Name := 'Field1';
        DataType := ftInteger;
        Required := True;
      end;
      with AddFieldDef do begin

        Name := 'Field2';
        DataType := ftString;
        Size := 30;
      end;
    end;
    { Nun die Indizes definieren }
    with IndexDefs do begin
      Clear;
      { Der erste Index hat keinen Namen,
      { da er ein Paradox-Primärschlüssel ist }
      with AddIndexDef do begin
        Name := '';
        Fields := 'Field1';
        Options := [ixPrimary];
      end;
      with AddIndexDef do begin

        Name := 'Fld2Indx';
        Fields := 'Field2';
        Options := [ixCaseInsensitive];
      end;
    end;
    { Tabelle mit Methode CreateTable erstellen }
    CreateTable;
  end;
end;

Carlos1997 17. Jan 2004 08:20

Re: Erstellen eine Indexdatei für DBASE Datenbank
 
Hallo r_kerber,

vielen Dank für deine Antwort, aber ich komme damit leider nicht weiter
da die Function CreateTable eine neue Datenbank erzeugt und die vorhande
somit überschreibt.
Ich möchte aber bei der bestehenden Datenbank eine neue Indexdatei '.MDX'
erstellen um wieder Suchfunktionen durchführen zu können. Ein neues anlegen
der gesamten Datenbank mit Indexdatei hätte auch den Verlust der gesamten
Daten zur Folge.

MfG
carlos1997

:roll:

r_kerber 17. Jan 2004 08:48

Re: Erstellen eine Indexdatei für DBASE Datenbank
 
Hallo Carlos1997,

wenn Du die OH genau studierst, findest Du auch die Methode Update von TIndexDefs!


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:24 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