Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2016, 12:29   #11
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
var Qry:TDataSet
А зачем тут var?
northener вне форума Ответить с цитированием
Старый 16.05.2016, 12:37   #12
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
А зачем тут var?
подразумевал что когда что то меняешь
в переменной нужно передавать ее через var
я так понял тут передается ссылка на объект
и Var не нужен?
спасибо все гениальное просто.
а не могли бы вы ответить по поводу работы свойства Filter?
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 16.05.2016, 12:57   #13
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Filter, Filtered, OnFilterRecord только для набора данных и ни какого SQL
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.05.2016, 13:09   #14
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

В эмбаркадере там совсем с ума сошли? (или кто там у руля теперь)
ну зачем же справку уничтожили, что теперь людям делать...

да и переменная никому не мешает, правда не понятно почему ее ввели
come-on вне форума Ответить с цитированием
Старый 16.05.2016, 13:15   #15
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Filter, Filtered, OnFilterRecord только для набора данных и ни какого SQL
Спасибо, тогда труд не напрасный)

Цитата:
Сообщение от come-on Посмотреть сообщение
В эмбаркадере там совсем с ума сошли? (или кто там у руля теперь)
ну зачем же справку уничтожили, что теперь людям делать...
Сволочи!

Цитата:
Сообщение от come-on Посмотреть сообщение
да и переменная никому не мешает, правда не понятно почему ее ввели
не понял ?
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 16.05.2016, 16:02   #16
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Вот такое такая процедура у меня получается.
Код:
Procedure FilterRecords(Qry:TDataSet; const ArrayNameFild: array of String; const ArrayValueFild: array of Variant );
var I : byte;
    PVarType,
    VarFildInt:Integer;
    VarFildFloat:Double;
    VarFildStr:String;
    VarFildDateTime:TDateTime;
Begin
 With Qry do
 Begin
  Filtered:= false;
  Filter:='';
  DecimalSeparator:='.'; //Первый вопрос решон
  for I := Low(ArrayValueFild) to High(ArrayValueFild) do
  begin
  PVarType:=VarType(ArrayValueFild[i]);
  case PVarType of
    $0002,$0003,$0011:
      Begin
       VarFildInt:=VarAsType(ArrayValueFild[i],PVarType);
       if Filter = '' then Filter:=ArrayNameFild[i]+'='+IntToStr(VarFildInt)
          else Filter:=Filter+' AND '+ArrayNameFild[i]+'='+IntToStr(VarFildInt);
      end;
    $0004,$0005,$0006: 
      Begin
        VarFildFloat:=VarAsType(ArrayValueFild[i],PVarType);
        if Filter = '' then Filter:=ArrayNameFild[i]+'='+FloatToStr(VarFildFloat)
          else Filter:=Filter+' AND '+ArrayNameFild[i]+'='+FloatToStr(VarFildFloat);
      end;
    $0100,$000D:
      Begin
       VarFildStr:=VarAsType(ArrayValueFild[i],PVarType);
       if  VarFildStr<>'' then
         if Filter = '' then Filter:=ArrayNameFild[i]+' LIKE '+#39+VarFildStr+'%' + #39
           else Filter:=Filter+' AND '+ArrayNameFild[i]+' LIKE '+#39 +VarFildStr+'%' + #39;
      end;
    $0007:
      Begin
        VarFildDateTime:=VarAsType(ArrayValueFild[i],PVarType);
        if Filter = '' then Filter:=ArrayNameFild[i]+'='+DAteTimeToStr(VarFildDateTime)
          else Filter:=Filter+' AND '+ArrayNameFild[i]+'='+DAteTimeToStr(VarFildDateTime);;
      end;
   else
    ShowMessage('Ошибка типа!');
  end;
  Form1.Edit1.TExt:=Filter;
  if Filter='' then Filtered:= false
    else Filtered:=True;
  end;
 end;
end;
а теперь к проблеме при переводе из Fload в String вместо точки ставится запятая
я понимаю можно вручную заменить в строке запятую на точку, но может есть более правильный способ?

П.С. если есть идеи как еще можно расширить и оптимизировать процедуру, буду рад слышать критику и предложения.
Терпение!Дежурный экстрасенс скоро свяжется с вами!

Последний раз редактировалось Dvoishnik; 16.05.2016 в 16:19.
Dvoishnik вне форума Ответить с цитированием
Старый 16.05.2016, 16:21   #17
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

FloatToStrF + TFormatSettings
Цитата:
буду рад слышать критику
выбросить, потому что не нужная
come-on вне форума Ответить с цитированием
Старый 16.05.2016, 16:31   #18
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Забудешь про те константы, а так все прозрачно
Код:
PVarType:=VarType(ArrayValueFild[i]) and VarTypeMask;
case PVarType of
  varSmallint,varInteger,varByte:
    begin
    ...
    end;    
  varSingle,varDouble,varCurrency: 
  ...
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.05.2016, 16:31   #19
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Цитата:
Сообщение от come-on Посмотреть сообщение
выбросить, потому что не нужная
Почему? Мне кажется если ее доработать (я задумываюсь о визуальной Надстройке)
то получиться что то годное.

Цитата:
Сообщение от Аватар Посмотреть сообщение
Забудешь про те константы, а так все прозрачно[
Действительно. спасибо!
Терпение!Дежурный экстрасенс скоро свяжется с вами!

Последний раз редактировалось Dvoishnik; 16.05.2016 в 16:37.
Dvoishnik вне форума Ответить с цитированием
Старый 16.05.2016, 16:36   #20
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
выбросить, потому что не нужная
Тоже так думаю, есть SQL и чего огород городить с кучей фильтров на клиенте. Фильтры должны быть в запросе
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Procedure gandi-04 SQL, базы данных 2 06.11.2013 01:57
программа с типизированными параметрами-значениями и параметрами-переменными Kira09 Паскаль, Turbo Pascal, PascalABC.NET 1 20.12.2010 22:23
Procedure ALABAMA Паскаль, Turbo Pascal, PascalABC.NET 3 20.05.2010 21:06
procedure! please! help! NeAlSe Помощь студентам 2 15.06.2008 15:38