Железо, пользователи, сеть

Модераторы: kdv, CyberMax

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 15 сен 2006, 22:23

Если он (Дейт) не будет против, буду рад прочитать хотя бы эту главу на сайте.
я согласен, что Дейт дорогой (700 руб), но у меня нет ни малейшего желания вколачивать главу про null хоть сюда, хоть на сайт. Тем более что глава приличного размера.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 16 сен 2006, 00:18

И там вообще-то не только эта глава полезная :)

Zhur
Сообщения: 125
Зарегистрирован: 01 мар 2006, 18:17

Сообщение Zhur » 16 сен 2006, 09:30

Merlin писал(а):И там вообще-то не только эта глава полезная :)
В таком случае, скажите пожалуйста полное название издания... буду искать.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 16 сен 2006, 13:45

В таком случае, скажите пожалуйста полное название издания... буду искать.
щас загрызу, честное слово. :twisted:
открываешь www.ibase.ru, Документация, и докручиваешь страницу до изображений книжек. Там есть Дейт и ссылка на него.

к слову. там что-то около 1200-1300 страниц великолепной бумаги, да еще и мелким шрифтом напечатано. т.е. объем там немаленький.

Zhur
Сообщения: 125
Зарегистрирован: 01 мар 2006, 18:17

Сообщение Zhur » 16 сен 2006, 14:09

извиняюсь :oops: . Больше не буду. Все ясно.

londinium
Сообщения: 27
Зарегистрирован: 17 апр 2006, 14:04

Сообщение londinium » 20 сен 2006, 22:40

Здравствуйте, Господа!

Вопрос общий: планирую дать пользователю возможность выбирать оборудование по разным признакам (инвентарный номер, тип, находится в ремонте или нет, кто им пользуется), так вот и проблема,как это лучше оформить в клиентском приложении? Т.е как проанализировать на клиенте, какой фильтр или группу фильтров выбрал пользователь и с учетом этого сформировать запрос.

С уважением, Londinium

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 21 сен 2006, 11:43

londinium писал(а):как это лучше оформить в клиентском приложении?
Зависит от того, как ты оформишь представление этой информации для выбора.
londinium писал(а):Т.е как проанализировать на клиенте, какой фильтр или группу фильтров выбрал пользователь
Чем предоставляешь на клиенте эту возможность, то и анализируй. К примеру, если инвентарный номер задаёшь в TEdit, то анализируй TEdit.Text :wink:

londinium
Сообщения: 27
Зарегистрирован: 17 апр 2006, 14:04

Сообщение londinium » 21 сен 2006, 16:25

Я никак не могу красиво описать то, что видел в одной программе, но все-таки попробую.
Итак, на форме лежит два TMemo. В одном хранятся строки-описания различных фильтров(например, выбрать по коду, инвентарному номеру и т.д). Пользователь выбирает один или несколько фильтров и щелчком по кнопке "Установить фильтр" копирует их в другой TMemo.
Выбравши все фильтры, какие необходимо, нажимает на кнопку "выполнить запрос" и,как ни удивительно :) , запрос выполняется. Вот мне хочется повторить такое же. Разработчики сего чуда находится далеко, кроме него, никто не знает, как это работает. Поэтому вся надежда на Вас.
На всякий случай, если кому интересно, могу прислать снимок окна, которое я попытался описать.

С уважением, Londinium

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 21 сен 2006, 16:53

Нуу... как бы это тебе попроще... в общем, если по уму и с нуля, то месяца три работы опытного кодера и золотой ключик у тебя в кармане. В смысле более-менее универсальный и простой в применении для прикладного програмиирования интерактивный формирователь where.

londinium
Сообщения: 27
Зарегистрирован: 17 апр 2006, 14:04

Сообщение londinium » 21 сен 2006, 17:13

