Нужна помощь по Delphi-Access

Тема в разделе "Другие языки", создана пользователем AndreyD2, 21 май 2009.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. AndreyD2

    AndreyD2

    Регистр.:
    21 окт 2008
    Сообщения:
    194
    Симпатии:
    67
    Засел за большой проект на Delphi c БД Access.
    Советы типа перейди на MSSQL не пойдут - я б и сам не прочь, но заказчик не хочет.
    Вопросы буду задавать в теме. Спасибо если поможете.

    1. Как составить запрос к БД чтобы можно было выполнить несколько инсертов и удалений одним Query?
    Например:

    Код:
      QQ.q_all.Close;
      QQ.q_all.SQL.Text:='Delete from T1; insert T2(S,S2) values(1,''sss'')';
      QQ.q_all.ExecSQL;
     
  2. oraculseed

    oraculseed Постоялец

    Регистр.:
    1 янв 2009
    Сообщения:
    152
    Симпатии:
    10
    по TSQL
    insert T2(S,S2) values(1,''sss''),values(2,''ssd''),values(3,''sfs''),values(6,''fss'');
    а может тебе вместо insert таки replace ?
     
  3. dragon1979

    dragon1979 Создатель

    Регистр.:
    6 ноя 2008
    Сообщения:
    13
    Симпатии:
    1
    Смысл в чем заключается? чтобы не использовать более одного query? Если так, то почему бы просто после выполнения одного запроса освободить query и вставить другой запрос и выполнить его?
     
  4. AndreyD2

    AndreyD2

    Регистр.:
    21 окт 2008
    Сообщения:
    194
    Симпатии:
    67
    Не пойдет

    Нужно не просто вставить несколько записей, а вставить несколько записей в несколько таблиц+удалить некоторые данные или обновить старые.

    dragon1979
    Смысл что бы не обращаться по сто раз к БД открывая и закрывая query
     
  5. oraculseed

    oraculseed Постоялец

    Регистр.:
    1 янв 2009
    Сообщения:
    152
    Симпатии:
    10
    ошибся то скул то так

    по TSQL
    insert T2(S,S2) values(1,''sss''),(2,''ssd''),(3,''sfs ''),(6,''fss'');
    но скорее ацесс такую конструкцию непоймет , проверить не могу ацесс не стоит
     
  6. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133

    Несколько запросов можно задать так:
    Код:
    QQ.q_all.Close;
    QQ.q_all.SQL.Clear;
    QQ.q_all.SQL.Add('Delete from T1');
    QQ.q_all.SQL.Add('insert T2(S,S2) values(1,''sss'')');
    QQ.q_all.ExecSQL;
     
  7. AndreyD2

    AndreyD2

    Регистр.:
    21 окт 2008
    Сообщения:
    194
    Симпатии:
    67
    MSSQL бы скушал такой апрос, а вот Access ругается на непонятную инструкцию FROM.

    В инете тоже ничего не пишут по этому поводу(

    Может все таки не поддерживает Аксес несколько инструкция одной транзакцией?
     
  8. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    а так

    Код:
    QQ.q_all.Close;
    QQ.q_all.SQL.Clear;
    QQ.q_all.SQL.Add('Delete from T1');
    QQ.q_all.ExecSQL;
    Access не ругается?
     
  9. AndreyD2

    AndreyD2

    Регистр.:
    21 окт 2008
    Сообщения:
    194
    Симпатии:
    67
    На это не ругается
    Ругается если несколько запросов выполнять
     
  10. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    вот так проверь:

    Код:
    QQ.q_all.Close;
    QQ.q_all.SQL.Clear;
    QQ.q_all.SQL.Add('begin Delete from T1 end '); // <- здесь в конце пробел
    QQ.q_all.SQL.Add('begin insert T2(S,S2) values(1,''sss'') end');
    QQ.q_all.ExecSQL;
    и обрати внимание на пробел в конце строки.
     
Статус темы:
Закрыта.