Autor Beitrag
Jakane
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Mi 04.05.11 12:17 
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.

ausblenden 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
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mi 04.05.11 13:00 
Hallo,

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

1)

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


Deine ProjektNr sollte automatisch inkrementiert werden.

2)

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 328
Erhaltene Danke: 3

Windows 7
Delphi 7 Pro.
BeitragVerfasst: Mi 04.05.11 13: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 gibt einen kurzen Überblick über die wichtigsten Grundfunktionen (nicht Visuel).

Critter

_________________
Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)

Für diesen Beitrag haben gedankt: Jakane
Jakane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Mi 04.05.11 13: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 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Mi 04.05.11 13:57 
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Do 05.05.11 08:42 
ausblenden 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