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

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

ADO. Присвоение результата Execute [D7]


fog ©   (2008-07-04 19:07:00) 

Возможно ли сделать за один проход следующее:
ADOCommand1.CommandText :=
'CREATE TABLE '+ d + ' (' +
 'ID AUTOINCREMENT (1,1) CONSTRAINT PrimaryKey UNIQUE,'+
 'Date DATETIME,' +
 'Description MEMO)';
ADOCommand1.Execute;
ADODataSet1.CommandText := 'SELECT * FROM ' + d;
ADODataSet1.Open;

В этом виде работает.

ADODataSet1 := ADOCommand1.Executeвместо последних двух строк дает ошибку (при ADODataSet1.CommandText = '').
d - генерируется RT (изначально неизвестно).


fog   (2008-07-04 22:30:00) [1]


> Хотя, я подозреваю какой запрос ты в ADOCommand1 запихал,
>  но это сугубо твои проблемы...


запрос указан.


> запросы типа create не возвращают наборов данных.


С этого бы начать... И на том спасибо.


Плохиш   (2008-07-04 22:25:00) [2]

Я сегодня дважды добрый :-)

> 3. ADODataSet1.Recordset := ADOCommand1.Execute;

Для выполнения этого, в ADOCommand1 должен быть задан запрос, возвращающий набор данных, т.е. твой select, а запросы типа create не возвращают наборов данных.


Плохиш   (2008-07-04 22:18:00) [3]


> fog   (04.07.08 21:59) [3]

Всё прекрасно работает, как в справке и описано.
Хотя, я подозреваю какой запрос ты в ADOCommand1 запихал, но это сугубо твои проблемы...


fog   (2008-07-04 21:59:00) [4]

Хоть на арабском

ADOCommand1.Execute;
ADODataSet1.CommandText := 'SELECT * FROM ' + d;
ADODataSet1.Open;

работает только так.


1. ADODataSet1.CommandText := 'SELECT * FROM ' + d;
2. ADODataSet1.Open;
3. ADODataSet1.Recordset := ADOCommand1.Execute;


Без 1. и 2. получишь, что Dataset не открыт.
Без 2. - тоже самое
С 2. - "таблицы нет" (ежу понятно).


Плохиш   (2008-07-04 21:40:00) [5]

Я сегодня добрый, на тебе кусок из справки

Die Methode Execute kann bei bestimmten Befehlen auch ein Recordset-Objekt zurückgeben. Um dieses Objekt verwenden zu können, müssen Sie eine ADO-Datenmenge bereitstellen. Weisen Sie dann den Rückgabewert von Execute direkt der Eigenschaft Recordset der Datenmenge zu. Ein Beispiel


Плохиш   (2008-07-04 21:38:00) [6]


> ADODataSet1 := ADOCommand1.Execute вместо последних двух
> строк дает ошибку (при ADODataSet1.CommandText = '').

Маразм какой-то :-( Неужели трудно в справку посмотреть? Там всего-то копи/паст надо сделать. Вот и подросло новое поколение, даже не знаю как назвать...


Наверх

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