全部博文(788)
分类:
2009-02-19 17:03:24
如果循环的话,我还是建议你使用存储过程来写,此外数据库中是不是有完整性约束呢??比如哪些字段必须不为空,哪些不能重复等等
procedure Tsjxmzlr.cb_lxChange(Sender: TObject);
begin
with ADOQ_sjz do
begin
ADOQ_sjz.Close;
ADOQ_sjz.SQL.Clear;
ADOQ_sjz.SQL.Add('insert into ysjlrb(phid) select phid from hymcb where lxmc='''+cb_lx.Text+'''');
ADOQ_sjz.ExecSQL;
end;
end;
procedure Tsjxmzlr.cb_lxChange(Sender: TObject);
begin
with ADOQ_sjz do
begin
ADOQ_sjz.Close;
ADOQ_sjz.SQL.text := 'insert into ysjlrb(phid) select phid from hymcb where lxmc=:lxmc';
ADOQ_sjz.Parameters.ParamByName('lxmc').Value := trim(cb_lx.Text);
//最好按上面的这样绑定变量的形式效率高一些
//ADOQ_sjz.Open; 此处错误
ADOQ_sjz.ExecSql;
end;
end;
你的循环那段代码也有点问题,你试一下这样看行不行:
//取数据信息
ADOQ_sjd.Close;
ADOQ_sjd.SQL.text := 'select sjd from sjb where bd=:bd';
ADOQ_sjz.Parameters.ParamByName('bd').Value := trim(CBB_bd.Text);
ADOQ_sjd.Open;
//开始循环
while not ADOQ_sjd.Eof do
begin
CB_sjd.Close;
CB_sjd.text := ' insert into ysjlrb(phid) values (:phid)';
CB_sjd.Parameters.ParamByName('phid').Value := ADOQ_sjd.FieldByName('sjd').AsString;
CB_sjd.ExecSql;
ADOQ_sjd.Next;
end;
不好意思上面有点错误: CB_sjd.text 改成 CB_sjd.sql.text
谢谢大家!我都给分!!