strSQL = "SELECT a.DuShu DuShu FROM JieSuanCBJL a,JieSuan b WHERE a.BianHao=b.BianHao_SH " _
         & " AND b.BianHao_ZZ='" & Trim(MSFlexGrid1.TextMatrix(i, 2)) & "'" _
      Rslt.Open strSQL, Adocn
      If Rslt.EOF Then
        DuShu = 0
        DuShu_SH = 0
      Else
        DuShu = IIf(IsNull(Rslt("DuShu")), 0, Trim(Rslt("DuShu")))
        If Val(Trim(MSFlexGrid1.TextMatrix(i, 9))) - Val(DuShu) >= 0 Then
          DuShu_SH = Format(Val(Trim(MSFlexGrid1.TextMatrix(i, 9))) - Val(DuShu), "0.0")
======================================================================================
程序本意是实现本次数据一一对应减去上次数据得到需要的数据,但上面程序只能用本次所有数据都减去上次数据的第一个记录,请大家帮忙看一下问题出在那里 

解决方案 »

  1.   

    \\Trim(MSFlexGrid1.TextMatrix(i, 2)) \\那个i是你在循环里改变的吧.
      

  2.   

    二楼 是的 
    For i = 1 To MSFlexGrid1.Rows - 1 是数据记录循环
      

  3.   

    DuShu = IIf(IsNull(Rslt("DuShu")), 0, Trim(Rslt("DuShu")))
    大家觉的会不会是这句是对DUSHU的赋值不对啊?
      

  4.   

    DuShu = IIf(IsNull(Rslt("DuShu")), 0, Trim(Rslt("DuShu")))
    这句写的有问题,DuShu倒底是字串还是数值,怎么能用两种类型给你的变量赋值呢另外,不太明白你说的意思,请你把代码说得详细些