读书人

请问query控件调用存储过程的有关问题

发布时间: 2012-03-09 16:54:57 作者: rapoo

请教query控件调用存储过程的问题
这是我的代码:
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)

[解决办法]
应该写成:

query1.sql.add(' '''+p1+''','''+p2+''','+inttostr(p3)+','''+p4+''','''+p5+''','''+p6+
''','''+p7+''','''+p8+''','''+p9+''','''+p10+''','''+p11+'''');
[解决办法]
楼主应该看一下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+'''');

这是最基本的常识。

读书人网 >.NET

热点推荐