Ich möchte eine SQL-Tabelle mit einem dbgrid-Objekt darstellen und die Datensätze durchnummerieren lassen. Leider habe ich keine Möglichkeit gefunden, da die SQL-Tabelle sich ohne Update weitert, die Zahlenvariablen anzunehmen. Hat jemand eine Idee?
Announcement
Collapse
No announcement yet.
Zähler in SQL-Tabelle
Collapse
X
-
Hallo,
wenn alle Datensätze ohne Scrollen zu müssen ins TDBGrid passen, reicht ein berechnetes Feld aus. Ansonsten gibt es verschiedene Alternativen: <br>
a) Datenmenge wird über eine Stored Procedure angefordert, die durchnummeriert <br>
b) Datenmenge wird in eine In-Memory-Tablle (TClientDataSet, TIBClientDataSet, TADODataSet, Recordset-Objekt usw.) kopiert, wobei man dort die Nummerierung direkt reinschreibt. Das TDBGrid verwendet diese In-Memory-Tabelle als Datenquelle.
Das folgende Beispiel demonstriert die Durchnummerierung der Datensätze der SELECT-Abfrage am Beispiel der Tabelle COUNTRY aus der InterBase-Demodatenbank IBLOCAL. Zusätzlich zu den beiden Spalten der Tabelle wird der Rückgabeparameter POS als INTEGER deklariert und vor dem Aufruf von SUSPEND hochgezählt:
<pre>
CREATE PROCEDURE GETCOUNTRY RETURNS (
POS INTEGER,
COUNTRY VARCHAR(15),
CURRENCY VARCHAR(10)
) AS
DECLARE VARIABLE iCOUNT INTEGER;
BEGIN
iCOUNT = 0;
FOR SELECT Country, Currency
FROM COUNTRY
INTO :Country, :Currency
DO
BEGIN
iCOUNT = iCOUNT + 1;
Pos = iCOUNT;
SUSPEND;
END
END
^
</pre>
Comment