Autor Beitrag
elduchte
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 199

Win 2000, Win XP
Delphi 7
BeitragVerfasst: Do 30.09.04 09:39 
Hi Leute,

ich probiere mich seit einiger Zeit mit der DB-Programmierung in Delphi.

Ich habe in Access eine DB angelegt (TabFarben).

Jetzt greife ich mittels ADOConnection1, ADOQuery1 und DAtaSource1 auf diese Datenbank zu und stelle die Daten in einer DBGrid dar.

Jetzt möchte ich nach Klick auf einem Button, dass der Inhalt eines bestimmten DB-Feldes in einer weiteren DBGrid (also DBGrid2) dargestellt wird. Irgendwann sollen auch mehrere Daten übernommen werden, aber man fängt ja klein an.....

Irgendwie bekomme ich das Problem nicht gelöst....

Hat jemand einen Tipp?

Danke
Andreas
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 30.09.04 10:11 
DBGrids sind zum Anzeigen ganzer Datensätze vorgesehen. Ein einzelnes Datenbankfeld stellt man normalerweise in einen DBEdit dar.

Für das zweite DBGrid würdest du ein weiteres Query und DataSource benötigen. Für das DBEdit nicht unbedingt.

Erzähl mal etwas genauer, worauf das hinaus laufen soll, bevor ich weiter ins Details gehe.
elduchte Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 199

Win 2000, Win XP
Delphi 7
BeitragVerfasst: Do 30.09.04 10:19 
Alles klar....

Also in der Access-DB sind 25 Farben (TabFarben) aufgelistet, die in einer DBGrid untereinander ausgegeben werden. Sozusagen als Vorschau, welche Farben bereits archiviert wurden.

Jetzt möchte ich immer jeweils 4 Farben miteinander mischen (zB. schwarz - rot - gelb - violett).

Dies soll in einer 4-spaltigen DBGrid dargestellt werden.

Also: Klick auf Button, Spalte 1 in DBGrid2 wird schwarz eingetragen, Spalte 2 wird rot eingetragen ......

Diese Daten sollen übrigens in einer weiteren ACCESS-Tabelle abgelegt werden. Beide Tabellen befinden sich in der gleichen DB.

Die zweite DBGrid habe ich bereits mit einem weiteren Query und DataSource angebunden.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 30.09.04 11:08 
Das würde ich mir viel einfacher machen.
Nimm einfach vier Checkboxen mit den Vor-Farben.
Dazu einen Button "Jetzt mischen". Dort wird dann die Mischfarbe erzeugt und in TabFarben eingetragen.
Danach noch ein nettes Refresh auf die Query und fertisch.

Du brauchst kein zweites DBGrid, Query, Datasource.

Einfach, schnell und übersichtlich.
elduchte Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 199

Win 2000, Win XP
Delphi 7
BeitragVerfasst: Do 30.09.04 13:18 
Das geht halt nicht, ich muss mit Tabellen aus einer DB arbeiten.

Kannst du mir trotzdem weiterhelfen ??

Danke
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 30.09.04 13:36 
Also die passenden Komponenten hast du ja schon genommen.
Ich gebe dir jetzt mal eine grobe Vorgehensweise:

Button wird das erste mal gedrückt: Append bei Zieltabelle.
Außerdem:
Wenn der Button gedrückt wurde, musst du prüfen, wie weit die Zieltabelle schon gefüllt wurde. Dann nimmst du die gewählte Farbe und packst sie in das nächste frei Tabellenfeld.
Wenn die 4 Felder gefüllt sind, musst du nur noch den Datensatz speichern (Post).
Falls du vorher noch andere Felder füllen musst, kannst du das alles noch vor dem Post machen.

Wichtig ist dabei, dass beim neuen Query Requestlive auf True steht. Dies geht nicht bei jedem SQL-Statement.

Ich hoffe das reicht erstmal zu weiterkommen.
elduchte Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 199

Win 2000, Win XP
Delphi 7
BeitragVerfasst: Do 30.09.04 13:36 
So, bin mittlerweile soweit, dass ich die Daten aus der einen Tabelle lesen muss und in die andere Tabelle schreiben muss, damit ich sie in meiner 2. DBGrid darstellen kann.

Und wie frage ich die Daten ab und trage sie ein? Ist das alles SQL ?

Ich dachte nicht, dass so ein kleiner Mischalgorithmus so kompliziert ist
elduchte Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 199

Win 2000, Win XP
Delphi 7
BeitragVerfasst: Do 30.09.04 13:54 
Ich begreife dass alles nicht.....

Wie lautet der Code, den ich in meiner Button-Klick-Procedure einfügen muss, um einen Wert aus der einen Tabelle in die 2. Tabelle zu schreiben.....

Dass würde mir schon langen.

Danke
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 30.09.04 13:58 
elduchte hat folgendes geschrieben:
So, bin mittlerweile soweit, dass ich die Daten aus der einen Tabelle lesen muss und in die andere Tabelle schreiben muss, damit ich sie in meiner 2. DBGrid darstellen kann.

Und wie frage ich die Daten ab und trage sie ein? Ist das alles SQL ?

Ich dachte nicht, dass so ein kleiner Mischalgorithmus so kompliziert ist


Soo kompliziert ist das auch nicht. Ich bin nur zu faul, dir den fertigen Source zu basteln :twisted: .

Um einen neuen Datensatz anzulegen:
ausblenden Quelltext
1:
Query2.Append;					

Um Daten auszulesen und zu übertragen:
ausblenden Quelltext
1:
Query2.FieldByName(<FeldName>).AsString := Query1.FieldByName(<FeldName>).AsString;					

Um einen Datensatz zu speichern:
ausblenden Quelltext
1:
Query2.Post;					


Man kann das auch über SQL-Statements (Insert, Update) machen, aber das führt dann doch zu weit, für so ein kleines Problem.
elduchte Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 199

Win 2000, Win XP
Delphi 7
BeitragVerfasst: Do 30.09.04 15:41 
Hi,

vielen Dank, hatte es schon so ähnlich probiert, allerdings immer mit einer Fehlermeldung. Jetzt weiß ich auch warum....

Eine Frage habe ich allerdings noch:

Meine Daten werden in der DB immer gespeichert, ob ich nun mit Post oder ohne arbeite. Woran liegt das?
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 30.09.04 15:58 
Stichwort AutoCommit.
elduchte Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 199

Win 2000, Win XP
Delphi 7
BeitragVerfasst: Do 30.09.04 16:47 
Ich danke dir für deine Hilfe, bin schon ein ganzes Stück weiter.....

Wo wir allerdings dabei sind, ich wollte mittels einer Button-Procedure die in die Tabelle eingefügten Test-Daten löschen und zwar mit

Query1.ClearFields;

erhalte aber dann eine Exeption, die besagt, dass ich mich nicht im Editiermodus befinde. Was mache ich denn nun schon wieder falsch ?
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 30.09.04 16:49 
Query1.ClearFields dient dazu, in einem Datensatz, der gerade bearbeitet wird (Edit-Modus), die Feldinhalte zu leeren.
Was du möchtest ist Query1.Delete. Ganz einfach.