Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Neue Tabelle aus dem Programm heraus anlegen (https://www.delphipraxis.net/4021-neue-tabelle-aus-dem-programm-heraus-anlegen.html)

Flo 11. Apr 2003 11:48


Neue Tabelle aus dem Programm heraus anlegen
 
Morgen,
ich muss euch nochmal nerven, sorry :oops:

Also, ich möchte per Button eine neue Tabelle erzeugen können, deren Namen ich per Edit-Komponente bestimmen kann. Dann soll man per Combobox zwischen den angelegten Tabellen wechseln können.
Es soll sich um eine Paradox7 Tabelle handeln (wenn dies von Nöten sein sollte)
Bitte um Hilfe.

Mario 11. Apr 2003 13:05

Eine neue Table kannst Du mit CreateTable erzeugen. In der Hilfe von Delphi ist ein recht ausführliches Beispiel für die Erstellung einer Paradox-Tabelle.

Flo 11. Apr 2003 13:15

Danke für deine Antwort.
Gesucht und gefunden :)
Aber als ich das ausprobieren wollte, hat sich nichts getan. Er hat mir keine neue Tabelle erzeugt. Ich hab folgenden Code benutzt.
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
begin
{ Evtl. vorhandene Tabelle nicht überschreiben }

if not Table1.Exists then begin

  with Table1 do begin

  { Die Table-Komponente darf nicht aktiv sein }
  Active := False;
  { Zuerst den Tabellentyp beschreiben und die Tabelle benennen }
  DatabaseName := '';
  TableType := ttParadox;
  TableName := edit1.text;

  { Dann die Felder in der Tabelle beschreiben }
  with FieldDefs do begin
    Clear;
      with AddFieldDef do begin
        Name := 'Name';
        DataType := ftInteger;
        Required := True;
        size := 20;
      end;

      with AddFieldDef do begin
        Name := 'Vorname';
        DataType := ftString;
        Size := 20;
        required := true;
      end;

      with AddFieldDef do begin
        Name := 'Note1';
        DataType := ftString;
        Size := 3;
        required := false;
    end;

    with AddFieldDef do begin
        Name := 'Note2';
        DataType := ftString;
        Size := 3;
        required := false;
    end;

    with AddFieldDef do begin
        Name := 'Note3';
        DataType := ftString;
        Size := 3;
        required := false;
    end;

    with AddFieldDef do begin
        Name := 'Note4';
        DataType := ftString;
        Size := 3;
        required := false;
    end;

    with AddFieldDef do begin
        Name := 'Note5';
        DataType := ftString;
        Size := 3;
        required := false;
    end;

    with AddFieldDef do begin
        Name := 'Bemerkungen';
        DataType := ftString;
        Size := 150;
        required := false;
    end;
    end;
  { Dann alle Indizes beschreiben }
  with IndexDefs do begin
    Clear;
    { Der erste Index hat keinen Namen, denn er ist ein }
    { primärer Paradox-Schlüssel }
      with AddIndexDef do begin
        Name := 'Name';
        Fields := 'Field1';
        Options := [ixPrimary];
      end;
      with AddIndexDef do begin
        Name := 'Vorname';
        Fields := 'Field2';
        Options := [ixCaseInsensitive];
        end;

       with AddIndexDef do begin
        Name := 'Note1';
        Fields := 'Field3';
        Options := [ixCaseInsensitive];
      end;

       with AddIndexDef do begin
        Name := 'Note2';
        Fields := 'Field4';
        Options := [ixCaseInsensitive];
      end;

       with AddIndexDef do begin
        Name := 'Note3';
        Fields := 'Field5';
        Options := [ixCaseInsensitive];
      end;

       with AddIndexDef do begin
        Name := 'Note4';
        Fields := 'Field6';
        Options := [ixCaseInsensitive];
      end;

       with AddIndexDef do begin
        Name := 'Note5';
        Fields := 'Field7';
        Options := [ixCaseInsensitive];
      end;

       with AddIndexDef do begin
        Name := 'Bemerkungen';
        Fields := 'Field8';
        Options := [ixCaseInsensitive];
      end;
    end;
  { CreateTable-Methode zu Erzeugen der Tabelle aufrufen }
  CreateTable;
  end;

end;
 end;
Ich möchte eine Tabelle mit Name, Vorname´, Note1,2,3,4,5 und Bemerkungen erzeugen. Das hab ich probiert.
Aber wo liegt der Fehler :?: :|

Mario 11. Apr 2003 13:33

Kann es sein, dass er wegen:
Code:
if not Table1.Exists then begin
gar nicht anfängt?

woki 11. Apr 2003 13:40

Hi,

was hälst Du davon (Local) SQL zu verwenden.