Нуу... как бы это тебе попроще... в общем, если по уму и с нуля, то месяца три работы опытного кодера и золотой ключик у тебя в кармане.
А если не по уму? Чувствую, что в основе лежит простая идея, но дойти до нее не могу.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 21 сен 2006, 18:55

londinium писал(а): А если не по уму?
С этим не ко мне :)
londinium писал(а): Чувствую, что в основе лежит простая идея
Ну в общем и целом - да... Пяток своих классов, тыщи три строк кода и потом код прикладного модуля выглядит примерно так

Код: Выделить всё


FormShow:

  GrupFilter:=TfrUniFilter.Create(Self);
  GrupFilter.FormName:='GRUPLST';    
  GrupFilter.MainTableName:='SEB_GRUPP';
  GrupFilter.Caption:='Условия отбора ценовых групп';

  StartCnd:=TCondClass.Create(Self);
  StartCnd.Tip:=Starting;
  StartCnd.UppCase:=True;
  StartCnd.CondList:=TStringList.Create;
  StartCnd.FieldNames:='G.Name';

  ContCnd:=TCondClass.Create(Self);
  ContCnd.Tip:=Containing;
  ContCnd.UppCase:=True;
  ContCnd.CondList:=TStringList.Create;
  ContCnd.FieldNames:='G.Name';

  ValCnd:=TCondClass.Create(Self);
  ValCnd.Tip:=RecKod;
  ValCnd.FieldNames:='G.Valuta';
  ValCnd.SrcFields:='Code';
  ValCnd.CondList:=TStringList.Create;
  ValCnd.CodeList:=TStringList.Create;
  iqrFlPrp.SQL.Clear;
  iqrFlPrp.SQL.Add('Select Code, Sname');
  iqrFlPrp.SQL.Add('From Valutes');
  iqrFlPrp.SQL.Add('Order By SName');
  iqrFlPrp.Open;
  While Not iqrFlPrp.Eof Do
  begin
    ValCnd.AddItem(TrimRight(iqrFlPrp.FieldByName('SName').AsString),iqrFlPrp,False);
    iqrFlPrp.Next;
  end;
  iqrFlPrp.Close;

  HideCnd:=TCondClass.Create(Self);
  HideCnd.Tip:=Yes_No;
  HideCnd.FieldNames:='G.Hidden="Д"';
  HideCnd.IsSet:=True;
  HideCnd.YesNo:=False;

  CnPriceCnd:=TCondClass.Create(Self);
  CnPriceCnd.Tip:=Diap_FL;
  CnPriceCnd.AfterZap:=0;
  CnPriceCnd.FieldNames:='G.FxCnPrice';

...

  GrupFilter.AddFiltCond('Наименование начинается с',StartCnd);
  GrupFilter.AddFiltCond('Наименование содержит',ContCnd);
  GrupFilter.AddFiltCond('Показывать удалённые',HideCnd);
  GrupFilter.AddFiltCond('Валюта закупки',ValCnd);
  GrupFilter.AddFiltCond('Себестоимость',CnPriceCnd);
...

procedure bbFilterClick(Sender: TObject);
Var I,C,S:Integer;
begin
  GrupFilter.ShowModal;
  if GrupFilter.Changed then
    MakeQuery;
end;

Procedure MakeQuery;
begin
   With Q Do
     begin
        Close;
        SQL:=MainSQLContaner.Text;
        AddSQLList(StartCnd,SQL);
        AddSQLList(ContCnd,SQL);
        AddSQLList(HideCnd,SQL);
        AddSQLList(ValCnd,SQL);
        AddSQLList(CnPriceCnd,SQL);
        ...
        SQL.Add(GrupSort.GetOrderBy);
        SQL.Add(PlanContainer.Text);
        Open;
     end
end
Эт если не брать во внимание функции по сохранению в базе любимых именованных наборов условий, выбора их потом по наименованию или загрузки по умолчанию на FormShow, загрузки и прочей эрунды по наследованию туда-обратно установленных условий в цепи вызывающих друг друга форм...

Ответить