Не можу розібратися з Filter # 032; в IBQuery і IBDataSet.
У даних компонент вказане властивість не реалізовано.
Користуйтеся OnFilterRecord.
У сенсі не реалізовано: -0
А як саме використовувати
> OnFilterRecord
НЕ морочте голову, а пишіть людський запит
SELECT.
FROM.
WHERE
НЕ морочте голову, а пишіть людський запит
SELECT.
FROM.
WHERE
Справа в тому, що після фільтрації необхідно підрахувати суму за трьома таблицями. зробив через
> SELECT.
> FROM.
> WHERE
але працює дуже повільно. Думав, що якщо відфільтрувати, то вийде швидше.
через фільтр не швидше, а треба робити запитом і використовувати угруповання (Group by).
> Соловйов
> OnFilterRecord:
>.
> Access: = <условие>
>.
Не зовсім зрозумів, що таке access і з чим його їдять.
Сварки не Access, а Accept.
procedure Tdm.ibDataSetFilterRecord (DataSet: TDataSet;
var Accept: Boolean);
begin
Accept: = DataSet.FieldByName ( "Field"). AsString = "ла ла" and
DataSet.FieldByName ( "Field"). AsString = "бу бу";
end;
Дик не оре щось. Написав як сказано (ну майже як сказано) на кнопку засунув IBDataSet1.Filtered: = true; Після чого в DBGrid з'являється лише один рядок і та порожня. Як лікувати?
А якщо припустимо написати Accept: = IBDataSet1.FieldByName ( "Field"). AsString = "%" ;. то по ідеї повинні вивестися всі записи, або НІ?
немає. Видасть де у тебе Field = "%", все поля це Accept = true;
Зрозуміло! C "%" я від безвиході. Копіюю значення з таблиці, вставляю в умова onFilterRecord, а він (DBGrid) мені нічого не показує. А може вся справа в регістрі?
procedure TForm1.IBDataSet1FilterRecord (DataSet: TDataSet;
var Accept: Boolean);
begin
Accept: = IBDataSet1.FieldByName ( "CUSTOMERSF"). AsString = "МЕРКУЛЯЕВ";
end;
procedure TForm1.Button2Click (Sender: TObject);
begin
IBDataSet1.Filtered: = true;
end;
а слабо написати
IBDataset1.Close;
IBDataset1.SelectSql.Clear;
IBDataset1.SelectSql.Add ( "SELECT *" +
"FROM