Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem beim Erstellen einer Paradox Tabelle (https://www.delphipraxis.net/87220-problem-beim-erstellen-einer-paradox-tabelle.html)

haentschman 25. Feb 2007 12:46

Datenbank: Paradox • Zugriff über: BDE

Problem beim Erstellen einer Paradox Tabelle
 
Hallo alle...

bitte nicht gleich teeren und federn wegen Paradox....

folgender im Prinzip einfacher Code..

Delphi-Quellcode:
procedure TabWartungerzeugen;
begin
  with Form1.TabWartungsprotokoll do
    begin
      TableType := ttParadox;
      TableName := WartungPName;
      with FieldDefs do
        begin
          Clear;
          with AddFieldDef do
            begin
              Name := 'Nummer';
              DataType := ftString;
              Size := 30;
            end;
          with AddFieldDef do
            begin
              Name := 'Gruppe';
              DataType := ftString;
              Size := 30;
            end;
          with AddFieldDef do
            begin
              Name := 'Tatigkeit';
              DataType := ftString;
              Size := 100;
            end;
          with AddFieldDef do
            begin
              Name := 'IO';
              DataType := ftBoolean;
            end;
          with AddFieldDef do
            begin
              Name := 'Mangel';
              DataType := ftBoolean;
            end;
          with AddFieldDef do
            begin
              Name := 'Erledigt';
              DataType := ftBoolean;
            end;
        end;
      with IndexDefs do
        begin
          with AddIndexDef do
            begin
              Name := '';
              Fields := 'Nummer;Gruppe;Tatigkeit';
              Options := [ixPrimary];
            end;
        end;
      CreateTable;
    end;
end;
Infos:

WartungPName enthält kpl. Verzeichnis incl. Dateinamen z.B. 'C:\Test\WP2007.DB'
TabWartungsprotokoll ist Active:= False

zum Problem:

der erste Durchlauf der procedure ist ok die Tabelle wird wie gewünscht erstellt.
vor dem 2. Durchlauf wird WartungPName geändert in z.B 'C:\Test\WP2008.DB'

beim CreateTable erhalte ich folgenden Fehler:

bla..bla..bla.. Invalid Parameter....Table 'C:\Test\WP2008.DB' does not exist :wiejetzt:

ist ja klar...sie soll ja erstellt werden :gruebel:

Danke für eure Mithilfe...

mkinzler 25. Feb 2007 12:51

Re: Problem beim Erstellen einer Paradox Tabelle
 
.TableName sollte ohne Pfad sein

haentschman 25. Feb 2007 12:54

Re: Problem beim Erstellen einer Paradox Tabelle
 
Ich werde das mal ändern...hatte aber prinzipiell so bisher keine Probleme :gruebel:

bis gleich

haentschman 25. Feb 2007 13:05

Re: Problem beim Erstellen einer Paradox Tabelle
 
also...

TableName gesetzt auf z.b. WP2007.DB
DatabaseName gesetzt auf das Verzeichnis


Ergebnis ist das gleiche...

1.Durchlauf ok
2. Durchlauf Fehler

ich verbringe jetzt schon Stunden damit die Parameter des Aufufes zu kontrollieren und umzustellen...

wenn es ja nie funktionieren würde hätte ich ja einen Ansatz :wall:

haentschman 25. Feb 2007 13:12

Re: Problem beim Erstellen einer Paradox Tabelle
 
so...

ich habe herausgefunden, das die procedure jedesmal problemlos durchläuft, wenn ich das Programm neu starte...

ich denke, das ich irgend etwas noch freigeben muß nach CreateTable...

werde mal das Forum durchblättern... :???:

haentschman 25. Feb 2007 13:25

Re: Problem beim Erstellen einer Paradox Tabelle
 
könnte das damit zu tun haben, das die TTable Komponente auf dem Formular liegt und
nicht zur Laufzeit erzeugt und wieder freigegeben wird ? :?:

haentschman 25. Feb 2007 14:03

Re: Problem beim Erstellen einer Paradox Tabelle
 
...und genau damit hat es was zu tun. :wall:

Delphi-Quellcode:
procedure TabWartungerzeugen;
var
  Tabelle: TTable;
begin
  Tabelle:= TTable.Create(nil); <---- Tabelle dynamisch erzeugen
  with Tabelle do
    begin
      SessionName:= 'Session1_1';
      TableType := ttParadox;
      TableName := WartungPName;
      with FieldDefs do
        begin
          Clear;
          with AddFieldDef do
            begin
              Name := 'Nummer';
              DataType := ftString;
              Size := 30;
            end;
          with AddFieldDef do
            begin
              Name := 'Gruppe';
              DataType := ftString;
              Size := 30;
            end;
          with AddFieldDef do
            begin
              Name := 'Tatigkeit';
              DataType := ftString;
              Size := 100;
            end;
          with AddFieldDef do
            begin
              Name := 'IO';
              DataType := ftBoolean;
            end;
          with AddFieldDef do
            begin
              Name := 'Mangel';
              DataType := ftBoolean;
            end;
          with AddFieldDef do
            begin
              Name := 'Erledigt';
              DataType := ftBoolean;
            end;
        end;
      with IndexDefs do
        begin
          with AddIndexDef do
            begin
              Name := '';
              Fields := 'Nummer;Gruppe;Tatigkeit';
              Options := [ixPrimary];
            end;
        end;
      CreateTable;
    end;
  Tabelle.Free; <---- Speicher freigeben
end;

...jetzt macht er was ich will !!! :-D


PS: ...Selbstgespräche mag ich gar nicht so. Trotzdem danke an alle die sich Gedanken gemacht haben.

marabu 25. Feb 2007 15:29

Re: Problem beim Erstellen einer Paradox Tabelle
 
Hallo,

durch die dynamische Erstellung deiner Tabelle hast du nicht die Ursache, sonder das Symptom erfolgreich bekämpft. Grundsätzlich hätte auch der erste Ansatz funktionieren können:

Delphi-Quellcode:
procedure TabWartungDefinieren(tbl: TTable);
begin
  with tbl do
  begin
    TableType := ttParadox;
    with FieldDefs do
    begin
      Clear;
      Add('Nummer', ftString, 30);
      Add('Gruppe', ftString, 30);
      Add('Tatigkeit', ftString, 100);
      Add('IO', ftBoolean);
      Add('Mangel', ftBoolean);
      Add('Erledigt', ftBoolean);
    end;
    with IndexDefs do
    begin
      Clear;
      Add('', 'Nummer;Gruppe;Tatigkeit', [ixPrimary]);
    end;
  end;
end;

procedure TabWartungErzeugen(tbl: TTable; fn: TFileName);
begin
  with tbl do
  begin
    // Wegen Test auf Kommentar gesetzt ...
    // DatabaseName := ExtractFileDir(fn);
    // TableName := ChangeFileExt(ExtractFileName(fn), '');
    TableName := fn;
    CreateTable;
  end;
end;
Wenn die Tabellen den gleichen Aufbau haben, dann genügt beim Ansatz über eine extern erzeugte Tabelle die einmalige Definition der Struktur.

Freundliche Grüße

haentschman 28. Feb 2007 20:12

Re: Problem beim Erstellen einer Paradox Tabelle
 
Danke für deine Hilfe...

habe meinen Programmcode umgestellt...ist jetzt wesentlich übersichtlicher.

Ich habe das ganze als Procedure ohne Variablenübergabe realisiert...ich komme mit der Deklaration und dem Aufruf nicht klar...ich habe mit diesen Grundlagen noch so meine Probleme... wo gehört was hin und wie übergebe ich richtig :oops: ---> da muß ich selbst durch !!! :(


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