Entwickler-Ecke

Datenbanken - Delphi und Firebird für Anfänger


Jakane - Mi 04.05.11 13:17
Titel: Delphi und Firebird für Anfänger
Hallo liebe Delphi-Helfer

Ich arbeite jetzt vlt 2 Wochen mit Delphi 5 (vorher und nach wie vor Lazarus) und wollte ein kleines Übungsprogramm schreiben.
Grundlage dafür ist eine bereits existierende Datenbank mit 2 Tabellchen.
Einmal Projekt mit ProjektNr, ProjektName und Hinweis
und einmal Kontrolle mit Kontroll_ID, ProjektNr, Status, Datum und Bemerkung.

Wie man sieht keine große Sache, in IBExpert die Datenbank aktuell halten ist kein Problem.
Jetzt möchte ich das in mein Übungsprogramm stecken.

Allerdings hab ich weder Delphi gelernt, noch jemanden zur Hand der mir irgendwas erklären könnte und manche Tutorials sind nichtmal die Zeit des Anklickens für mich wert, weil ich sie nicht verstehe...

Ich habe auf meiner Form:
TIBDatabase,
TIBTransaction,
TIBTable,
TDataSource,
TIBQuery,
TIBUpdateSQL und natürlich TDB's die meine Daten wiedergeben können.


SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
Select
K.Kontroll_ID, K.Datum, K.Status, K.Bemerkung,
P.ProjektNr, P.ProjektName, P.Hinweis
From Kontrolle K
left outer join Projekt P on (K.ProjektNummer = P.ProjektNr)
where K.Datum = '02.05.2011'
order by K.Kontroll_ID


So.
Schön und gut, wenn ich mein Programm starte sehe ich demnach auch nur Daten vom 02.05.2011.
Mit SQL's arbeiten ist aber auch weniger mein Problem.

Mein Problem ist:
Ich kann meine Daten zwar sehen, aber ich will damit ja
1. neue Datensätze erstellen und
2. vorhandene Datensätze bearbeiten

Ich weiss nicht wie das mit dem UpdateSQL funktionieren soll.
Ich weiss nicht was ich wo eintragen muss damit ich Daten einfügen / bearbeiten kann.
Und ich weiss auch nicht, wie das ganze dann auch schön in meiner Datenbank ankommt :(

Ich denke das umfangreichere Hilfestellungen werden und bedanke mich im vorraus für jeden Beitrag.
MfG Jakane

Moderiert von user profile iconKlabautermann: SQL-Tags eingefügt.


Coffeecoder - Mi 04.05.11 14:00

Hallo,

Ich habe zwar nicht mit der TIBDatabase gearbeitet, aber ich kann dir vielleicht schon einen Tipp geben was deine Probleme angeht:

1)


SQL-Anweisung
1:
2:
INSERT INTO Projekt P (P.ProjektName, P.Hinweis)
VALUES ('Neues Projekt''Projekt-Hinweis')


Deine ProjektNr sollte automatisch inkrementiert werden.

2)


SQL-Anweisung
1:
2:
3:
UPDATE Projekt P
SET P.ProjektName='Neuer Name für das Projekt', P.Hinweis='Neuer Hinweis für das Projekt'
WHERE P.ProjektNr=50



Ich hoffe, dass dir das bisschen weiterhilft.
Wenn du weiter Fragen hast, sag mir Bescheid.

Mfg Coffeecoder

Moderiert von user profile iconKlabautermann: SQL-Tags eingefügt.


Critter - Mi 04.05.11 14:01

Hallo,

wenn ich mich recht entsinne hatten die IBPlus Komponentensammlung einen Teil, der auf tDataSet (die Delphi Standard Datebank-Daten-Klasse) basierte und einen Teil der dies nicht tat. Zumindest für den tDatsat Basierten Teil kannst du jedes Delphi-DB Tutorial heran ziehen. Das hier [http://www.delphi-library.de/topic_Mit+tTable+amp+tQuery+Arbeiten_363.html] gibt einen kurzen Überblick über die wichtigsten Grundfunktionen (nicht Visuel).

Critter


Jakane - Mi 04.05.11 14:40

user profile iconCritter hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

wenn ich mich recht entsinne hatten die IBPlus Komponentensammlung einen Teil, der auf tDataSet (die Delphi Standard Datebank-Daten-Klasse) basierte und einen Teil der dies nicht tat. Zumindest für den tDatsat Basierten Teil kannst du jedes Delphi-DB Tutorial heran ziehen. Das hier [http://www.delphi-library.de/topic_Mit+tTable+amp+tQuery+Arbeiten_363.html] gibt einen kurzen Überblick über die wichtigsten Grundfunktionen (nicht Visuel).

Critter


Danke für die Seite, ich hab echt kein Glück beim finden :D
Mit dem 1. Versuch hab ich zwar knapp 3mal soviele Einträge wie ich mag, aber damit lässt sich wenigstens weiter arbeiten, danke :D


Jakane - Mi 04.05.11 14:57


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
For PNr:= 1 to 5 do
    Begin
      ShowMessage(IntToStr(Pnr));
      IBKontrolle.Open;
      IBKontrolle.Insert;
      IBKontrolle.FieldByName('ProjektNummer').AsString := IntToStr(PNr);
      IBKontrolle.FieldByName('Datum').AsString := DateToStr(Now{ - 1});
      IBKontrolle.FieldByName('BackUp_OK').AsString := 'N';
      IBKontrolle.Post;
      IBKontrolle.Close;



Das ist meine Einstellung, bekomme auch ganz artig 5 neue Datensätze, nur ein Problem

PNr in meiner Datenbank ist grundsätzlich 1, dabei sollte der bedingt durch die For-Schleife hochzählen.

Kann mir jemand verraten was ich vergessen habe? :?

Moderiert von user profile iconKlabautermann: Delphi-Tags hinzugefügt.


Jakane - Do 05.05.11 09:42


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
For PNr:= 1 to 3 do
    Begin
      IBKontrolle.Open;
      IBKontrolle.Insert;
      UqryProtokoll.InsertSQL.Clear;
      UqryProtokoll.InsertSQL.Add('Insert Into');
      UqryProtokoll.InsertSQL.Add('Kontrolle (ProjektNummer, Datum, BackUp_OK)');
      UqryProtokoll.InsertSQL.Add('Values (');
      UqryProtokoll.InsertSQL.Add(CHR($27) + IntToStr(PNr) + CHR($27) + ',');
      UqryProtokoll.InsertSQL.Add(CHR($27) + DateToStr(Now{ - 1}) + CHR($27) + ',');
      UqryProtokoll.InsertSQL.Add(CHR($27) + 'N' + CHR($27) + ')');
      IBKontrolle.Post;
      IBKontrolle.Close;


Hab den Fehler endlich selbst rausbekommen, jetzt weiss ich wozu diese UpdateSQLs gut sind :D

Moderiert von user profile iconMartok: Delphi-Tags hinzugefügt