Zitat von
hoika:
Hallo,
wenn du den obigen Code für den
DB-Grid benutzt
also nur den einen Wert anzeigst,
steht dort dann wirklich 0 in der Spalte NR ?
Heiko
Nein, dann stehen dort die richtigen Werte.
Ich arbeite mit Offline - Datenmengen.
Dazu habe ich ein Tool gebaut, welches mir aus einer
Query ein ADV - Stringgrid füllt.
Beispiel:
Delphi-Quellcode:
// Spalten für das Grid definieren Parameter: Feldbezeichner , Spaltentitel, Spaltenbreite
Grid.Add('
ID','
',0);
// Die ID Spaltenbreite 0 -> verborgen
Grid.Add('
NR','
Nr', 32);
// Feldname NR Spaltentitel Nr. Spaltenbreite 32
Grid.Add('
BEZEICH','
Bezeichnung des Vorgangs',134);
Starttransaction;
Grid.LoadFromTable('
ANWENDERDAT');
// Generiert automatisch eine SQL Abfrage und arbeitet diese ab.
Commit;
Im eigentlichen Programm lese ich dann aus dem Grid die ID aus und verarbeite die Sätze einzeln.
Der Unterschied ist, das zum Füllen des Grid eine Datenmenge abgefragt wird und für die
Einzelverarbeitung erfolgt die Abfrage mit WHERE und einem Parameter.
(Die Verarbeitung wird über einen Schalter aktiviert.)
Delphi-Quellcode:
Query.SQL.Text := '
Select NR,ABTLG,BEZEICHNUNG From ANWENDERDAT WHERE ID=:id';
Query.Prepare;
StartTransaction;
for i := 1
to Grid.Count-1
do
begin
ID := Grid.asInteger('
ID',i);
// Grid auslesen SQLFeldname, Row
Query.ParambyName('
ID').asinteger := ID;
...
Commit;
Die aufbereitete Abfrage in IBExpert kopiert, bringt das gewünschte Ergebnis.
Der Code selbst läuft in einem Plugin (HYDRA3.0).
Connection und Transaction sind in dem Plugin definiert.
Die Programmconnection übergebe ich über ein Interface und erzeuge mit Connection.AssignConnect(..
einen Clone der Verbindung.
An dieser Stelle will ich heute abend mal experimentieren.
Gruß
Peter