Конференция "Базы" » DBgridEh ошибка фильтре Error in expression [D6, Firebird]
 
  • Ulugbek (11.03.09 14:57) [0]
    Привет всем.
    Помогите с фильтрем в DbgridEh .
    Когда фильтр делаю по одной поле выдает ошибку
    Error in expression.. а остальними нет..
    В поля содержит такого значения
    (095) 949-959-59
    если фильтре так напишу то ругаеться..
    Помогите в чем проблема..
  • Немо © (11.03.09 15:09) [1]
    как то встречалось, что он скобки не понимает
    попытайтесь без скобок как-то сделать, изменить фильтр
  • Ulugbek (11.03.09 15:49) [2]
    Просто у меня пользователь хотел что фильтр был как у Excel и автоматом фильтровал..
    Сделал так
    соединил Tibclientdataset>DataDriverEh>MemTable>Datasource..
    В DbGrideH>stfilter=true ,visible=true server и local sortin=true;

    Добавил Uses EhlibIBX.pas и в модуле
    initialization
     DBGridEhDefaultStyle.FilterEditCloseUpApplyFilter := True;
    что бы автоматом фильтр делал и все.
    В поля содержит такого значения
    (095) 949-959-59 если я вот так напишу то он не ругает '(095) 949-959-59'
    Может Dbgrideh.pas поправить?
  • Ulugbek (18.03.09 12:55) [3]
    Помогите а !
    Никто  не сталкивался с таким Errorom :(
  • немо2 (18.03.09 13:07) [4]
    >> если я вот так напишу то он не ругает '(095) 949-959-59'
    проблема решена? ->>  ну так и пиши!
    не устраивает? ->> поправь Dbgrideh.pas
  • Ulugbek (18.03.09 14:47) [5]

    > >> если я вот так напишу то он не ругает '(095) 949-959-
    > 59'
    > проблема решена? ->>  ну так и пиши!
    > не устраивает? ->> поправь Dbgrideh.pas
    >


    Это пользователю не нравится писать с апострами...
    Вот я незнаю именно что изменить в DbgridEh.pas..
    Если знаешь помоги очень надо..
  • немо2 (18.03.09 14:52) [6]
    трогать исходники не надо по возможности бы

    >> пользователю не нравится писать с апострами
    так пусть не пишет
    он напишет как нравится, а ты будешь подставлять QuotedStr(от того что он напишет)
  • Ulugbek (18.03.09 15:15) [7]
    но как буду вставить QuotedStr если он из списка выберить..
    Или где я буду поставить это . Я в фильре ничего не писал это оно автоматом должно правильно..
    Пример плиз.
  • Ulugbek (18.03.09 15:23) [8]
    Где, куда
    OnApplyfiltr Писать? Пример.. Плииз
  • немо2 (18.03.09 15:56) [9]
    >>  OnApplyfiltr
    тебе виднее

    а вообще, скобки он рассматривает похоже как сложный фильтр, для доп. условий
    если в DbUtilsEh.pas вот это место
     begin
       for i := Pos to Length(S) do
       begin
         if ((S[i] in [' ']) and CheckForOperand(S, SkipBlanks(S, i))) or
           ((S[i] in [')', '('])) or
           (PreferCommaForList and (S[i] = ',')) then

         begin
           Result := Copy(S, Pos, i - Pos);
           Pos := i;
           Exit;
         end;
       end;
       Result := Copy(S, Pos, MAXINT);
       Pos := Length(S) + 1;
     end;
    переправить, может и получится..
  • Ulugbek (18.03.09 16:13) [10]
    :( Как?
  • немо2 (18.03.09 16:22) [11]

    >    for i := Pos to Length(S) do
    >    begin
    >      if ((S[i] in [' ']) and CheckForOperand(S, SkipBlanks(S,
    >  i))) or
    >        ((S[i] in [')', '('])) or
    >        (PreferCommaForList and (S[i] = ',')) then
    >      begin
    >        Result := Copy(S, Pos, i - Pos);
    >        Pos := i;
    >        Exit;
    >      end;
    >    end;

    выкинуть
  • Ulugbek (18.03.09 16:39) [12]
    :)) Да не помогло
    var
     i: Integer;
    begin
     Result := Null;
     if Pos > Length(S) then
       Exit;
     if S[Pos] = '''' then
     begin
       for i := Pos + 1 to Length(S) do
         if S[i] = '''' then
         begin
           Result := Copy(S, Pos + 1, i - Pos - 1);
           Pos := i + 1;
           Exit;
         end;
       raise Exception.Create(SQuoteIsAbsentEh + S);
     end;
     {else                    Коментировал
     begin
       for i := Pos to Length(S) do
       begin
         if (CharInSet(S[i], [' ']) and CheckForOperand(S, SkipBlanks(S, i))) or
           (CharInSet(S[i], [')', '('])) or
           (PreferCommaForList and (S[i] = ',')) then
         begin
           Result := Copy(S, Pos, i - Pos);
           Pos := i;
           Exit;
         end;
       end;
       Result := Copy(S, Pos, MAXINT);
       Pos := Length(S) + 1;
     end;}
    end;
  • Ulugbek (18.03.09 17:23) [13]
    НЕМО2
    Вот для примера тест http://ifolder.ru/11116769
    я DBUtilsEh коментировал
    {else                    Коментировал
    begin
      for i := Pos to Length(S) do
      begin
        if (CharInSet(S[i], [' ']) and CheckForOperand(S, SkipBlanks(S, i))) or
          (CharInSet(S[i], [')', '('])) or
          (PreferCommaForList and (S[i] = ',')) then
        begin
          Result := Copy(S, Pos, i - Pos);
          Pos := i;
          Exit;
        end;
      end;
      Result := Copy(S, Pos, MAXINT);
      Pos := Length(S) + 1;
    end;}

    Но все равно ругает..
  • немо2 (18.03.09 17:37) [14]
    1 нет у меня rar, ибо платный
    2 EhLib 3.6 у меня, у тебя какая?
    3
    begin
     
    {
    for i := Pos to Length(S) do
      begin
        if ((S[i] in [' ']) and CheckForOperand(S, SkipBlanks(S, i))) or
          ((S[i] in [')', '('])) or
          (PreferCommaForList and (S[i] = ',')) then
        begin
          Result := Copy(S, Pos, i - Pos);
          Pos := i;
          Exit;
        end;
      end;
    }

      Result := Copy(S, Pos, MAXINT);
      Pos := Length(S) + 1;
    end;
    вот что если закоментить?
  • Ulugbek (18.03.09 17:41) [15]
    у меня Ehlib 4.2.16//
    Завтра отпишусь резултат
    Ok пасибо
  • немо2 (18.03.09 17:45) [16]
    а Ehlib 4.2.16 - тоже платная. Или уже нет?
  • Ulugbek (19.03.09 08:12) [17]
    Привет всем!
    НЕМО2
    нет не получился.. Все равно ругает..
    EHLIB Ehlib 4.2.16 платная
  • Ulugbek (19.03.09 14:08) [18]
    НЕМО2
    помоги если не устал Ж(
  • turbouser © (19.03.09 16:51) [19]

    > Ulugbek   (19.03.09 08:12) [17]
    >
    > EHLIB Ehlib 4.2.16 платная

    Если куплена - есть саппорт.
 
Конференция "Базы" » DBgridEh ошибка фильтре Error in expression [D6, Firebird]
Есть новые Нет новых   [134473   +32][b:0][p:0.001]