Topic: Заполнение TableGrid скриптом, содержащим UNION
procedure dogovor_OnShow (Sender: TObject; Action: string);
var
s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29, addTable: string;
begin
dogovor.PageControl1.ActivePageIndex:=0;
s1:='set @N = 0; ';
s2:='SELECT @N := @N + 1 AS number, (case when length(anketa.n_abit)=1 then CONCAT("00000",anketa.n_abit," ",anketa.fullname," ",anketa.name," ",anketa.fath) ';
s3:=' when length(anketa.n_abit)=2 then CONCAT("0000",anketa.n_abit," ",anketa.fullname," ",anketa.name," ",anketa.fath) ';
s4:=' when length(anketa.n_abit)=3 then CONCAT("000",anketa.n_abit," ",anketa.fullname," ",anketa.name," ",anketa.fath) ';
s5:=' when length(anketa.n_abit)=4 then CONCAT("00",anketa.n_abit," ",anketa.fullname," ",anketa.name," ",anketa.fath) ';
s6:=' when length(anketa.n_abit)=5 then CONCAT("0",anketa.n_abit," ",anketa.fullname," ",anketa.name," ",anketa.fath) ';
s7:=' else CONCAT(anketa.n_abit," ",anketa.fullname," ",anketa.name," ",anketa.fath) ';
s8:='end) as nom_fio, n_abit, fullname, name, fath , fakult.shortF, fo.name_fo, prioritet.nPrioritet, sprspec.nSpec, spec.short, spec2.short AS short_2, spec3.short AS short_3, dop.name_dop, anketa.vid_dop ';
s9:='FROM pk_adi.anketa anketa LEFT JOIN fakult ON anketa.id_fakult = fakult.id ';
s10:='LEFT JOIN fo ON anketa.id_fo = fo.id ';
s11:='LEFT JOIN prioritet ON anketa.id_prioritet = prioritet.id ';
s12:='LEFT JOIN sprspec ON sprspec.id = anketa.id_sprSpec ';
s13:='LEFT JOIN spec ON anketa.id_spec = spec.id ';
s14:='LEFT JOIN spec2 ON anketa.id_spec2 = spec2.id ';
s15:='LEFT JOIN spec3 ON anketa.id_spec3 = spec3.id ';
s16:='LEFT JOIN dop ON anketa.id_dop = dop.id ';
s17:='UNION ';
s18:='SELECT @N := @N + 1 AS number, (case when length(vosstanov.nDela)=1 then CONCAT("00000",vosstanov.nDela," ",vosstanov.fullname," ",vosstanov.name," ",vosstanov.fath) ';
s19:=' when length(vosstanov.nDela)=2 then CONCAT("0000",vosstanov.nDela," ",vosstanov.fullname," ",vosstanov.name," ",vosstanov.fath) ';
s20:=' when length(vosstanov.nDela)=3 then CONCAT("000",vosstanov.nDela," ",vosstanov.fullname," ",vosstanov.name," ",vosstanov.fath) ';
s21:=' when length(vosstanov.nDela)=4 then CONCAT("00",vosstanov.nDela," ",vosstanov.fullname," ",vosstanov.name," ",vosstanov.fath) ';
s22:=' when length(vosstanov.nDela)=5 then CONCAT("0",vosstanov.nDela," ",vosstanov.fullname," ",vosstanov.name," ",vosstanov.fath) ';
s23:=' else CONCAT(vosstanov.nDela," ",vosstanov.fullname," ",vosstanov.name," ",vosstanov.fath) ';
s24:='end) as nom_fio, nDela AS n_abit, fullname, name, fath, fakult.shortF, fo.name_fo, null AS nPrioritet, sprspec.nSpec, spec.short, NULL AS short_2, NULL AS short_3, dop.name_dop , vosstanov.name_dop ';
s25:='FROM pk_adi.vosstanov LEFT JOIN fakult ON fakult.id = vosstanov.id_fakult ';
s26:='LEFT JOIN fo ON vosstanov.id_fo = fo.id ';
s27:='LEFT JOIN sprspec ON sprspec.id = vosstanov.id_sprSpec ';
s28:='LEFT JOIN spec ON vosstanov.id_spec = spec.id ';
s29:='LEFT JOIN dop ON vosstanov.id_dop = dop.id ;';
addTable:=s1+s2+s3+s4+s5+s6+s7+s8+s9+s10+s11+s12+s13+s14+s15+s16+s17+s18+s19+s20+s21+s22+s23+s24+s25+s26+s27+s28+s29;
dogovor.TableGrid1.dbSQL(addTable);
dogovor.TableGrid1.dbGeneralTable := 'anketa';
dogovor.TableGrid1.dbListFieldsNames('#,nom_fio,n_abit,fullname,name,fath,shortF,name_fo,nPrioritet,nSpec,short,short_2,short_3,name_dop,vid_dop');
dogovor.TableGrid1.dbSQLExecute();
end;
Скрипт заполнения содержимым специально разбит на составляющие, чтобы визуально видеть разные таблицы, так как структура их отличается.
Ошибка 'Too many actual parameters' возникает на строке dogovor.TableGrid1.dbSQL(addTable);
Сам запрос отрабатывает на ура (см. вложение).
https://dropmefiles.com/MG2At
Помогите, пожалуйста, разобраться в чём ошибка..
П.С. база данных MySQL