aq: TADOQuery;
With aq Do
begin
//加入主表信息
Close;
SQL.Clear;
decStr:= ' declare @shl1 decimal(25,3), '+
' @cbdj decimal(25,3), '+
' @kcje decimal(25,3), '+
' @spbh varchar(15), '+
' @jls int, '+
' @shl2 decimal(25,3), ' +
' @je1 decimal(25,3), '+
' @err int';
SQL.Add(decStr) ;
SQL.Add(' Begin tran');
SQL.Add(' select @err = 0 ');
SQL.Add(' Insert Into jh (bm,kprq,jhrbh,jhr,gysbh,dwmc,bmid,jhrq,fkfs,fk,'
+' jehj,czrid,czr,bmmc) values ('''+Ed_bh.Text+''','''+DateToStr(Dpk1.Date)+''','
+' '''+Ed_zybh.Text+''','''+Ed_zy.Text+''','''+Ed_w_id.Text+''','
+' '''+Ed_wldw.Text+''','''+bm_id+''','''+DateToStr(Dpk2.Date)+''','
+' '''+cb_fkfs.Text+''','''+Ed_fk.Text+''','''+lbje.Caption+''','
+' '''+czyid1+''','''+czy1+''','''+Ed_bm.Text+''') ');
SQL.Add(' if @@error <> 0 ');
SQL.Add(' begin');
SQL.Add(' select @err = @err +1 ');
SQL.Add(' end');
//导入到进货明细表里面
SQL.Add(sqljhmx);
SQL.Add(' if @@error<> 0 ');
SQL.Add(' begin');
SQL.Add(' select @err = @err +1 ');
SQL.Add(' end ');
//写入或者更新数据
SQL.Add(xrkcsql);
SQL.Add(' if @@error <>0 ');
SQL.Add(' begin');
SQL.Add(' select @err = @err +1 ');
SQL.Add(' end ');
if StrToFloat(Ed_fk.Text)>0 Then
begin
SQL.Add(xrje); //写入当时的付款
SQL.Add(' if @@error <> 0 ');
SQL.Add(' begin');
SQL.Add(' select @err = @err +1 ');
SQL.Add(' end');
end; SQL.Add(' if @err<>0 begin rollback return end ') ;
SQL.Add(' if @err= 0 begin Commit end ') ;
SQL.Add(' select @err as aa ') ;
Prepared;
Open;
if FieldByname('aa').AsInteger = 0 Then
begin
MessageBox(handle,'保存单据成功','提示',MB_OK);
try
//移动库存景象
With astpro Do
begin
astpro.Close;
astpro.ExecProc;
end;
except
MessageBox(handle,'进货库存镜像出错1','提示',MB_OK);
exit;
end;
end
else
MessageBox(handle,'保存进货单据出错1','提示',MB_OK);
P_HW.EnaEdAneCb(GroupBox1,0);
P_HW.EnaEdAneCb(GroupBox3,0);
Dbg1.Enabled := False;
end;
except
MessageBox(handle,'保存进货单据出错','提示',MB_OK);
Open;在这里用Open已经执行过了,这样是有结果集返回的,不需要返回结果集用Execsql执行,这是两者的区别。decStr:= 后面是定义的变量,应该是个存储过程,具体的操作都在这里完成,数据库应该是SQLServer吧!
Open;
要是在最ADD全部结束后再执行吗?
' @cbdj decimal(25,3), '+
' @kcje decimal(25,3), '+
' @spbh varchar(15), '+
' @jls int, '+
' @shl2 decimal(25,3), ' +
' @je1 decimal(25,3), '+
' @err int';
什么意思?
这样写存储过程还真是累啊。