这是我的代码:
var p1,p2,p4,p5,p6,p7,p8,p9,p10,p11:string;
var p3:integer;
begin
  p1 := edit1.Text;
  p2 := edit5.Text;
  p3 := Integer.parseInt("edit4.text");-------------------ERROR
  p4 := combobox2.Items[combobox2.ItemIndex];
  p5 := combobox1.Items[combobox1.itemindex];
  p6 := datetimepicker1.DateTime.datetimetostr;-------------------ERROR
  p7 := edit2.Text;
  p8 := edit3.Text;
  p9 := edit8.Text;
  p10 := edit9.Text;
  p11 := richedit1.Text;  query1.sql.Clear;
  query1.SQL.Add('exec insertproc1');
  query1.sql.add('p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11');
  query1.sql.execsql;
为什么那两行会出错?
我的思路是传入edit等的值作为调用我存储过程的参数我的存储过程数据结构如下:
         @职员号_1  [char](10),
 @姓名_2  [char](10),
 @工资_3  [money],
 @职务_4  [char](10),
 @性别_5  [char](2),
 @出生日期_6  [datetime],
 @身份证号_7  [char](20),
 @籍贯_8  [char](50),
 @家庭住址_9  [char](50),
 @手机号码_10  [char](15),
 @其他情况_11  [char](50)

解决方案 »

  1.   

    query1.sql.add('p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11');   // < -- 这里都变字符了
    //即你的执行语句成了 exec insertproc1 p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11
      

  2.   

    应该写成:query1.sql.add(' '''+p1+''','''+p2+''','+inttostr(p3)+','''+p4+''','''+p5+''','''+p6+
    ''','''+p7+''','''+p8+''','''+p9+''','''+p10+''','''+p11+'''');
      

  3.   

    楼主应该看一下SQL的书了,SQL语句里面字符串相加是要用引号“+”字符来实现。
    query1.sql.add('p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11');
    改为:
    query1.sql.add(' '''+p1+''','''+p2+''','+inttostr(p3)+','''+p4+''','''+p5+''','''+p6+
    ''','''+p7+''','''+p8+''','''+p9+''','''+p10+''','''+p11+''''); 
     
    这是最基本的常识。