![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Множественный оператор SELECT для DataAdapter [D2005]
oslep © (2005-08-14 10:42:00)Дорбый день! Вот текст примера из книги Пачеко о Дельфи 8:
program FillDataSet;
{$APPTYPE CONSOLE}
{%DelphiDotNetAssemblyCompiler 'c:\windows\microsoft.net\framework\v1.1.4322\System.Data.dll'}
uses
System.Data,
System.Data.SqlClient;
const
c_cnstr = 'server=XWING;database=Northwind;Trusted_Connection=Yes';
c_sel_emp = 'select * from Employees; select * from Customers;';
var
sqlDA: SqlDataAdapter;
nwDS: DataSet;
begin
sqlDA := SQLDataAdapter.Create(c_sel_emp, c_cnstr);
nwDS := DataSet.Create;
sqlDA.Fill(nwDS);
end.
Прошу обратить внимание на строчку
c_sel_emp = 'select * from Employees; select * from Customers;'
По словам автора, такой оператор возвращает две таблицы на одном объекте DataAdapter. Результат должен позволить построить отношения мастер/деталь встроенными способами. Пример приведен для класса SQLDataAdapter и сервера SQL, которым мне не доводилось пользоваться. Аналогичный прием для InterBase/FB не проходит.
В чем проблема? Необходимо ли применить отличный от приведенного в примере синтакс в c_sel_emp?
ЗЫ: Долго думал, в какую конференцию кидать))
oslep (2005-08-17 17:11:00) [1]
> k2 © (15.08.05 11:16) [1]
Разумеется
k2 (2005-08-15 11:16:00) [2]наверное нельзя сказать 'две таблицы на одном объекте DataAdapter', таблицы принадлежат DataSet'у. про интербэйс ничего не подскажу, но раз он не поддерживает возврат нескольких наборов данных, то построить датасет с двумя таблицами так:
...
c_sel_emp = 'select * from Employees';
c_sel_cust ='select * from Customers';
...
var
da: SqlDataAdapter;
ds: DataSet;
begin
da := SQLDataAdapter.Create(c_sel_emp, c_cnstr);
ds := DataSet.Create;
da.Fill(ds, 'emp');
da.SelectCommand.CommandText := c_sel_cust;
da.Fill(ds , 'cust');
..
end;