powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Многострочный INSERT
5 сообщений из 5, страница 1 из 1
Многострочный INSERT
    #39397785
xenosapien
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем. Облазил сайтов 30, синтаксис видел, прошу сильно не пинать, а подсказать как правильно реализовать.
Суть добавить большое количество полей в динамически создаваемом запросе исходя из ряда условий. Код на Delphi что-то типа:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
begin
Query1.Close;
Query1.SQL.Clear;


Query1.SQL.Add('INSERT INTO tmp.dbf');
Query1.SQL.Add('(ConsFname, ConsLName, ConsTname,ConsPhone) VALUES ('''+trim(eConsFname.Text)+''','''+trim(eConsLName.Text)+''','''+trim(eConsTname.Text)+''','''+trim(eConsPhone.Text)+''')');
условие
Query1.SQL.Add('(OrderDate, OrderCity, OrderEc,OrderEcp) VALUES  ('''+datetostr(deOrderDate.Date)+''','''+trim(eOrderCity.Text)+''','''+trim(eOrderEc.Text)+''','''+trim(cbOrderEcp.Text)+''')');

//условие
Query1.SQL.Add('(EcAppUNP, BankCAcc, EñAppAdr) VALUES  ('''+trim(eEcAppUNP.Text)+''','''+trim(eBankCAcc.Text)+''','''+trim(eEcAppAdr.Text)+''',)');

//условие
Query1.SQL.Add('(bn, bhomen, bObl,bcity,bst) VALUES  ('''+trim(eNumCommon.Text)+''','''+trim(eNumHCommon.Text)+''','''+trim(eNumBOCommon.Text)+''','''+trim(eNumSCommon.Text)+''','''+trim(eNumStCommon.Text)+''')');

//условие
if length(mAddMCP.Text)>2 then
Query1.SQL.Add('(AddMCP) VALUES ('''+trim(mAddMCP.Text)+'''');

try
Query1.ExecSQL;
  except   On e : EDatabaseError do messageDlg(e.message, mtError, [mbOK],0);end;
end;



Соединять в один запрос вида:
Код: plsql
1.
INSERT INTO tmp.dbf (n1,n2....nx) VALUES (v1,v2...vx)


не вижу возможным, ибо этих колонок в итоге нарастет около 80-ти и что-то понять в 20-ти сточном запросе будет весьма проблематично.

Подскажите как быть?
...
Рейтинг: 0 / 0
Многострочный INSERT
    #39397787
xenosapien
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опечатка вышла. Это одна строка с ~80-тью колонками, которую надо заполнить!
...
Рейтинг: 0 / 0
Многострочный INSERT
    #39397977
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собирайте запрос в строковой переменной, а потом пихайте уже в Query. Схематично (бо в Дельфе не силён):

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Fields := Fields + 'field1, '                          + 'field2, ';
Values := Values + '''' + trim(textbox1.Text) + ''', ' + '''' + trim(textbox2.Text) + ''', ';

IF (condition1)
Fields := Fields + 'field3, '                          + 'field4, ';
Values := Values + '''' + trim(textbox3.Text) + ''', ' + '''' + trim(textbox4.Text) + ''', ';

...

Fields := trim(TRAILING ',' FROM Fields);
Values := trim(TRAILING ',' FROM Values);

Query1.SQL.Add('INSERT INTO tmp.dbf (' + Fields + ') VALUES (' + Values + ');');
...
Рейтинг: 0 / 0
Многострочный INSERT
    #39398131
xenosapien
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaСобирайте запрос в строковой переменной, а потом пихайте уже в Query. Схематично (бо в Дельфе не силён):


Тоже идея.. Я так понял сделать в одном запросе два INSERT нельзя?
...
Рейтинг: 0 / 0
Многострочный INSERT
    #39398258
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xenosapienЯ так понял сделать в одном запросе два INSERT нельзя?Это зависит от используемого коннектора. Одни поддерживают мультизапросы, другие нет.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Многострочный INSERT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]