49 |
|
uses |
50 |
|
{$IFDEF WINDOWS } |
51 |
|
Windows, |
52 |
< |
{$ELSE} |
52 |
> |
{$ENDIF} |
53 |
> |
{$IFDEF UNIX} |
54 |
|
unix, |
55 |
|
{$ENDIF} |
56 |
|
SysUtils, Classes, IBDatabase, IBExternals, IB, IBSQL, Db, |
1412 |
|
inherited Create; |
1413 |
|
FDataSet := ADataSet; |
1414 |
|
FTimer := TFPTimer.Create(nil); |
1415 |
< |
FTimer.Enabled := true; |
1415 |
> |
FTimer.Enabled := false; |
1416 |
|
FTimer.Interval := 0; |
1417 |
|
FTimer.OnTimer := HandleRefreshTimer; |
1418 |
|
FDelayTimerValue := 0; |
1427 |
|
|
1428 |
|
procedure TIBDataLink.HandleRefreshTimer(Sender: TObject); |
1429 |
|
begin |
1430 |
< |
FTimer.StopTimer; |
1430 |
> |
FTimer.Enabled := false; |
1431 |
|
if FDataSet.Active then |
1432 |
|
FDataSet.RefreshParams; |
1433 |
|
end; |
1436 |
|
begin |
1437 |
|
if FDelayTimerValue = AValue then Exit; |
1438 |
|
FDelayTimerValue := AValue; |
1439 |
+ |
{$IF FPC_FULLVERSION >= 30002} |
1440 |
+ |
if (AValue > 0) and not IsMultiThread then |
1441 |
+ |
IBError(ibxMultiThreadRequired,['TIBQuery/TIBDataset MasterDetailDelay']); |
1442 |
|
FTimer.Interval := FDelayTimerValue; |
1443 |
+ |
{$IFEND} |
1444 |
|
end; |
1445 |
|
|
1446 |
|
procedure TIBDataLink.ActiveChanged; |
1461 |
|
begin |
1462 |
|
{$IF FPC_FULLVERSION >= 30002} |
1463 |
|
if FDelayTimerValue > 0 then |
1464 |
< |
FTimer.StartTimer |
1464 |
> |
with FTimer do |
1465 |
> |
begin |
1466 |
> |
CheckSynchronize; {Ensure not waiting on Synchronize} |
1467 |
> |
if Enabled then |
1468 |
> |
begin |
1469 |
> |
StopTimer; |
1470 |
> |
StartTimer; |
1471 |
> |
end |
1472 |
> |
else |
1473 |
> |
Enabled := true; |
1474 |
> |
end |
1475 |
|
else |
1476 |
|
{$IFEND} |
1477 |
|
FDataSet.RefreshParams; |
5098 |
|
function TIBDataSetUpdateObject.GetRowsAffected( |
5099 |
|
var SelectCount, InsertCount, UpdateCount, DeleteCount: integer): boolean; |
5100 |
|
begin |
5101 |
+ |
Result := true; |
5102 |
|
SelectCount := 0; |
5103 |
|
InsertCount := 0; |
5104 |
|
UpdateCount := 0; |