Hast Du den DBEdits auch die zugehörigen Felder der Tabelle zugewiesen?
Klappt denn das, wenn ich dafür Quelltext schreibe? Im Objektinspektor geht das nämlich nicht und da ich noch keine Tabelle erzeugt habe, kann ich auch nicht Active im Objektinspektor einfach so auf true setzen.
Meist DataField (oder so ähnlich) genannt. Du musst jedem dieser Felder eines Deiner im Create aufgeführten Felder zuweisen.
Im Objektinspektor klappt das nicht, die möglichen Felder sind in der Combobox des
OI nicht aufgeführt.
Die Querykomponente hat (vermutlich) eine Methode Open bzw. ein Attribut Active. Entweder im Objektinspektor Active auf true setzen, dann wird die
Query beim Programmstart automatisch geöffnet oder "irgendwo" im Programmcode die Methode Open aufrufen.
Dann probier ich mal die
Query Komponente.Mit der IBSQL geht es nicht, obwohl, ich sollte mal im Quelltext die Methode Open versuchen. Wenn nicht dann
Query probieren. Da gibt es IBQuery und im Register dbGo --> SQLQuery.
Die Databasekomponente hat ebenfalls eine Methode zum Öffnen bzw. ein Attribut, dass Du im Objektinspektor setzen kannst. Auch hier musst Du für das Öffnen sorgen.
Das funktioniert gerade nicht.
Dann muss Deine
SQL-Komponente auch ein
SQL haben, meist das Attribut
SQL, im Objektinspektor für gewöhnlich als Stringliste mit 'nem Editor erreichbar. Da muss ein
SQL rein, z. B. [code]select * from mediadb
Dieses Attribut gibt es auch in IBSQL und da habe ich meine CREATE TABLE Anweisung schon drin stehen. Trotzdem will es nicht klappen.
Dieses
SQL wird beim Öffnen der Abfragekomponente ausgeführt und sorgt dafür, dass die Datenbankkomponenten mit Inhalt gefüllt werden.
Um durch die Datenmenge scrollen zu können, solltest Du Dir noch 'nen TDBNavigator auf das Formular legen und den mit der DataSource verbinden.
Ok, das wäre dann wie aus früheren Datenbankanwendungen mit Delphi.
So sollte ich auch DBEdit und andere Datensteuerungskomponenten weiter verwenden können.
Die Verbindung zur Datenbank klappt auch noch nicht,obwohl ich mit meinem Delphi 10.3 auch Interbase mit installiert habe. Deshalb habe ich Firebird als Verbindung gewählt, weil das mit Interbase kompatiblel ist.
Auch wenn ich MS
SQL Server statt Firebird wähle für die Verbindung, kann ich meine
SQL Anweisung nicht ausführen und so dann auch keine Tabelle anlegen.
Das ist meine
Unit:
Delphi-Quellcode:
unit UDBmedia;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.StdCtrls,
Vcl.Mask,
Vcl.DBCtrls,
IBX.IBSQL, IBX.IBDatabase, Data.DB, IBX.IBCustomDataSet;
type
TForm1 =
class(TForm)
DataSource1: TDataSource;
IBDatabase1: TIBDatabase;
IBDataSet1: TIBDataSet;
IBTransaction1: TIBTransaction;
IBSQL1: TIBSQL;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
DBEdit8: TDBEdit;
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
IBDataBase1.Open;
IBDataSet1.Open;
IBDataSet1.ExecSQL;
IBSQL1.ExecQuery;
end;
end.
Mit diesem Quelltext erhalte ich nun eine
EIBDatabaseError
Exception mit der Meldung
unavailable Database
Warum kann ich die nicht einfach innerhalb meiner Anwendung anlegen, statt über solch komplizierten Umweg. In der DataSet Komponente ich doch schon ein Feldeditor da. Da brauchte ich doch dann nur noch die Fähigkeit der Komponente, eine solche Datenbanktabelle nicht nur, wenn schon vorhanden, zu lesen, sondern zu Beginn auch eine zu schreiben. Klar geht das nicht so einfach wegen der verschiedenen Datenbankformate. Aber die wiederum könnten doch als Beschreibung irgendwo stehen. Und mit der Datenbankkomponente mitgeliefert werden, dann würde eine Auswahlliste in der Komponente zur Entwurfszeit ausreichen, um das passende Datenbankformat dort auszuwählen, die Komponente legt die Tabelle dann gemäß dieser Auswahl an und fertig. So aber braucht es nun externe Tools, die aber genauso Speicherplatz brauchen. Und früher gab es mal die Datenbankoberfläche im Lieferumfang von Delphi mit dazu.