Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Paradox 7 Tabelle dynamisch aus DB erstellen (https://www.delphipraxis.net/34037-paradox-7-tabelle-dynamisch-aus-db-erstellen.html)

SubData 16. Nov 2004 13:19

Re: Paradox 7 Tabelle dynamisch aus DB erstellen
 
Ja dann is ok...

Solltest trotzdem mit FieldByName arbeiten sonst wird das wohl nix.

MrSpock 16. Nov 2004 13:31

Re: Paradox 7 Tabelle dynamisch aus DB erstellen
 
Hallo Christian,

das hat nichts mit FieldByName zu tun. Eine Tabelle wird z.B. so erzeugt:

Delphi-Quellcode:
 with Table1.FieldDefs do
  begin
    Clear;
    Add('Field1', ftInteger, 0, True);
    Add('Field2', ftString, 30, False);
  end;

  Table1.CreateTable;
D.h. du musst als ersten den Feldnamen angeben und dann den Typ. Mir ist auch noch nicht ganz klar, wo du diese Informationen herholst, was also z.B. DM.TFelderFeld.AsString sein soll?

SubData 16. Nov 2004 13:38

Re: Paradox 7 Tabelle dynamisch aus DB erstellen
 
Zitat:

Zitat von MrSpock
Mir ist auch noch nicht ganz klar, wo du diese Informationen herholst, was also z.B. DM.TFelderFeld.AsString sein soll?

Das war mit FieldByName gemeint => DM.TFelder.FieldByName('Feld').asString;
Ich redete vom Lesezugriff nicht vom Schreibzugriff :roll:

Christian18 16. Nov 2004 14:04

Re: Paradox 7 Tabelle dynamisch aus DB erstellen
 
Hallo,

ich bins nocheinmal.

ich habe jetzt mein Programm noch einmal getestet und festgestellt, dass es an folgenden code liegt:



Delphi-Quellcode:
      if
        DM.TFelder.FieldByName('Feld').AsString='T'
      then
        DM.Table1.FieldDefs.Add(DM.TFelderFeld.AsString, ftString, DM.TFelderLaenge.AsInteger, False);
      if
        DM.TFelder.FieldByName('Feld').AsString='I'
      then
        DM.Table1.FieldDefs.Add(DM.TFelderFeld.AsString, ftInteger, DM.TFelderLaenge.AsInteger, False);
      if
        DM.TFelder.FieldByName('Feld').AsString='D'
      then
        DM.Table1.FieldDefs.Add(DM.TFelderFeld.AsString, ftDate, DM.TFelderLaenge.AsInteger, False);

      DM.TFelder.Next;
PS: was habe ich hier alsch gemacht???

Mit freundlichen Grüßen

Christian18

SubData 16. Nov 2004 14:38

Re: Paradox 7 Tabelle dynamisch aus DB erstellen
 
Delphi-Quellcode:
      if
        DM.TFelder.FieldByName('Feld').AsString='T'
      then
==>    DM.Table1.FieldDefs.Add(DM.TFelderFeld.AsString, ftString, DM.TFelderLaenge.AsInteger, False);
      if
        DM.TFelder.FieldByName('Feld').AsString='I'
      then
==>    DM.Table1.FieldDefs.Add(DM.TFelderFeld.AsString, ftInteger, DM.TFelderLaenge.AsInteger, False);
      if
        DM.TFelder.FieldByName('Feld').AsString='D'
      then
==>    DM.Table1.FieldDefs.Add(DM.TFelderFeld.AsString, ftDate, DM.TFelderLaenge.AsInteger, False);
Du hast da genau den gleichen Fehler drin.
DM.TFelderFeld.asString => DM.TFelder.FieldByName('Feld').asString :)

Christian18 16. Nov 2004 19:52

Re: Paradox 7 Tabelle dynamisch aus DB erstellen
 
Zitat:

Zitat von MrSpock
Hallo Christian,

das hat nichts mit FieldByName zu tun. Eine Tabelle wird z.B. so erzeugt:

Delphi-Quellcode:
 with Table1.FieldDefs do
  begin
    Clear;
    Add('Field1', ftInteger, 0, True);
    Add('Field2', ftString, 30, False);
  end;

  Table1.CreateTable;
D.h. du musst als ersten den Feldnamen angeben und dann den Typ. Mir ist auch noch nicht ganz klar, wo du diese Informationen herholst, was also z.B. DM.TFelderFeld.AsString sein soll?

hallo Mr. Spock,

um noch mal zu dieser zeiel zu sagen.

DM.Table1.FieldDefs.Add(DM.TFelderFeld.AsString, ftInteger, DM.TFelderLaenge.AsInteger, false);

Dm ist bei mir ein Datenmodul.

ich habe eine DB die heißt Formulare in dieser Db sind die namen der Formulare gespeichert. dann habe ich auch noch eine Db die heißt Felder. in dieser DB wird gespeichert:
- Name des Feldes,
- Typ des Feldes,
- länge des Feldes.

und jetzt will ich dynamisch eine DB erstellen. der name der Tabelle die erstellt werden soll wird aus der DB Formulare geholt. und welche felder in dieser DB enthalten sein sollen, dass wird auch aus einer DB geholt. Aus der Datenbank Felder.

Also

mit

DM.TFelderfeld.AsString

damit hole ich die daten aus der DB.

Ich hoffe ich konnte meine Problematik ein bisschen verständlicher machen.

mit fruendlichen grüßen

Christian18

Mystic 16. Nov 2004 19:58

Re: Paradox 7 Tabelle dynamisch aus DB erstellen
 
Kann man da nicht auch einen SQL-Befehl CREATE TABLE benutzen?

MrSpock 16. Nov 2004 20:06

Re: Paradox 7 Tabelle dynamisch aus DB erstellen
 
Hallo Christian,

jetzt habe ich verstanden, was du willst.

Ein Fehler ist, dass du die eine Schleife benutzt (for i:=1 to ...) und dann noch mit First und next durch die Datenmenge läufst.

Delphi-Quellcode:
 DM.Table1.FieldDefs.Clear;
DM.TFelder.First;

while NOT DM.TFelder.Eof do
begin
  if DM.TFelderFeld.AsString='T' then
      DM.Table1.FieldDefs.Add(DM.TFelderFeld.AsString, ftString, DM.TFelderLaenge.AsInteger, false)
  else if DM.TFelderFeld.AsString='Z' then
      DM.Table1.FieldDefs.Add(DM.TFelderFeld.AsString, ftInteger, DM.TFelderLaenge.AsInteger, false)
  else if DM.TFelderFeld.AsString='D' then
      DM.Table1.FieldDefs.Add(DM.TFelderFeld.AsString, ftDate, DM.TFelderLaenge.AsInteger, false);
         
   DM.TFelder.Next;
end;
DM.Table1.CreateTable;
So sollte es funktionieren.

Christian18 16. Nov 2004 20:08

Re: Paradox 7 Tabelle dynamisch aus DB erstellen
 
hi,

versteh ich irgendwie nicht meine schleife macht doch eigentlich auch nicht anderes als deine oder???

mfg

christian18

Christian18 16. Nov 2004 20:14

Re: Paradox 7 Tabelle dynamisch aus DB erstellen
 
es kommt trotz deiner anderen schleife immer noch der gleiche fehler. der fehler war ungültiger Parameter. ich sitze jetzt schon den ganzen tag an dieser kleien procedure. ich weiß auch nicht was ich immer falsch mache.

mfg christian18


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:48 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz