Problem mit first und last

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

JoelH
Beiträge: 3
Registriert: Mo, 22.03.2010 16:05

Problem mit first und last

Beitrag von JoelH »

Hallo,

ich habe ein kleines Problem. Ich lese Daten aus einer ods-Datei aus. Mit folgendem Code

Code: Alles auswählen

procedure TForm1.Button31Click(Sender: TObject);
var resultset : Variant;
    i : integer;
begin
  if OpenDialog1.execute then
  begin
    OO_Doc := TOLE_OpenOffice.create;
    OO_Doc.Connect;
    OO_Doc.Open_Database(OpenDialog1.filename);
    OO_Doc.StartDBConnect;
    resultset := OO_Doc.OpenSql('SELECT MIAID, NAME FROM TESTTABELLE');
    resultset.last;
    Stringgrid1.RowCount := resultset.getRow+1;
    resultset.first;
    i := 1;
    while resultset.next do
    begin
      Stringgrid1.Cells[0,i] := resultset.getString(1);
      Stringgrid1.Cells[1,i] := resultset.getString(2);
      inc(i);
    end;
    OO_Doc.CloseDBConnect;
  end;

function TOLE_OpenOffice.OpenSql(statement:String):variant;
var Stmt,Res : Variant;
begin
  Stmt := DB_Connection.createStatement;
  Stmt.SetPropertyValue('ResultSetType', 1005);
  Res  := Stmt.executeQuery(statement);
  result := res;
end;
Das Problem hierbei ist folgendes

Code: Alles auswählen

    resultset.last;
    Stringgrid1.RowCount := resultset.getRow+1;
    resultset.first;
damit möchte ich den Rowcount ermitteln. Das funktioniert auch soweit, allerdings bringt er mir im Anschluss in der Schleife nicht alle Datensätze zurück :( Er unterschlägt immer den ersten :(

Wenn ich die First/Last Sequenz weglasse, dann liest die Schleife alle Datensätze aus, aber dann hab ich den Rowcount nicht um das Grid auszurichten :(

Was mach ich falsch?