![]() |
AW: Mit welchen Datenbankkomponenten afangen?
Liste der Anhänge anzeigen (Anzahl: 2)
Oder über die GUI
|
AW: Mit welchen Datenbankkomponenten afangen?
[/QUOTE]
Zitat:
Oder ist das in einer anderen GUI-Anwendung? In welcher? So sieht meine DBeaver Oberfläche aus: ![]() |
AW: Mit welchen Datenbankkomponenten afangen?
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Dieses SQL wird beim Öffnen der Abfragekomponente ausgeführt und sorgt dafür, dass die Datenbankkomponenten mit Inhalt gefüllt werden. Zitat:
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:
Mit diesem Quelltext erhalte ich nun eine
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. 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. |
AW: Mit welchen Datenbankkomponenten afangen?
Hallo,
Zitat:
Wenn nicht: ![]() Zitat:
Wie bei vielen Windows-Programmen ist die rechte Maustaste dein Freund. |
AW: Mit welchen Datenbankkomponenten afangen?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
AW: Mit welchen Datenbankkomponenten afangen?
Zuerst brauchst Du eine Datenbank. Ohne die ist alles weitere sinnlos!
Wenn Du die Datenbank hast, dann erstelle in der IDE eine Verbindung zu der Datenbank. Die meisten Datenbankkomponenten für die Verbindungsherstellung haben ein Attribut Active oder Connected. Das muss (erstmal) auf True gesetzt werden. Solange das nicht klapp, ist weitermachen sinnlos. Wss bezweckst Du damit?
Delphi-Quellcode:
Zuerst die Datenbankverbindung herstellen, ist ok.
IBDataBase1.Open;
IBDataSet1.Open; IBDataSet1.ExecSQL; IBSQL1.ExecQuery; Dann ein Dataset öffnen. Mag sein, was ist das hier konkret. Bitte vergib sprechende Namen, so dass wir hier im Quelltext daran nachvollziehen können, was gemeint ist. IBDataSet1 kann alles oder nichts sein. Zuerst öffnest Du also IBDataSet1 und dann führst Du das SQL darin aus? Was möchtest Du, eine Datenmenge zur Anzeige und zum Editieren öffnen oder ein Datenbankstatement ausführen? Was bitte steht im SQL von IBDataSet1, so dass man nachvollziehen kann, was da passieren soll. Meiner Meinung nach aber entweder Open oder ExecSQL, so hintereinander erscheint mir das erstmal sinnfrei. Was macht IBSQL1? Da ist doch das Create-Statement für die Tabelle drinne enthalten. Also erst die Tabelle öffnen, dann deren SQL nochmal separat ausführen und dann die Tabelle erstellen? Das Create-Statement wird genau einmal benötigt: Wenn die Datenbank erstellt wurde, dann wird die Tabelle erstellt. Das solltest Du mit DBWeaver machen. Ins FormCreate kommt dann noch das Database.Open und das DataSet.Open. Im Objektinspektor kann man die Felder erst dann den DBEdit-Komponenten zuordnen, wenn man erstens erfolgreich die Datenbankverbindung in der IDE hat herstellen können und dann erfolgreich das Active der Query auf True setzen konnte. Es muss also eine Datenbankverbindung bestehen und eine vorhandene Tabelle / Abfrage geöffnet worden sein. Bei geschlossener Datenbankverbindung und geschlossener Tabelle / Abfrage kann man im Objektinspektor aber auch einfach die Feldnamen eingeben. Man muss halt wissen, wie sie heißen und kann sich nicht drauf verlassen, dass die IDE es schon richten wird. Zitat:
Also: Zuerst Datenbank erstellen. (DBWeaver) Dann Deine Tabelle erstellen, deren Create-Statement Du weiter oben schon gepostet hast. (DBWeaver) Dann in der IDE einen TIBDatabase einfügen und darin eine Verbindung zu der Datenbank herstellen. Dann in der IDE TIBQuery einfügen, die mit einem Selectstatement (Attribut SQL) versorgen (select * from mediadb). Dann Active dieser Komponente auf True setzen. Dann eine TDataSource aufs Formular und die mit der TIBQuery verbinden. Dann ein DBGrid aufs Formular und das mit der TDataSource verbinden. (Du solltest dann im DBGrid bereits die leere Tabelle zu sehen bekommen.) Dazu ein TDBNavigator aufs Formular und den ebenfalls mit der TDataSource verbinden. Kompilieren, Programm starten. Es sollte nun ohne Fehlermeldung eine kleine Datenbankanwendung fertig sein, die eine leere Datenmenge anzeigt. Im DBGrid solltest Du nun in der Lage sein, händisch Daten zu erfassen und per DBNavigator zu speichern, löschen, oder sonstwie durch die Daten zu navigieren. Nach dem Beenden des Programmes und seinem Neustart, solltest Du die Daten sehen können, die Du bereits erfasst hast. Wenn das erfolgreich funktioniert, kümmern wir uns um die DBEdits ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:46 Uhr. |
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-2025 by Thomas Breitkreuz