Форум: "Базы";
Текущий архив: 2002.02.21;
Скачать: [xml.tar.bz2];
ВнизНесколько запросов и временные таблицы в ADO Найти похожие ветки
← →
ed (2002-01-21 08:39) [0]Есть проблема:
В Дельфи при использовании компонента TADODataSet:
1) Два и более запроса не выполняются.
2) Создаю временную таблицу и после ее создания, она тут же удаляется
В BDE - наоборот (проблем нет)
Скажите пожалуйста, как выйти из ситуации?
← →
KSergey (2002-01-21 09:37) [1]Ничего не понятно
Что значит не выполняется два запроса? Код.
Какую именно временную таблицу? К стати, какая БД используется? Кокой вы вообще хотели получить ответ без этого уточнения?!
← →
Steel Ice (2002-01-21 10:19) [2]Вообще ADOшные компоненты - глюкота.
Например попробуй сделать в ADOQuery выборку из базы, в которой нету записей - орет как укушенная. Еще какая-то у них мутная процедура Close у этих компонент. Если при закрытии курсор стоит на последней строчке таблицы, при выполнении Close частенько выдает EOF ошибку.
А удалить или изменить строчку в ADOTable? Кошмар.
Единственная возможноть нормально работать с АДО, делаешь ADOConnection, и через него ADOCommandom выполняешь любые запросы. Результаты возвращаются в Excute:_Recordset.
И таблицы, когда я их через АДОКомманд создавал - не пропадали.
И работает шустренько.
← →
Fay-1 (2002-01-22 01:19) [3]to Steel Ice :
Поставь апдейты для делфей
у меня всё живёт
← →
ed (2002-01-24 07:07) [4]База - MS SQL Server 7 (и выше)
Два запроса = две инструкции
например, код:
delete table1
insert ...
выполняет только первую инструкцию
или
в ADOCommand создаю временную таблицу (select...into #tmptable)
а после делаю апдейт, например, из другого ADOCommand или этого же компонента, поменяв CommandText. Он мне говорит, что нет такой, проверяю - действительно нет. А в ADOConnection один и тот же (вообще один) и в документашке по MS SQL говорится что докальная временная таблица сохраняется пока сессия не закроется.
Можно запрос через сам ADOConnection послать на создание, тогда все работает, но вот беда : он не поддерживает параметры..., а нужны!
← →
Delirium (2002-01-24 12:44) [5]Просто надо пользовать полноценные компоненты - TADOQuery, например, тогда и глюков не будет, и какие угодно команды проходить будут.
← →
ed (2002-01-25 07:04) [6]А вот и нифига подобного. Во-первых, в хелпе написано, что никакой разницы нет между 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-25 12:21) [7]Мы-же по MSSQL вроде говорили, а кто тебе сказал что ACCESS позволяет несколько инструкций подряд исполнять? Ты бы в самом ACCESS сначала попробывал бы, а потом уже на ADO наезжал :)
← →
Delirium (2002-01-25 15:08) [8]И вообще для команд, не возвращающих информацию, существует TADOCommand, а TADOQuery естественно ругаться будет "CommandText does not return a result set"
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.02.21;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c