• Рустам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]
    что я неправильно делаю?

    Даешь неправильные имена объектам БД.
  • Ega23 © (16.06.08 15:22) [2]
    Попробуй добавь вначале  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 16:24) [9]

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


    А что не так?
  • Ega23 © (16.06.08 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 © (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]
    В таком случае код правильный и ошибка на сервере.
  • Ega23 © (16.06.08 18:41) [14]

    > 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 и смотри
Есть новые Нет новых   [134435   +33][b:0][p:0.003]