Forum: PC-Programmierung Mit Lazarus Tabelle in Datenbank erstellen


von Martin V. (oldmax)


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

von spess53 (Gast)


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

von oldmax (Gast)


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

von spess53 (Gast)


Lesenswert?


von Martin V. (oldmax)


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

von spess53 (Gast)


Lesenswert?

Hi

Kein Problem. Wie sind denn deine Erfahrungen mit Lazerus? Im Moment 
benutze ich Delphi6 prof. Lohnt sich ein Einstieg/Umstieg?

MfG Spess

von Martin V. (oldmax)


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

von spess53 (Gast)


Lesenswert?

Hi

Danke erstmal für die Information. Übrigens findest du in der 
Zeitschrift 'Toolbox' öfters mal etwas zu Lazerus.

MfG Spess

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.