In version 8.6.11 it works fine.
See sample:
Code: Select all
program OdacRefreshRecordTestSample.dpr;
{$APPTYPE CONSOLE}
uses
DB, Ora, OraSmart, sysutils;
var
UserName,Password,Server: String;
Session: TOraSession;
QR: TSmartQuery;
begin
WriteLn('Step 1: Logon');
Write('Username: ');
ReadLn(UserName);
Write('Password: ');
ReadLn(Password);
Write('Server: ');
ReadLn(Server);
WriteLn('');
try
Session := TOraSession.Create(nil);
try
//logon to Database
Session.LoginPrompt := False;
Session.UserName := UserName;
Session.Password := Password;
Session.Server := Server;
Session.Open;
//run test
QR := TSmartQuery.Create(nil);
try
QR.Session := Session;
QR.Options.FullRefresh := True;
QR.SQL.Add('SELECT * FROM (');
QR.SQL.Add(' SELECT D1.DUMMY, D2.DUMMY AS FIELD2');
QR.SQL.Add(' FROM DUAL D1, DUAL D2');
QR.SQL.Add(' WHERE D1.DUMMY=D2.DUMMY');
QR.SQL.Add(')');
QR.KeyFields := 'DUMMY';
QR.UpdatingTable := 'DUAL';
WriteLn('Step 2: Open Query');
Writeln(QR.SQL.Text);
QR.Open;
try
Writeln('Step 3: RefreshRecord');
QR.RefreshRecord;
except
on E:Exception do
begin
Writeln('RefreshRecord failed. ' + E.Message);
Readln;
end;
end;
finally
QR.Free;
end;
finally
Session.Free;
end;
except
on E:Exception do
begin
Writeln(E.Message);
Readln;
end;
end;
end.