Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Непонятки в 3-хзвенке


Страницы:   1 2

Megabyte ©   (2006-07-17 14:42:00) 

Дано: Ком-сервер в виде удаленного модуля данных: ADO(ADOQuery) + MSSQL + DataSetProvider.
Тонкий клиент: DCOMConnection + ClientDataSet.

Вот код метода на Ком-сервере:
Qry_item - ADOQuery.

procedure TEntprSP.Admin_item(const RusKind: WideString; out aKind,
 aId: WideString);
begin
 try //except
   begin
     Qry_item.Close;
     Qry_item.SQL.Clear;
     if Ruskind = 'Кассы' then
     begin
       Qry_item.SQL.Add('select S.Description from Subdividings S ');
       Qry_item.SQL.Add('where S.IsRemoved = 0 ');
       Qry_item.SQL.Add('order by S.Description');
       aKind := 'Subdividings';
       aId := '50';
     end
       else if Ruskind = 'Расчетные счета' then
       begin
         Qry_item.SQL.Add('select S.Description from SettlementAccounts S ');
         Qry_item.SQL.Add('where S.IsRemoved = 0 ');
         Qry_item.SQL.Add('order by S.Description');
         aKind := 'SettlementAccounts';
         aId := '51';
       end
       else
       begin
         Qry_item.SQL.Add('select S.Description from Employees S ');
         Qry_item.SQL.Add('where (S.Parent <> 0) and (S.IsRemoved = 0)');
         Qry_item.SQL.Add('order by S.Description');
         aKind := 'Employees';
         aId := '71';
       end;
     Qry_item.Open;
   end; //with
 except
   showmessage('Невозможно сделать запрос');
 end; //except
 showmessage(Qry_item.SQL.Text); //проверил, меняется ли текст запроса
end;

Вот код в методе клиентского модуля данных:
cds_Item - ClientDataSet
Spisok_item - переменная типа ISpisok - одного из интерфейсов сом-объекта
procedure Tdm_Otchet.kind_Item(acbox : TComboBox);
begin
 cds_Item.Active := false;
  Spisok_item.Admin_item(acbox.Text, kind, id);
 cds_Item.Active := true;
 showmessage(kind + ', ' + id);
end;

Суть: В Qry_item.SQLв дизайн-тайме записан какой-либо запрос(не важно).
Вызов метода Spisok_item.Admin_item, как видно, меняет свойство Qry_item.SQL.
При вызове этого метода DBGrid(связка ClientDataSet+DataSource+DBGrid) почему-то показывает данные, полученные запросом, записанным в дизайн-тайме???

Проверял, свойство Qry_item.SQLна ком-сервере меняется, метод Spisok_item.Admin_itemвызывается и обрабатывается, выходные параметры aKind и aId - возвращают корректрые данные...
Клиентский набор данных открываю уже после выполнения метода Spisok_item.Admin_item.
Это глюк? Или я что не так делаю, м.б. забыл про какое-то свойство(у ClientDataSet, у DataSetProvider)?


Ega23   (2006-07-17 14:49:00) [21]

EmptyDataSet делал?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо