как вставить в Delphi, когда литералы так долго - PullRequest
0 голосов
/ 07 июня 2018

Когда я запускаюсь, приходит смс: строковые литералы могут содержать не более 255 элементов

Это мой код:

dm.qr_emp.SQl.Add('insert into emp_per(nom, prenom, date_naiss1, cle_ccp,nomf,prenomf,lieu_naiss,sex,adr,id_corps,id_fonction,id_categ,montant_resp,compte_ccp,etat,sal_base,id_grade,id_banque,id_degree,sal_unique,pfc,iep,num_social,sal_principale,ind,salaire,montant_irg,ss,nbr_enfant,nbr_enfant_sup) ');
      dm.qr_emp.SQL.Add('values('+quotedstr(edit1.Text)+', '+quotedstr(edit2.Text)+','+quotedstr(formatdatetime('yyyy-dd-mm',datetimepicker1.DateTime))+', '+ edit4.Text+','+quotedstr(edit5.Text)+','+quotedstr(edit3.Text)+','+quotedstr(edit6.Text)+','+quotedstr(ComboBox3.Text)+','+quotedstr(edit8.Text)+','+ inttostr(id_corps)+','+ inttostr(id_fonction)+', '+quotedstr(edit10.Text)+','+floattostr(salair_responsabilite)+','+quotedstr(edit7.Text)+','+quotedstr(ComboBox5.Text)+','+floattostr(salaire_base)+','+ inttostr(id_grade)+','+ inttostr(id_banque)+','+ inttostr(id_degree)+','+quotedstr(ComboBox8.Text)+','+ floattostr(pfc)+','+quotedstr(edit15.Text)+','+quotedstr(edit13.Text)+','+ floattostr(sal_principale)+','+floattostr(ind)+','+quotedstr(edit20.text)+','+floattostr(montant_irg)+','+floattostr(ss)+', '+quotedstr(edit23.Text)+', '+quotedstr(edit26.Text)+' )');
   dm.qr_emp.ExecSQL;

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Также возможно добавить строку SQL Statement для строки, как можно было бы написать естественным образом, с отступом на строку для лучшей читабельности.Например, как показано ниже:

with dm.qr_emp.SQL do
begin
  BeginUpdate;
  try 
    Add('INSERT INTO emp_per');
    Add('(                  ');
    Add('    nom            ');
    Add('   ,prenom         ');
    Add('   ,date_naiss1    ');
    Add('   ,cle_ccp        ');
    Add('   ,nomf           ');
    Add('   ,prenomf        ');
    Add('   ,lieu_naiss     ');
    Add('   ,sex            ');
    Add('   ,adr            ');
    Add('   ,id_corps       ');
    Add('   ,id_fonction    ');
    Add('   ,id_categ       ');
    Add('   ,montant_resp   ');
    Add('   ,compte_ccp     ');
    Add('   ,etat,sal_base  ');
    Add('   ,id_grade       ');
    Add('   ,id_banque      ');
    Add('   ,id_degree      ');
    Add('   ,sal_unique     ');
    Add('   ,pfc,iep        ');
    Add('   ,num_social     ');
    Add('   ,sal_principale ');
    Add('   ,ind,salaire    ');
    Add('   ,montant_irg    ');
    Add('   ,ss             ');
    Add('   ,nbr_enfant     ');
    Add('   ,nbr_enfant_sup ');
    Add(')                  ');
    // And so on for values ...
  finally
    EndUpdate;
  end;
end;

dm.qr_emp.ExecSQL;
0 голосов
/ 07 июня 2018

Если ваш литерал слишком длинный, вам нужно разбить его на несколько частей.Например:

dm.qr_emp.SQl.Add(
  'insert into emp_per(nom, prenom, date_naiss1, cle_ccp,nomf,prenomf,' +
  'lieu_naiss,sex,adr,id_corps,id_fonction,id_categ,montant_resp,' + 
  'compte_ccp,etat,sal_base,id_grade,id_banque,id_degree,sal_unique,' +
  'pfc,iep,num_social,sal_principale,ind,salaire,montant_irg,' +
  'ss,nbr_enfant,nbr_enfant_sup) '
);
...