von JoelH » Mi, 31.03.2010 11:07
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?
Hallo,
ich habe ein kleines Problem. Ich lese Daten aus einer ods-Datei aus. Mit folgendem Code
[code]
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;
[/code]
Das Problem hierbei ist folgendes
[code]
resultset.last;
Stringgrid1.RowCount := resultset.getRow+1;
resultset.first;
[/code]
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?