SQL-Code:
CREATE TABLE "employee.db"

(
  Last_Name CHAR(20),
  First_Name CHAR(15),
  Salary NUMERIC(10,2),
  Dept_No SMALLINT,
  PRIMARY KEY (Last_Name, First_Name)

)
Du mußt den Code in eine TQuery laden
Eigenschaft 'SQL'
und dann die Query mit ExecSQL ausführen.


Grüsse
Wolfgang

woki 11. Apr 2003 13:41

ach so

mehr Info dazu unter

LocalSQL.hlp

Flo 11. Apr 2003 14:42

Zitat:

Zitat von Mario
Kann es sein, dass er wegen:
Code:
if not Table1.Exists then begin
gar nicht anfängt?

Dies ist doch der Überschreibungsschutz, oder nicht. Es heißt doch:
Falls table1 nicht vorhanden ist, dann lege es an...oder mache ich da'n Denkfehler ???

Zitat:

Zitat von woki
Du mußt den Code in eine TQuery laden
Eigenschaft 'SQL'
und dann die Query mit ExecSQL ausführen.

Da ich mich kaum mit SQL beschäftigt habe, kann ich mit deinen Tipps nichts anfangen. Ich hab da auch mal in die Hilfe geguckt...hat mir auch nichts gebracht :( Hab den Code mal eingefügt und ein bisschen verändert, aber er legt mir keine Tabelle an.

@ woki
Kannste das nicht mal ein bisschen genauer beschreiben (so für Anfänger :mrgreen: )

Mario 11. Apr 2003 14:52

Ich habe Deinen Code mal überarbeitet:
Code:
{ Evtl. vorhandene Tabelle nicht überschreiben }

if not Table1.Exists then begin

  with Table1 do begin

  { Die Table-Komponente darf nicht aktiv sein }
  Active := False;
  { Zuerst den Tabellentyp beschreiben und die Tabelle benennen }
  DatabaseName := ExtractFilePath(edit1.text);
  TableType := ttParadox;
  TableName := ExtractFileName(edit1.text);

  { Dann die Felder in der Tabelle beschreiben }
  with FieldDefs do begin
    Clear;
      with AddFieldDef do begin
        Name := 'Name';
        DataType := ftString;
        Required := True;
        size := 20;
      end;

      with AddFieldDef do begin
        Name := 'Vorname';
        DataType := ftString;
        Size := 20;
        required := true;
      end;

      with AddFieldDef do begin
        Name := 'Note1';
        DataType := ftString;
        Size := 3;
        required := false;
    end;

    with AddFieldDef do begin
        Name := 'Note2';
        DataType := ftString;
        Size := 3;
        required := false;
    end;

    with AddFieldDef do begin
        Name := 'Note3';
        DataType := ftString;
        Size := 3;
        required := false;
    end;

    with AddFieldDef do begin
        Name := 'Note4';
        DataType := ftString;
        Size := 3;
        required := false;
    end;

    with AddFieldDef do begin
        Name := 'Note5';
        DataType := ftString;
        Size := 3;
        required := false;
    end;

    with AddFieldDef do begin
        Name := 'Bemerkungen';
        DataType := ftString;
        Size := 150;
        required := false;
    end;
    end;
  { Dann alle Indizes beschreiben } 
  with IndexDefs do begin
    Clear;
    { Der erste Index hat keinen Namen, denn er ist ein } 
    { primärer Paradox-Schlüssel } 
  end;
  { CreateTable-Methode zu Erzeugen der Tabelle aufrufen } 
  CreateTable;
  end;

end;
Erst mal hast Du Database frei gelassen. Sofern du keinen Alias gesetzt hast, sollte dort der Pfad stehen.
Dann sollte Table nie mit Pfad sein, habe ich geändert.
Dann kann ein Feld Name vom Typ Integer nie 20 groß sein, ich habe es auf String geändert.
Dann habe ich noch alle Inidizes gelöscht. Was hattest Du denn damit vor? Du wolltest Felder im Index benennen, die Du gar nicht angelegt hast.

Flo 11. Apr 2003 15:46

SUPER :hello: :spin:

Hat geklappt.....Vielen Dank euch allen..

Flo 12. Apr 2003 10:59

Ähh, wollte jetzt noch die neuen Tabellen per Combobox aufrufen. Und dann soll man die von der Combobox geöffnete Tabelle mit einer Grid-Komponente anzeigen können. Hab gestern ein bisschen rumprobiert. Habs aber nicht hinbekommen.

Zitat:

Zitat von Flo
Dann soll man per Combobox zwischen den angelegten Tabellen wechseln können.

Kann mir noch mal jemand helfen. Dann nerve ich euch bestimmt nicht mehr :!:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:08 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz