Найден 1 результат

MikeV
Вс 19 авг 2018 13:32
Форум: InterBase Data Access Components
Тема: Является ли это ошибкой или нет?
Ответы: 1
Просмотры: 10197

Является ли это ошибкой или нет?

TUniQuery.SQL.Text := 'SELECT * FROM TABLE';

TUniQuery.Open;

TUniQuery.Last;

while not TUniQuery.Eof do //Всегда возвращает False и никогда не выполняет цикл
begin
TUniQuery.Next;
end;

TUniQuery.Open;
TUniQuery.First; // Не обязательно, всегда открывает начиная с 1 записи

while not TUniQuery.Eof do //Условие выполняется и все записи прочитаны
begin
TUniQuery.Next;
end;

Я думаю, что после вызова процедуры TUniQuery.Last; условие 'while not TUniQuery.Eof do' должно выполниться один раз и только после проедуры TUniQuery.Next; вернуть False.

Второй вопрос по поводу транзакций.
TUniQuery.SpecificOtions.AutoCommit := True;
TUniQuery.SQL.Text := 'UPDATE TABLE ..';
TUniQuery.Transaction := TUniTransaction;
TUniTransaction.StartTransaction;
TUniQuery.ExecSQL;
TUniTransaction.Active = True ? // Всегда возвращает True

Я думаю, что после вызова процедуры TUniQuery.ExecSQL; условие TUniTransaction.Active должно возвращать False, т.к. либо транзакция закончилась Commited, либо RollBack, в любом случае она закончилась и повторный вызов TUniTransaction.Commit или TUniTransaction.Rollback; ни к чему не приведет, кроме как сделает условие TUniTransaction.Active = False.

Спасибо за уделенное внимание.

Delphi 7 + Unidac 7.2.7