Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TIBTable (https://www.delphipraxis.net/201416-tibtable.html)

RaGro 20. Jul 2019 09:31

Datenbank: Interbase • Version: Developer Edition • Zugriff über: Interbase

TIBTable
 
Hallo,

ich habe ein Problem mit Interbase und TIBTable. Ich habe immer mit der BDE gearbeitet und bin in Interbase Anfänger!

Ich wollte eine Datenbank erstellen zur Entwurfszeit als TIBTable. Ich habe die Datenbank mit der IBConsole erstellt. Habe dann über die Komponentenproperties die Felder festgelegt.
Wollte dann mit create Table zur Entwurfszeit die Tabelle erstellen.
Ich habe keine Möglichkeit gefunden dies zu tun :-(
Nun da alle Felder bereits angezeigt wurden wollte ich dann mit einer kleinen Dummyunit eben zur Laufzeit die Tabelle erstellen.

Bekomme zur Laufzeit jedoch immer die Meldung: Error nicht unterstützter Datentyp.

System:
Win10 64 Bit
Tokyo 10.2
Interbase Developer 64 Bit

Hier einmal die Dummyunit. Die Deklarationen sind bereits über die Komponenten da. Wahrscheinlich werde ich einige Komponenten zu viel drin haben.
Anfänger eben :-)

Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DBXInterBase, Data.FMTBcd, Data.DB,
  Datasnap.DBClient, Datasnap.Provider, Data.SqlExpr, Vcl.StdCtrls, Vcl.ToolWin,
  Vcl.ComCtrls, IBX.IBCustomDataSet, IBX.IBDatabase, IBX.IBTable,
  IBX.IBConnectionBroker, Vcl.Grids, Vcl.DBGrids;

type
  TForm1 = class(TForm)
    Button1: TButton;
    StatusBar1: TStatusBar;
    ToolBar1: TToolBar;
    IBDataSet1: TIBDataSet;
    DataSource1: TDataSource;
    IBDataSet1Nummer: TAutoIncField;
    IBDataSet1Bild: TStringField;
    IBTransaction1: TIBTransaction;
    IBDataSet1Memo: TMemoField;
    IBDataSet1Name: TMemoField;
    N: TMemoField;
    IBDataSet1Eigenschaft: TMemoField;
    IBDataSet1Körper: TMemoField;
    IBDataSet1Zeit: TMemoField;
    IBDataSet1Person: TMemoField;
    IBDataSet1Karma: TMemoField;
    IBDatabase1: TIBDatabase;
    DBGrid1: TDBGrid;
    IBTable1: TIBTable;
    IBTable1Nummer: TAutoIncField;
    IBTable1Bild: TStringField;
    IBTable1Memo: TMemoField;
    IBTable1Name: TMemoField;
    IBTable1Schlüssel: TMemoField;
    IBTable1Eigenschaft: TMemoField;
    IBTable1Körper: TMemoField;
    IBTable1Zeit: TMemoField;
    IBTable1Person: TMemoField;
    IBTable1Karma: TMemoField;
    procedure Button1Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

 begin
    Button1.Caption:='DB 123';
    IBTable1.CreateTable;


    Button1.Caption:='DB erstellen';
end;
end.

Delphi.Narium 20. Jul 2019 09:50

AW: TIBTable
 
Kenne Interbase nicht wirklich (ist seeeeeeehhhhhhr lange her).

FireBird ist aber aus Interbase entstanden.

FireBird kennt kein TAutoIncField, da muss man mit 'nem Generator (Sequence) arbeiten.

Schau bitte mal, ob Dir einer der Artikel hier weiterhilft: https://www.google.com/search?q=interbase+autoinc

RaGro 20. Jul 2019 10:01

AW: TIBTable
 
Hi Delphi.Narium,

Danke erst mal für deine Antwort!
Das Problem ist also das Autoinc Feld wenn ich das richtig verstehe :-(((
Ok. Das Hat mir schon mal ein ganzes Stück weiter geholfen!!!

haentschman 20. Jul 2019 10:46

AW: TIBTable
 
Moin...:P
Zitat:

Ich habe immer mit der BDE gearbeitet
...davon (nämlich die Vorgehensweisen) solltest du dich komplett verabschieden. Alles auf die Form klatschen hilft nicht viel. Ich würde vorschlagen, daß du wieder einem leeren Projekt anfängst.

0. Datenbank und die Tabellen mit IBConsole oder IBExpert oder FlameRobin erstellen.
Hinweis: Wie Delphi.Narium sagte... "kennt kein TAutoIncField, da muss man mit 'nem Generator (Sequence) arbeiten" https://www.youtube.com/watch?time_c...&v=81imsDWYTs4
Hinweis: die Datenbank ist ein File...incl. der Tabellen. Nicht wie mit der BDE (Paradox)
Hinweis: nur im Notfall sollte die Datenbank zur Laufzeit geändert werden...und wenn nur von einer Workstation! (Updater)
1. leeres Projekt (uses IBxxx leer!)
2. visuelle Komponenten drauf
3. Query als Komponente drauf (keine Table sondern Query! Table verwendet keiner mehr...8-))
4. Connection als Komponente drauf, Grundeinstellungen behalten (zur Designzeit niemals Active = True setzen!)
5. Datasource als Komponente drauf
6. Grid: alternativ Spalten erstellen // sonst werden beim Laden der Daten alle Spalten angezeigt
7. INI erstellen mit den "Connection Daten" - Alternativ hardcoded in die Connection eintragen (= bäääh :zwinker:)
8. Form Create: INI laden und den Connection String der Connection zuordnen und Active = True setzen
9. Starten.
10. Button Click: SQL erstellen, der Query übergeben und ausführen. (select * from Blubb)

SQL Tutorial: https://www.1keydata.com/de/sql/
Normalisierung (für den Anfang nicht wichtig, sollte man aber mal gehört haben :wink:): https://de.wikipedia.org/wiki/Normal...ng_(Datenbank)

Wenn das funktioniert, dann kannst du rumprobieren...und wir haben dann die nächsten Fragen am Hals. :thumb:8-)

RaGro 25. Jul 2019 12:49

AW: TIBTable
 
Hallo Haentschmann,

Danke für deine Antwort.
Hab inzwischen meine beiden Paradoxtabellen in Interbase portiert und neu geschrieben bzw. schreiben lassen von ner dummy datei .
Das "alte" Programm war nach einigen wenigen Änderungen mit der Interbasedatenbank wieder lauffähig. :-)
Mit dem SQL von Interbase bin ich noch etwas am kämpfen....aber das wird schon.

Die Datenbanken laufen erst mal.


Vielen Dank für eure Hilfe und Unterstützung

mfg

Rainer Groer


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