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

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

Несколько запросов и временные таблицы в ADO [D6, ]


ed ©   (2002-01-21 08:39:00) 

Есть проблема:

В Дельфи при использовании компонента TADODataSet:
1) Два и более запроса не выполняются.
2) Создаю временную таблицу и после ее создания, она тут же удаляется

В BDE - наоборот (проблем нет)

Скажите пожалуйста, как выйти из ситуации?


Delirium   (2002-01-25 15:08:00) [1]

И вообще для команд, не возвращающих информацию, существует TADOCommand, а TADOQuery естественно ругаться будет "CommandText does not return a result set"


Delirium   (2002-01-25 12:21:00) [2]

Мы-же по MSSQL вроде говорили, а кто тебе сказал что ACCESS позволяет несколько инструкций подряд исполнять? Ты бы в самом ACCESS сначала попробывал бы, а потом уже на ADO наезжал :)


ed   (2002-01-25 07:04:00) [3]

А вот и нифига подобного. Во-первых, в хелпе написано, что никакой разницы нет между TADOQuery и TADODataSet. Во-вторых,
я на всякий случай попробовал использовать query, но результат оказался тем же самым. В этот раз я пробовал на базе mdb (acceess). Вот код

SQL:
INSERT INTO table1 (id, Name) Values (0, "Name0")
DELETE FROM table1 where id = 0

после ExecSQL ошибка: "Пропущен символ (;) в конце инструкции SQL"

Тогда ставлю в конце инструкции точку с запятой:
INSERT INTO table1 (id, Name) Values (0, "Name0");
DELETE FROM table1 where id = 0

В этом случае другая ошибка: "Обнаружены символы за пределами инструкции SQL"

БЛИН!


Delirium   (2002-01-24 12:44:00) [4]

Просто надо пользовать полноценные компоненты - TADOQuery, например, тогда и глюков не будет, и какие угодно команды проходить будут.


ed   (2002-01-24 07:07:00) [5]

База - MS SQL Server 7 (и выше)

Два запроса = две инструкции
например, код:

delete table1
insert ...

выполняет только первую инструкцию

или

в ADOCommand создаю временную таблицу (select...into #tmptable)
а после делаю апдейт, например, из другого ADOCommand или этого же компонента, поменяв CommandText. Он мне говорит, что нет такой, проверяю - действительно нет. А в ADOConnection один и тот же (вообще один) и в документашке по MS SQL говорится что докальная временная таблица сохраняется пока сессия не закроется.

Можно запрос через сам ADOConnection послать на создание, тогда все работает, но вот беда : он не поддерживает параметры..., а нужны!


Fay-1   (2002-01-22 01:19:00) [6]

to Steel Ice :
Поставь апдейты для делфей
у меня всё живёт


Steel Ice   (2002-01-21 10:19:00) [7]

Вообще ADOшные компоненты - глюкота.
Например попробуй сделать в ADOQuery выборку из базы, в которой нету записей - орет как укушенная. Еще какая-то у них мутная процедура Close у этих компонент. Если при закрытии курсор стоит на последней строчке таблицы, при выполнении Close частенько выдает EOF ошибку.
А удалить или изменить строчку в ADOTable? Кошмар.
Единственная возможноть нормально работать с АДО, делаешь ADOConnection, и через него ADOCommandom выполняешь любые запросы. Результаты возвращаются в Excute:_Recordset.
И таблицы, когда я их через АДОКомманд создавал - не пропадали.
И работает шустренько.


KSergey   (2002-01-21 09:37:00) [8]

Ничего не понятно
Что значит не выполняется два запроса? Код.
Какую именно временную таблицу? К стати, какая БД используется? Кокой вы вообще хотели получить ответ без этого уточнения?!


Наверх

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