Вниз
Скачать: CL | DM;

Несколько запросов и временные таблицы в 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.006 c
14-66659
Blackweber
2001-12-29 22:28
2002.02.21
Замечание модераторам!


1-66526
Oleg Fomicheff
2002-02-06 04:28
2002.02.21
Изменение параметров текста в ячейке ValueListEditor при наведении мыши


3-66421
Dyacha
2002-01-25 08:35
2002.02.21
ADO и dbf


1-66579
avr555
2002-02-05 19:39
2002.02.21
Как скопировать объект?


4-66701
KarlovAF
2001-12-20 16:34
2002.02.21
Как убрать горизонтальный скролбар с TDBGrid-а?




   Наверх