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

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

delete from


Рустам1 ©   (2008-06-16 15:03:00) 

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

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

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


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


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

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


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

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:35:00) [3]


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


А как же select *from 8?

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


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

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


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

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


Ega23   (2008-06-16 18:41:00) [6]


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


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


Anatoly Podgoretsky   (2008-06-16 18:39:00) [7]

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


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

моя субд - access.

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

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


Anatoly Podgoretsky   (2008-06-16 16:48:00) [9]

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

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


Ega23   (2008-06-16 16:26:00) [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;


то увидишь, что оно лишнее.


Ega23   (2008-06-16 16:24:00) [11]


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


А что не так?


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


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

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


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

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

Add('DELETE FROM 8 ;')


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


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

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


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

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

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


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

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


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


> Рустам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]


Ega23   (2008-06-16 15:22:00) [18]

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


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

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

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


Наверх

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