Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.20;
Скачать: CL | DM;

Вниз

delete from   Найти похожие ветки 

 
Рустам1   (2008-06-16 15:03) [0]

при выполнении данного запроса

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add("DELETE FROM 8;");//имя table 8
ADOQuery1.ExecSQL;

выводится ошибка "текущий проводник не поддерживает возврат нескольких наборов записи в результате операции"..что я неправильно делаю?и вообще, как можно удалить все записи в table?


 
Поросенок Винни-Пух ©   (2008-06-16 15:13) [1]

что я неправильно делаю?

Даешь неправильные имена объектам БД.


 
Ega23 ©   (2008-06-16 15:22) [2]

Попробуй добавь вначале  ADOQuery1.Close;
Хотя тут конечно масса вариантов.


 
Василий Жогарев ©   (2008-06-16 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   (2008-06-16 16:09) [4]

ошибка происходит,когда я пытаюсь выполнить sql запрос


 
Поросенок Винни-Пух ©   (2008-06-16 16:11) [5]

ошибка происходит,когда я пытаюсь выполнить sql запрос

вот это да. кто бы мог подумать.


 
Василий Жогарев ©   (2008-06-16 16:17) [6]


> текущий проводник не поддерживает возврат нескольких наборов
> записи в результате операции

Мне почему-то кажется что ты все-таки делаешь не ExecSQL, а Open... Хотя могу и ошибаться... :o)


 
андр.   (2008-06-16 16:19) [7]

Стоп. Вот это зачем ?

Add("DELETE FROM 8;")


 
андр.   (2008-06-16 16:20) [8]


> андр.   (16.06.08 16:19) [7]

Всмысле точка с зяпятой...


 
Ega23 ©   (2008-06-16 16:24) [9]


>
> Всмысле точка с зяпятой...
>


А что не так?


 
Ega23 ©   (2008-06-16 16:26) [10]


> С поправкой
> > 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 ©   (2008-06-16 16:48) [11]

Начнем с простого,

1. твоя СУБД позволяет так именовать объекты
2. твоя СУБД позволяет ставить в конце запроса точку с запятой


 
Рустам1   (2008-06-16 18:23) [12]

моя субд - access.

> 1. твоя СУБД позволяет так именовать объекты

я делаю запросы типа select from 8, и ошибок не бывает...
2. а что, ненадо использовать точку с запятой?-.- по моему нужно


 
Anatoly Podgoretsky ©   (2008-06-16 18:39) [13]

В таком случае код правильный и ошибка на сервере.


 
Ega23 ©   (2008-06-16 18:41) [14]


> 2. а что, ненадо использовать точку с запятой?-.- по моему
> нужно


А вот лучше без "по-моему", для этого help имееццо.


 
Рустам1   (2008-06-16 18:59) [15]

ну... убрал запятую, ничего не изменилось!


 
Рустам1   (2008-06-16 18:59) [16]

*точку с запятой


 
Василий Жогарев ©   (2008-06-17 10:35) [17]


> я делаю запросы типа select from 8, и ошибок не бывает..
> .


А как же select * from 8 ?

1) НЕ именуй объекты баз данных цифрами, даже если есть поддержка сие чуда.
2) Выполни тот же самый запрос DELETE FROM ... не посредственно в базе.
3) Проверь еще раз код программы.
4) В принципе попробуй убрать точку с запятой, и так работает, ты же не через консоль команду закрываешь.
5) Если не поможет, попробуй организовать DELETE  FROM другой таблицы.


 
affonya   (2008-06-17 10:55) [18]

ADOQuery1.SQL.active := false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add("DELETE FROM 8;");//имя table 8
Transaction.begin;
ADOQuery1.ExecSQL;
Transaction.commit;

вроде так должно заработать.


 
Правильный-Вася   (2008-06-17 10:56) [19]


> выводится ошибка "текущий проводник не поддерживает возврат
> нескольких наборов записи в результате операции"

вряд ли ошибка приосходит на этом запросе
включи трассировку F7 и смотри



Страницы: 1 вся ветка

Текущий архив: 2008.07.20;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.022 c
4-1192961525
dzr_gregory
2007-10-21 14:12
2008.07.20
Отсылка сообщений


2-1213973775
lewka-serdceed
2008-06-20 18:56
2008.07.20
Замена символа в строке другим символом


2-1213613675
EgorovAlex
2008-06-16 14:54
2008.07.20
Запись в файл и чтение из файла записи: есть запись:


1-1192341690
3Lander
2007-10-14 10:01
2008.07.20
Как вставить справку в прогу


2-1213947379
uno-84
2008-06-20 11:36
2008.07.20
Передача ссылки на файл по почтовику