Вставка записи в таблицу приводит к сообщению об ошибке - PullRequest
0 голосов
/ 12 сентября 2018

Когда я хочу вставить записи из моей таблицы в базу данных, я получаю следующее сообщение об ошибке: в операторе вставки меньше столбцов, чем указано в предложении values.Это мой оператор SQL:

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,bource_f,irg,retenue) '
);
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)+', '+(edit23.Text)+', 
'+quotedstr(edit26.Text)+','+floattostr(boursef)+','+quotedstr(edit21.Text)+','+
floattostr(retenu)+')'); 

dm.qr_emp.ExecSQL;

1 Ответ

0 голосов
/ 12 сентября 2018

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

INSERT INTO Employees(Name, City, AccountNumber)
VALUES ("John", "London", "0098737602230")

Например, следующие операторы потерпят неудачу, потому что количество имен столбцов и вставленных значений не совпадают.

INSERT INTO Employees(Name, City)
VALUES ("John", "London", "0098737602230")

INSERT INTO Employees(Name, City, AccountNumber)
VALUES ("John", "London")

Я бы посоветовал немного структурировать ваш код. Текущее утверждение не читается людьми и приведет к ошибкам.

...