Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#46

AW: Mit welchen Datenbankkomponenten afangen?

  Alt 10. Jan 2019, 16:28
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:
  IBDataBase1.Open;
  IBDataSet1.Open;
  IBDataSet1.ExecSQL;
  IBSQL1.ExecQuery;
Zuerst die Datenbankverbindung herstellen, ist ok.

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:
Ok, das wäre dann wie aus früheren Datenbankanwendungen mit Delphi.
jo, eigentlich hat sich da nicht wirklich viel geändert. Vorgehen wie vor 20 Jahren, nur mit deutlich moderneren und leistungsfähigeren Werkzeugen.

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 ...
  Mit Zitat antworten Zitat