起步软件技术论坛-X3

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: hanjason996

【结贴】请教**

[复制链接]
 楼主| 发表于 2008-7-28 11:25:02 | 显示全部楼层
djbm:= GetValue;
  gsbm:= TSQLDataSet(nbxshcjb.DataSet).FieldByName('gsbm').AsString;
  TSQLDataSet(nbxshctz.DataSet).Open;
  try
    //获取所有详表所对应的物资编码
    TSQLDataSet(nbxshcxb.DataSet).First;
    while not TSQLDataSet(nbxshcxb.DataSet).Eof do
    begin
      wzbm:= TSQLDataSet(nbxshcxb.DataSet).FieldByName('wzbm').AsString;
      TSQLDataSet(nbxshcxb.DataSet).Next;
      wzbms:= ''+wzbm+''+','+wzbms;
    end;

    //对物资编码进行转换处理
    wzbms:='('+wzbms+')';
    slength:= wzbms.Length;
    wzbms2:= wzbms.Substring(0,slength-2) + wzbms.Substring(slength-1,1);

    TSQLDataSet(nbxshcwzkc.DataSet).SQL.Text:='select * from zbmroler.wzkcxxb where wzbm in '+wzbms2+' and gsbm='''+gsbm+'''';
    TSQLDataSet(nbxshcwzkc.DataSet).Open;

    TSQLDataSet(nbxshcxb.DataSet).First;
    while not TSQLDataSet(nbxshcxb.DataSet).Eof do
    begin
      wzbm:= TSQLDataSet(nbxshcxb.DataSet).FieldByName('wzbm').AsString;
      TSQLDataSet(nbxshcwzkc.DataSet).locate('wzbm',[wzbm],[]);

      if (TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('kcsl').AsFloat <> (0-TSQLDataSet(nbxshcxb.DataSet).FieldByName('sxsl').AsFloat)) then
      begin
        jqpjj := (TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('zje').AsFloat - TSQLDataSet(nbxshcxb.DataSet).FieldByName('xsje').AsFloat)/(TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('kcsl').AsFloat - TSQLDataSet(nbxshcxb.DataSet).FieldByName('sxsl').AsFloat);
      end
      else
      begin
        jqpjj:=0;
      end;

      TSQLDataSet(nbxshctz.DataSet).Append;
      TSQLDataSet(nbxshctz.DataSet).FieldByName('pzbm').AsString:= TSQLDataSet(nbxshcjb.DataSet).FieldByName('xsdbm').AsString;
      TSQLDataSet(nbxshctz.DataSet).FieldByName('wzbm').AsString:= TSQLDataSet(nbxshcxb.DataSet).FieldByName('wzbm').AsString;
      TSQLDataSet(nbxshctz.DataSet).FieldByName('sfbz').AsString:= '1';
      TSQLDataSet(nbxshctz.DataSet).FieldByName('srsl').AsString:= '0';
      TSQLDataSet(nbxshctz.DataSet).FieldByName('fcsl').AsString:= TSQLDataSet(nbxshcxb.DataSet).FieldByName('sxsl').AsString;
      TSQLDataSet(nbxshctz.DataSet).FieldByName('gsbm').AsString:= gsbm;
      TSQLDataSet(nbxshctz.DataSet).FieldByName('pzgldmbbm').AsString:='009';
      TSQLDataSet(nbxshctz.DataSet).FieldByName('pzmcbm').AsString:='002';
      TSQLDataSet(nbxshctz.DataSet).FieldByName('cbdj').AsFloat:= jqpjj;
      TSQLDataSet(nbxshctz.DataSet).FieldByName('je').AsFloat:= TSQLDataSet(nbxshcxb.DataSet).FieldByName('xsje').AsFloat;
      TSQLDataSet(nbxshctz.DataSet).FieldByName('pjbm').AsString:= djbm;
      TSQLDataSet(nbxshctz.DataSet).FieldByName('bz').AsString:= '001';
      TSQLDataSet(nbxshctz.DataSet).FieldByName('jcsl').AsFloat:= TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('kcsl').AsFloat - TSQLDataSet(nbxshcxb.DataSet).FieldByName('sxsl').AsFloat;
      TSQLDataSet(nbxshctz.DataSet).FieldByName('jcje').AsFloat:= TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('zje').AsFloat - TSQLDataSet(nbxshcxb.DataSet).FieldByName('xsje').AsFloat;
      TSQLDataSet(nbxshctz.DataSet).FieldByName('sjkcsl').AsFloat:= TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('sjkcsl').AsFloat;
      TSQLDataSet(nbxshctz.DataSet).Post;

      TSQLDataSet(nbxshcxb.DataSet).Next;
    end;

    TSQLDataSet(nbxshcxb.DataSet).First;
    while not TSQLDataSet(nbxshcxb.DataSet).Eof do
    begin
      wzbm:= TSQLDataSet(nbxshcxb.DataSet).FieldByName('wzbm').AsString;
      flag2:= TSQLDataSet(nbxshcwzkc.DataSet).locate('wzbm',[wzbm],[]);

      if  not (flag2) then
      begin
        Dialogs.ShowMessage('内部销售红冲审核出现错误,error:物资库存信息表不存在,line309!');
      end
      else if flag2 then
      begin
        if (TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('kcsl').AsFloat <> (0-TSQLDataSet(nbxshcxb.DataSet).FieldByName('sxsl').AsFloat)) then
        begin
          jqpjj := (TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('zje').AsFloat - TSQLDataSet(nbxshcxb.DataSet).FieldByName('xsje').AsFloat)/(TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('kcsl').AsFloat - TSQLDataSet(nbxshcxb.DataSet).FieldByName('sxsl').AsFloat);
        end
        else
        begin
          jqpjj:=0;
        end;
        TSQLDataSet(nbxshcwzkc.DataSet).Edit;
        TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('bcljsl').AsFloat:=TSQLDataSet(nbxshcwzkc.DataSet).fieldByName('bcljsl').AsFloat+TSQLDataSet(nbxshcxb.DataSet).FieldByName('sxsl').AsFloat;
        TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('bcljje').AsFloat:=TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('bcljje').AsFloat+TSQLDataSet(nbxshcxb.DataSet).FieldByName('xsje').AsFloat;
        TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('zje').AsFloat:=TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('zje').AsFloat-TSQLDataSet(nbxshcxb.DataSet).FieldByName('xsje').AsFloat;
        TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('kcsl').AsFloat:= TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('kcsl').AsFloat-TSQLDataSet(nbxshcxb.DataSet).FieldByName('sxsl').AsFloat;
        TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('jqpjj').AsFloat:= jqpjj;
        TSQLDataSet(nbxshcwzkc.DataSet).Post;
      end;

      TSQLDataSet(nbxshcxb.DataSet).Next;
    end;

    TSQLDataSet(nbxshcjb.DataSet).ReadOnly := false;
    TSQLDataSet(nbxshcjb.DataSet).Edit;
    TSQLDataSet(nbxshcjb.DataSet).FieldByName('ppbm').AsString:= djbm;
    TSQLDataSet(nbxshcjb.DataSet).FieldByName('shbs').AsString:='1';
    TSQLDataSet(nbxshcjb.DataSet).FieldByName('shsj').AsString:= getSysDate;
    TSQLDataSet(nbxshcjb.DataSet).FieldByName('shrybm').AsString:= getOPR;
    TSQLDataSet(nbxshcjb.DataSet).Post;

    InfoBrokerYWXX_NBXSHC.Info.ApplyUpdates;
    gsbm:= TSQLDataSet(nbxslrjb.DataSet).FieldByName('gsbm').AsString;
    TSQLDataSet(nbxslrtz.DataSet).Open;
    TSQLDataSet(nbxslrxb.DataSet).First;
    while not TSQLDataSet(nbxslrxb.DataSet).Eof do
    begin
      wzbm:= TSQLDataSet(nbxslrxb.DataSet).FieldByName('wzbm').AsString;
      TSQLDataSet(nbxslrxb.DataSet).Next;
      wzbmshc:= ''+wzbm+''+','+wzbms;
    end;

    //对物资编码进行转换处理
    wzbmshc:='('+wzbms+')';
    slength:= wzbms.Length;
    wzbms2hc:= wzbms.Substring(0,slength-2) + wzbms.Substring(slength-1,1);

    TSQLDataSet(nbxslrwzkc.DataSet).SQL.Text:='select * from zbmroler.wzkcxxb where wzbm in '+wzbms2hc+' and gsbm='''+gsbm+'''';
    TSQLDataSet(nbxslrwzkc.DataSet).Open;

    TSQLDataSet(nbxslrxb.DataSet).First;
    while not TSQLDataSet(nbxslrxb.DataSet).Eof do
    begin
      wzbm:= TSQLDataSet(nbxslrxb.DataSet).FieldByName('wzbm').AsString;
      TSQLDataSet(nbxslrwzkc.DataSet).locate('wzbm',[wzbm],[]);

      jqpjj := (TSQLDataSet(nbxslrwzkc.DataSet).FieldByName('zje').AsFloat - TSQLDataSet(nbxslrxb.DataSet).FieldByName('xsje').AsFloat+TSQLDataSet(nbxshcxb.DataSet).FieldByName('xsje').AsFloat)/(TSQLDataSet(nbxslrwzkc.DataSet).FieldByName('kcsl').AsFloat-TSQLDataSet(nbxslrxb.DataSet).FieldByName('sxsl').AsFloat - TSQLDataSet(nbxshcxb.DataSet).FieldByName('sxsl').AsFloat);

      TSQLDataSet(nbxslrtz.DataSet).Append;
      TSQLDataSet(nbxslrtz.DataSet).FieldByName('pzbm').AsString:= TSQLDataSet(nbxslrjb.DataSet).FieldByName('xsdbm').AsString;
      TSQLDataSet(nbxslrtz.DataSet).FieldByName('wzbm').AsString:= TSQLDataSet(nbxslrxb.DataSet).FieldByName('wzbm').AsString;
      TSQLDataSet(nbxslrtz.DataSet).FieldByName('sfbz').AsString:= '1';
      TSQLDataSet(nbxslrtz.DataSet).FieldByName('srsl').AsString:= '0';
      TSQLDataSet(nbxslrtz.DataSet).FieldByName('fcsl').AsString:= TSQLDataSet(nbxslrxb.DataSet).FieldByName('sxsl').AsString;
      TSQLDataSet(nbxslrtz.DataSet).FieldByName('gsbm').AsString:= gsbm;
      TSQLDataSet(nbxslrtz.DataSet).FieldByName('pzgldmbbm').AsString:='009';
      TSQLDataSet(nbxslrtz.DataSet).FieldByName('pzmcbm').AsString:='002';
      TSQLDataSet(nbxslrtz.DataSet).FieldByName('cbdj').AsFloat:= jqpjj;
      TSQLDataSet(nbxslrtz.DataSet).FieldByName('je').AsFloat:= TSQLDataSet(nbxslrxb.DataSet).FieldByName('xsje').AsFloat;
      TSQLDataSet(nbxslrtz.DataSet).FieldByName('pjbm').AsString:= djbm2;
      TSQLDataSet(nbxslrtz.DataSet).FieldByName('bz').AsString:= '000';
      TSQLDataSet(nbxslrtz.DataSet).FieldByName('jcsl').AsFloat:= TSQLDataSet(nbxslrwzkc.DataSet).FieldByName('kcsl').AsFloat - TSQLDataSet(nbxslrxb.DataSet).FieldByName('sxsl').AsFloat-TSQLDataSet(nbxshcxb.DataSet).FieldByName('sxsl').AsFloat;
      TSQLDataSet(nbxslrtz.DataSet).FieldByName('jcje').AsFloat:= TSQLDataSet(nbxslrwzkc.DataSet).FieldByName('zje').AsFloat-TSQLDataSet(nbxslrxb.DataSet).FieldByName('xsje').AsFloat-TSQLDataSet(nbxshcxb.DataSet).FieldByName('xsje').AsFloat;
      TSQLDataSet(nbxslrtz.DataSet).FieldByName('sjkcsl').AsFloat:= TSQLDataSet(nbxslrwzkc.DataSet).FieldByName('sjkcsl').AsFloat;
      TSQLDataSet(nbxslrtz.DataSet).Post;

      TSQLDataSet(nbxslrxb.DataSet).Next;
    end;

   TSQLDataSet(nbxslrxb.DataSet).First;
    while not TSQLDataSet(nbxslrxb.DataSet).Eof do
    begin
      wzbm:= TSQLDataSet(nbxslrxb.DataSet).FieldByName('wzbm').AsString;
      flag2:= TSQLDataSet(nbxslrwzkc.DataSet).locate('wzbm',[wzbm],[]);

      if  not (flag2) then
      begin
        Dialogs.ShowMessage('内部销售红冲审核出现错误,error:物资库存信息表不存在,line309!');
      end
      else if flag2 then
      begin

      if (TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('kcsl').AsFloat <> (0-TSQLDataSet(nbxshcxb.DataSet).FieldByName('sxsl').AsFloat)) then
      begin
        jqpjj := (TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('zje').AsFloat - TSQLDataSet(nbxshcxb.DataSet).FieldByName('xsje').AsFloat)/(TSQLDataSet(nbxshcwzkc.DataSet).FieldByName('kcsl').AsFloat - TSQLDataSet(nbxshcxb.DataSet).FieldByName('sxsl').AsFloat);
      end
      else
      begin
        jqpjj:=0;
      end;
        TSQLDataSet(nbxslrwzkc.DataSet).Edit;
        TSQLDataSet(nbxslrwzkc.DataSet).FieldByName('bcljsl').AsFloat:=TSQLDataSet(nbxslrwzkc.DataSet).fieldByName('bcljsl').AsFloat+TSQLDataSet(nbxslrxb.DataSet).FieldByName('sxsl').AsFloat+TSQLDataSet(nbxshcxb.DataSet).FieldByName('sxsl').AsFloat;
        TSQLDataSet(nbxslrwzkc.DataSet).FieldByName('bcljje').AsFloat:=TSQLDataSet(nbxslrwzkc.DataSet).FieldByName('bcljje').AsFloat+TSQLDataSet(nbxslrxb.DataSet).FieldByName('xsje').AsFloat+TSQLDataSet(nbxshcxb.DataSet).FieldByName('xsje').AsFloat;
        TSQLDataSet(nbxslrwzkc.DataSet).FieldByName('zje').AsFloat:=TSQLDataSet(nbxslrwzkc.DataSet).FieldByName('zje').AsFloat-TSQLDataSet(nbxslrxb.DataSet).FieldByName('xsje').AsFloat - TSQLDataSet(nbxshcxb.DataSet).FieldByName('xsje').AsFloat;
        TSQLDataSet(nbxslrwzkc.DataSet).FieldByName('kcsl').AsFloat:= TSQLDataSet(nbxslrwzkc.DataSet).FieldByName('kcsl').AsFloat-TSQLDataSet(nbxslrxb.DataSet).FieldByName('sxsl').AsFloat - TSQLDataSet(nbxshcxb.DataSet).FieldByName('sxsl').AsFloat;
        TSQLDataSet(nbxslrwzkc.DataSet).FieldByName('jqpjj').AsFloat:= jqpjj;
        TSQLDataSet(nbxslrwzkc.DataSet).Post;
      end;

      TSQLDataSet(nbxslrxb.DataSet).Next;
    end;

    TSQLDataSet(nbxslrjb.DataSet).Edit;
    TSQLDataSet(nbxslrjb.DataSet).FieldByName('ppbm').AsString:= djbm2;
    TSQLDataSet(nbxslrjb.DataSet).FieldByName('shbs').AsString:='1';
    TSQLDataSet(nbxslrjb.DataSet).FieldByName('shsj').AsString:= getSysDate;
    TSQLDataSet(nbxslrjb.DataSet).FieldByName('shrybm').AsString:= getOPR;
    TSQLDataSet(nbxslrjb.DataSet).Post;
    InfoBrokerYWXX_NBXSLR.Info.ApplyUpdates;


    TSQLDataSet(nbxsysdj.DataSet).Edit;
    TSQLDataSet(nbxsysdj.DataSet).FieldByName('pjztbm').AsString:='002';
    TSQLDataSet(nbxsysdj.DataSet).ApplyUpdates;
    finally
   end;
回复 支持 反对

使用道具 举报

发表于 2008-7-28 11:36:08 | 显示全部楼层
跟踪了吗?报错的时候代码停在那里?
看看数据集的更新选项。
回复 支持 反对

使用道具 举报

发表于 2008-7-28 15:49:05 | 显示全部楼层
错误代码
procedure TSTANDARDSTYLEMAINFORM.actFlowOutExecute(Sender: TObject);
begin
  if CurrentFlowControl <> nil then
    CurrentFlowControl.FlowOut(nil);  /////////执行该句时报错
end;

该代码是在标准风格主窗体  里面的方法   unit STANDARDSTYLEMAINFORM;
回复 支持 反对

使用道具 举报

发表于 2008-7-28 15:49:54 | 显示全部楼层
还想问下关于
那些更新数据库的语句  在什么地方可以查看他的具体的sql啊
就比如在applyupdate之前   可以查看更新的sql么?
回复 支持 反对

使用道具 举报

发表于 2008-7-28 16:14:52 | 显示全部楼层
报错的时候,停在11楼代码的哪里?

更新选项里看更新的sql语句。 (问一句,你的sql里是否有到了复杂sql)
回复 支持 反对

使用道具 举报

发表于 2008-7-28 16:25:48 | 显示全部楼层
十一楼代码没有报错  
程序是运行到十三楼的注释那里报的错误
代码都是用的append  然后post进行的更新操作啊  
在更新选项的update里面没有任何语句
没有用的复杂sql啊  就是简单的查询  等等
回复 支持 反对

使用道具 举报

发表于 2008-7-28 16:37:08 | 显示全部楼层
我远程看下。
回复 支持 反对

使用道具 举报

发表于 2008-7-28 17:30:30 | 显示全部楼层
看过之后,问题应该出在11楼的代码里,形如InfoBroker1.Info.ApplyUpdates的这种地方。已经告诉楼主了,检查后请楼主反馈结果。
回复 支持 反对

使用道具 举报

发表于 2008-7-30 17:32:14 | 显示全部楼层
楼主,这个问题怎么样了?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-20 08:58 , Processed in 0.044598 second(s), 14 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表