-
Рустам1 (16.06.08 15:03) [0]при выполнении данного запроса
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('DELETE FROM 8;');//имя table 8
ADOQuery1.ExecSQL;
выводится ошибка "текущий проводник не поддерживает возврат нескольких наборов записи в результате операции"..что я неправильно делаю?и вообще, как можно удалить все записи в table? -
Поросенок Винни-Пух © (16.06.08 15:13) [1]что я неправильно делаю?
Даешь неправильные имена объектам БД. -
Попробуй добавь вначале ADOQuery1.Close;
Хотя тут конечно масса вариантов. -
Василий Жогарев © (16.06.08 16:08) [3]
> Рустам1 (16.06.08 15:03)
СУБД какая ?
С поправкой
> Ega23 © (16.06.08 15:22) [2]
вот это работает без проблем:with ADOQuery1 do
begin
if Active then
Close;
SQL.Clear;
SQL.Text := 'DELETE FROM Table1';
ExecSQL;
end;
, посмотри может действительно верно сказано
> Поросенок Винни-Пух © (16.06.08 15:13) [1] -
Рустам1 (16.06.08 16:09) [4]ошибка происходит,когда я пытаюсь выполнить sql запрос
-
Поросенок Винни-Пух © (16.06.08 16:11) [5]ошибка происходит,когда я пытаюсь выполнить sql запрос
вот это да. кто бы мог подумать. -
Василий Жогарев © (16.06.08 16:17) [6]
> текущий проводник не поддерживает возврат нескольких наборов
> записи в результате операции
Мне почему-то кажется что ты все-таки делаешь неExecSQL
, аOpen
... Хотя могу и ошибаться... :o) -
андр. (16.06.08 16:19) [7]Стоп. Вот это зачем ?Add('DELETE FROM 8;')
-
андр. (16.06.08 16:20) [8]
> андр. (16.06.08 16:19) [7]
Всмысле точка с зяпятой... -
>
> Всмысле точка с зяпятой...
>
А что не так? -
> С поправкой
> > Ega23 © (16.06.08 15:22) [2]
>
> вот это работает без проблем:
>
> with ADOQuery1 do
> begin
> if Active then
> Close;
Эта проверка не нужна. Если посмотришь внимательно на реализацию TDataSet.Close и
procedure TDataSet.SetActive(Value: Boolean);
begin
if (csReading in ComponentState) then
begin
FStreamedActive := Value;
end
else
if Active <> Value then
begin
if Value then
begin
DoBeforeOpen;
try
OpenCursor;
finally
if State <> dsOpening then
OpenCursorComplete;
end;
end else
begin
if not (csDestroying in ComponentState) then DoBeforeClose;
SetState(dsInactive);
CloseCursor;
if not (csDestroying in ComponentState) then DoAfterClose;
end;
end;
end;
то увидишь, что оно лишнее. -
Anatoly Podgoretsky © (16.06.08 16:48) [11]Начнем с простого,
1. твоя СУБД позволяет так именовать объекты
2. твоя СУБД позволяет ставить в конце запроса точку с запятой -
Рустам1 (16.06.08 18:23) [12]моя субд - access.
> 1. твоя СУБД позволяет так именовать объекты
я делаю запросы типаselect from 8
, и ошибок не бывает...
2. а что, ненадо использовать точку с запятой?-.- по моему нужно -
Anatoly Podgoretsky © (16.06.08 18:39) [13]В таком случае код правильный и ошибка на сервере.
-
> 2. а что, ненадо использовать точку с запятой?-.- по моему
> нужно
А вот лучше без "по-моему", для этого help имееццо. -
Рустам1 (16.06.08 18:59) [15]ну... убрал запятую, ничего не изменилось!
-
Рустам1 (16.06.08 18:59) [16]*точку с запятой
-
Василий Жогарев © (17.06.08 10:35) [17]
> я делаю запросы типа select from 8, и ошибок не бывает..
> .
А как жеselect * from 8
?
1) НЕ именуй объекты баз данных цифрами, даже если есть поддержка сие чуда.
2) Выполни тот же самый запросDELETE FROM ...
не посредственно в базе.
3) Проверь еще раз код программы.
4) В принципе попробуй убрать точку с запятой, и так работает, ты же не через консоль команду закрываешь.
5) Если не поможет, попробуй организоватьDELETE FROM
другой таблицы. -
affonya (17.06.08 10:55) [18]ADOQuery1.SQL.active := false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('DELETE FROM 8;');//имя table 8
Transaction.begin;
ADOQuery1.ExecSQL;
Transaction.commit;
вроде так должно заработать. -
Правильный-Вася (17.06.08 10:56) [19]
> выводится ошибка "текущий проводник не поддерживает возврат
> нескольких наборов записи в результате операции"
вряд ли ошибка приосходит на этом запросе
включи трассировку F7 и смотри