Zitat von
t0M:
Hallo allerseits,
Ich bin in Moyos Gruppe und wir machen dieses Programm als Gruppenarbeit in unserer Schule. Erstmal kurz was zu mir: ich Programmiere schon seit paar jahren ziemlich viel in PHP und
MySQL und kenne mich dort relativ gut aus. Problem von uns bei dem Programm ist eher wie man das in Delphi umsetzt. Die Tabellen haben wir ja alle mehr oder weniger erstellt.
Wenn wir nun zb mit
SQL aus der Tabelle etwas rauslesen wie bekommen wir die werte in das Formular das wir mit dem Formularexperten in Delphi erstellt haben?
so kann man das zb in PHP machen:
Delphi-Quellcode:
$abc = 'SELECT * FROM Teams';
$schueler = 'SELECT * FROM Schueler WHERE TeamID='.$abc['TeamID'];
nun hätte ich im array $schueler alle daten des Schülers, dass die TeamID von oben hat. Wie mach ich das nun in Delphi?
Du benötigst dafür in Delphi 4 Komponenten:
- TDatabase
Dort wählst Du einen vorher angelegten AliasName aus und vergibst einen Databasename. Über dieses Objekt sollten dann alle DB-Operationen laufen. Connected auf true setzen.
- TQuery
In der Eigenschaft SQL (Das ist eine Stringlist) kann Du das SQL einsetzen. Parameter werden mit ":" gekennzeichnet. Also z.b. 'Select * from Schueler where TeamID=:TeamID'. Über die Liste Params kannst Du die Parameter setzen oder im Source über ParamByName.As<Type>. Beispiel : QuerySchueler.ParamByName('TeamId').AsInteger := 1234;
Die Query wird durch setzen der Eigenschaft Active auf true ode die Methode Open aktiviert.
- TDataSource
Dieses Objekt dient der Verbindung von Datenmengen (Query, Table) mit entsprechenden Steuerelementen. Die Eigenschaft DataSet referenziert dann die Query.
- TDbGrid
Zur Anzeige der Daten in Tabellenform kann man z.B. ein Grid verwenden. Dieses greift über die Eigenschaft DataSource auf das der TDataSource zugrundeliegende Dataset zu.
Um das ganze mehrstufig zu machen, gibt es in der TQuery-Komponente eine DataSource Eigenschaft. Diese verweist auf ein TDataSource Objekt der Elterndatenmenge. Das Schöne daran: wenn die Parameter in der Kinddatenmenge genauso benannt sind, wie die entsprechenden Verknüpfungsfelder der Elterndatenmenge, so erfolgt das gesamte Handling automatisch.
Wenn Du also eine 1:n Verbindung zwischen Teams und Schülern herstellen willst und folgendes gilt:
Teams: ID integer, TeamName char(30)
Schueler: ID integer, Schuelername char(30), TeamId integer
Dann erzeugst Du zunächst jeweils eine TQuery und eine TDataSource für die beiden Datennmengen. In Teams kann das 'Select * from Teams' sein. In Schueler wäre es 'Select * from Schueler where TeamId = :id'. Wenn Du dann in der Schueler-
Query die Eigenschaft DataSource auf die Datasource des Teams setzt, so wird bei jeder Bewegung in Teams der Parameter :id in der Schueler
Query auf die Id aus Teams gesetzt und die Datenmenge aktualisiert.