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

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

Множественный оператор 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;


Наверх

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