Announcement

Collapse
No announcement yet.

Zähler in SQL-Tabelle

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zähler in SQL-Tabelle

    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?

  • #2
    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&gt

    Comment

    Working...
    X