Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Filter cannot be opened


Автор: Гульмира 16.2.2011, 11:34
Доброго Вам дня. 
Не получается  фильтр организовать по полю TIM_START (datetime), при вводе данных выскакивает ошибка "Filter cannot be opened". По остальным полям фильтр работает.

Подскажите где найти источник ошибки?!   smile 

Фильтр:
Код

procedure TFmHlp.DBGridEh6ApplyFilter(Sender: TObject);
var
 i:integer;
 s:string;
begin
 s:='';
 for I:=0 to DBGridEh6.Columns.Count-1 do
 begin
  if DBGridEh6.Columns[i].STFilter.ExpressionStr<>'' then
  begin
   if s<>'' then s:=s+' AND '+DBGridEh6.Columns[i].FieldName+' like %'+DBGridEh6.Columns[i].STFilter.ExpressionStr+'%'
   else s:=DBGridEh6.Columns[i].FieldName+' like ''%'+DBGridEh6.Columns[i].STFilter.ExpressionStr+'%'''
  end
 end;

if s='' then
 begin
  DM1.Query3.Filtered:=false;
  exit;
 end;

 DM1.Query3.Filtered:=false;
 DM1.Query3.Filter:=s;
[U] DM1.Query3.Filtered:=true;[/U]   ---- указатель  показывает на эту строку
end;


SQL:
Код

CREATE PROC sp_Test;2--Выборка 
    @search3 varchar(50)=NULL,
    @date_perm datetime=NULL,
    @tim_start datetime=NULL,
    @del bit=0
AS
SELECT * FROM tester 
WHERE    (ID > 0) AND
    (@search3 IS NULL   OR REG_WS LIKE '%' + @search3+'%')AND  
    (@date_PERM IS NULL OR DAT_PERM=@DATE_PERM)AND
             ( @tim_start IS NULL  OR  tim_start=@tim_start ) AND 
        (@del=0 or DEL=0)



Автор: superVad 16.2.2011, 14:10
Что тут за текст - когда ошибка?
Код

DM1.Query3.Filter:=s;

Автор: Гульмира 16.2.2011, 15:05
Цитата(superVad @ 16.2.2011,  14:10)
Что тут за текст - когда ошибка?
Код

DM1.Query3.Filter:=s;

там где присвоение s ничего не показывает.
а вот на строке DM1.Query3.Filter:=true; показывает  DM1.Query3.Filter:=false; 

В таблице поле tim_start имеет вид 05.11.2010 2:00:00.

Здесь может формат как то указать @tim_start IS NULL  OR  tim_start=@tim_start  ?????

я так пробовала  tim_start=CAST(@tim_start AS VARCHAR), но ошибка остается.

Автор: superVad 16.2.2011, 18:17
Цитата(Гульмира @  16.2.2011,  14:05 Найти цитируемый пост)
там где присвоение s ничего не показывает

Ну так посмотри smile
Выведи в ShoцMessage, нажми Ctrl+C вставь сюда на форум. Можешь во время дебага навести туда мышку и для себя посмотреть, что там содержится в строке...

Может быть, что и из-за формата.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)