Возникновении ошибки Assertion failure (MemData.pas, line 7245))
Добавлено: Чт 28 дек 2017 06:13
Приветствую разработчиков!
Имеем версию ODAC 10.1.3. Ошибка возникает при использовании фильтра на датасете.
Для воспроизведения ошибки:
DFM
object oqFindData: TOraQuery
SQL.Strings = (
'select '#39'AAA'#39' name, 0 chk from dual'
'union select '#39'BBB'#39' name, 1 chk from dual')
OnFilterRecord = oqFindDataFilterRecord
Left = 88
Top = 248
end
Код
var
sMatch: string; // global
procedure TForm1.oqFindDataFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
Accept := (Pos(UpperCase(sMatch), UpperCase(DataSet.FieldByName('name').AsString) ) > 0);
end;
procedure TForm1.btnStep1Click(Sender: TObject);
begin
sMatch:= 'AAA';
oqFindData.Open;
oqFindData.Filtered := False;
oqFindData.Filter:= '';
oqFindData.Filtered := True;
oqFindData.Edit;
oqFindData.FieldByName('chk').Value := 1;
end;
procedure TForm1.btnStep2Click(Sender: TObject);
begin
sMatch := '';
oqFindData.Filtered := False;
oqFindData.Filter:= '';
end;
Последовательно нажимаем btnStep1 и btnStep2. При клике на второй кнопке вылетает ошибка:
Assertion failure (D:\Projects\Delphi\Dac\Common\Source\MemData.pas, line 7245).
Будем благодарны за исправление этой ошибки.
Имеем версию ODAC 10.1.3. Ошибка возникает при использовании фильтра на датасете.
Для воспроизведения ошибки:
DFM
object oqFindData: TOraQuery
SQL.Strings = (
'select '#39'AAA'#39' name, 0 chk from dual'
'union select '#39'BBB'#39' name, 1 chk from dual')
OnFilterRecord = oqFindDataFilterRecord
Left = 88
Top = 248
end
Код
var
sMatch: string; // global
procedure TForm1.oqFindDataFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
Accept := (Pos(UpperCase(sMatch), UpperCase(DataSet.FieldByName('name').AsString) ) > 0);
end;
procedure TForm1.btnStep1Click(Sender: TObject);
begin
sMatch:= 'AAA';
oqFindData.Open;
oqFindData.Filtered := False;
oqFindData.Filter:= '';
oqFindData.Filtered := True;
oqFindData.Edit;
oqFindData.FieldByName('chk').Value := 1;
end;
procedure TForm1.btnStep2Click(Sender: TObject);
begin
sMatch := '';
oqFindData.Filtered := False;
oqFindData.Filter:= '';
end;
Последовательно нажимаем btnStep1 и btnStep2. При клике на второй кнопке вылетает ошибка:
Assertion failure (D:\Projects\Delphi\Dac\Common\Source\MemData.pas, line 7245).
Будем благодарны за исправление этой ошибки.