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

Статус
В этой теме нельзя размещать новые ответы.

AndreyD2

Гуру форума
Регистрация
21 Окт 2008
Сообщения
196
Реакции
72
Засел за большой проект на 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;
 
Засел за большой проект на 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;

по TSQL
insert T2(S,S2) values(1,''sss''),values(2,''ssd''),values(3,''sfs''),values(6,''fss'');
а может тебе вместо insert таки replace ?
 
Смысл в чем заключается? чтобы не использовать более одного query? Если так, то почему бы просто после выполнения одного запроса освободить query и вставить другой запрос и выполнить его?
 
по TSQL
insert T2(S,S2) values(1,''sss''),values(2,''ssd''),values(3,''sfs''),values(6,''fss'');
а может тебе вместо insert таки replace ?

Не пойдет

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

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

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

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

ошибся то скул то так

по TSQL
insert T2(S,S2) values(1,''sss''),(2,''ssd''),(3,''sfs ''),(6,''fss'');
но скорее ацесс такую конструкцию непоймет , проверить не могу ацесс не стоит
 
Засел за большой проект на 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;


Несколько запросов можно задать так:
Код:
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;
 
Несколько запросов можно задать так:
Код:
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;

MSSQL бы скушал такой апрос, а вот Access ругается на непонятную инструкцию FROM.

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

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

Код:
QQ.q_all.Close;
QQ.q_all.SQL.Clear;
QQ.q_all.SQL.Add('Delete from T1');
QQ.q_all.ExecSQL;

Access не ругается?
 
На это не ругается
Ругается если несколько запросов выполнять
 
вот так проверь:

Код:
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;

и обрати внимание на пробел в конце строки.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху