![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Непонятки в 3-хзвенке
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 делал?