Mit Lazarus Tabelle in Datenbank erstellen

OP #1655284
Lesenswert?
• ▲
▼
Hi
Ich habe die Frage schon in einem Delphi Forum gestellt, aber bisher 
keine Antwort erhalten. Es geht um die Möglichkeit, wie sie in Delphi 
vorhanden war:
   aus einer TTABLE abgeleitete Komponente
Tabelle: TTable;
mittels
   Tabelle:=TTable.Create;
   Tabelle.Database:=....
     und weitere Parameter
sowie Felddeklaration
   Tabelle.FieldDefs.Add('Ident',ftInteger,0,true);
   ....
   ....
   Tabelle.TableCreate;

eine Tabelle auf einer Datenbank zu erzeugen. Die Komponenten von 
Lazarus wehren sich ein wenig und mir gehen die Ideen aus. Kann mir mal 
einer das Brett vom Kopf nehmen.
Gruß oldmax
Gast #1655420
Lesenswert?
• ▲
▼
Hi

>Es geht um die Möglichkeit, wie sie in Delphi vorhanden war:

In der Delphi-Hilfe steht es so:

var

  TableFound: Boolean;
begin
  with TTable.Create(nil) do// temporäre TTable-Komponente erstellen
  begin
    try
      { Eigenschaften für die temporäre TTable-Komponente festlegen }
      Active := False;
      DatabaseName := 'DBDEMOS';
      TableName := Edit1.Text;
      TableType := ttDefault;
      { Felder für die neue Tabelle definieren }
      FieldDefs.Clear;
      with FieldDefs.AddFieldDef do begin

        Name := 'First';
        DataType := ftString;
        Size := 20;
        Required := False;
      end;
      with FieldDefs.AddFieldDef do begin
        Name := 'Second';
        DataType := ftString;
        Size := 30;
        Required := False;
      end;
      { Indizes für die neue Tabelle definieren }
      IndexDefs.Clear;
      with IndexDefs.AddIndexDef do begin
        Name := '';
        Fields := 'First';

        Options := [ixPrimary];
      end;
      TableFound := Exists; // prüfen, ob die Tabelle bereits vorhanden 
ist
      if TableFound then
        if MessageDlg('Vorhandene Tabelle ' + Edit1.Text + 
'überschreiben?',
             mtConfirmation, mbYesNoCancel, 0) = mrYes then
          TableFound := False;
      if not TableFound then
        CreateTable; // Tabelle erstellen
    finally
      Free; // temporäre TTable-Komponente abschließend löschen

    end;
  end;
end;

MfG Spess
Gast #1655626
Lesenswert?
• ▲
▼
Hi
Danke für die Antwort, aber Delphi ist nicht das Problem. Lazarus, 
zumindest, das was ich mir hier heruntergeladen habe, kennt keine 
TTable. Daher funktioniert das bei Lazarus in dieser Art nicht. Also, 
das Brett ist noch zu haben...
Gruß oldmax
OP #1656367
Lesenswert?
• ▲
▼
Hi
Danke für den Link. Dieses Tutorial hatte ich noch nicht gefunden, aber 
die Vorgehensweise mit TDbf bereits versucht. Bisher scheiterte es immer 
zur Laufzeit mit einer Fehlermeldung "unable to open... " zur Laufzeit 
beim Aufruf von CreateTable. Die Compileierung lief fehlerfrei.
Ein Breakpoint in der Procedure CreateTable wurde gar nicht 
angesprochen, daher hatte ich vermutet, das eine Tabelle vorhanden sein 
muß. Aber gut, ich werde mich heute nachmittag gleich mal dransetzen und 
nochmal die entsprechenden Codes prüfen. Danke für deine Mühe.
Gruß oldmax
OP #1656470
Lesenswert?
• ▲
▼
Hi
Wenn du Delphi benutzt, denke ich bleib dabei. Ich habe mir das auch nur 
angetan, weil ich eine freie Software gesucht habe, die Datenbankzugriff 
beinhaltet. Dies ist bei den preiswerten Delphi's nicht der Fall.
Ich arbeite immer noch mit einer D3 Enterprise, die ich von einem 
Programmierer geerbt habe. Da ist man schon verwöhnt in Bezug auf Hilfe 
und Dokumentation. Z.B. ist es unter Delphi kein Problem, in der Hilfe 
bei den Objekten auch in die Vorfahren zu gehen und die Herkunft 
abgeleiteter Variablen anzusehen. Das wirst du bei Lazarus vermissen. 
Auch ist Lazarus etwas langsamer. Sowohl beim Compilieren als auch in 
der Ausführung. Andererseits darf man nicht vergessen, es kostet nix und 
dafür ist es ein sehr interesantes und umfangreiches Programmiertool. 
Ich merke allerdings sehr schnell meine Grenzen, da ich das 
Programmieren nicht durch ein Studiom gefestigt habe, sondern eher zum 
Freizeitverplempern mache....
Sicherlich, als E-Techniker hat es mir bei vielen Aufgaben geholfen und 
es hält geistig fit. Schließlich bin ich nicht mehr der Jüngste, aber 
irgendwas uß man ja machen, wenn man in Kürze in Rente geht.. :)
Gruß oldmax

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.