大家有没有遇到过执行一个程序得不到正确结果,而手动单步执行却可以得到正确结果的情况啊???高手请指点一下!谢谢啦!!!郁闷死了。

解决方案 »

  1.   

    你是不是用到Timer控件了?
    插入适当的延时看看。
    sleep(num)
      

  2.   

    可能是缓存的问题,比如读写Ini文件的时候
      

  3.   

    //系统延时造成的?看看你的代码
    同意
    我以前用socket API就出现过这样的问题
      

  4.   

    我把代码给大家帖出来啦,这是触发Click事件后的代码,就是这个地方出错。执行后不能得到正确结果,手动却可以。。请大家看看哪个地方有问题啊?Private Sub Command1_Click()
        KHJZ_KH_Name = comkh.Text
        KHJZ_KH_XJ = 0
        KHJZ_KH_ZP = 0
        KHJZ_KH_RQ = 0
        
        Frmjzje.Show 1
        '=========================自动结账===================================
        If KHJZ_bOK Then
            comkh.Text = KHJZ_KH_Name
            Dim Rs1 As ADODB.Recordset
            Dim Rs2 As ADODB.Recordset
            Dim sstr1 As String
            Dim sstr2 As String
            Set Rs1 = New ADODB.Recordset
            Set Rs2 = New ADODB.Recordset
            Dim Rs3 As ADODB.Recordset
            Dim Rs4 As ADODB.Recordset
            Dim sstr3 As String
            Dim sstr4 As String
            Set Rs3 = New ADODB.Recordset
            Set Rs4 = New ADODB.Recordset
            Dim Rs As ADODB.Recordset
            Dim sstr As String
            Dim Rs5 As ADODB.Recordset
            Dim sstr5 As String
            Dim Rs6 As ADODB.Recordset
            Dim sstr6 As String
            Dim xjye, zpye, dqye As Currency
            Dim add As Boolean                   '结账时上次的余额是否参与了现金的结算
            Set Rs = New ADODB.Recordset
            Set Rs5 = New ADODB.Recordset
            sstr = "select zpje , xjje , jzf , jzrq from kfgltable where khmc='" & KHJZ_KH_Name & "' and jzf='未结' and zpje <> 0  order by chrq,zpje"
            Rs.Open sstr, LCon, adOpenStatic, adLockOptimistic
            sstr5 = "select dqye from khqktable where khmc='" & KHJZ_KH_Name & "'"
            Rs5.Open sstr5, LCon, adOpenStatic, adLockOptimistic
            xjye = KHJZ_KH_XJ
            zpye = KHJZ_KH_ZP
            dqye = Rs5.Fields(0)
            xjye = xjye + dqye
            add = False
            If Not Rs.EOF Then  '================客户未结记录为空=====================
                Rs.MoveFirst
                '=================现金结账阶段================================
                Do While Not Rs.EOF  '现金余额是否小于当前记录的支票额,不小于则结账
                    If Not (xjye < CCur(Rs("zpje"))) Then
                        xjye = xjye - Rs("zpje")               '要考虑到拿来的支票大于所有未结支票总额
                        Rs("xjje") = Rs("zpje")
                        Rs("zpje") = 0
                        Rs("jzf") = "已结"
                        Rs("jzrq") = KHJZ_KH_RQ
                        Rs.Update
                    Else
                        Exit Do
                    End If
                    Rs.MoveNext
                    add = True
                Loop
      

  5.   

    '================现金不足以支付一台==============================================            If Not Rs.EOF Then
                    If xjye <> 0 Then    '现金余额不为0
                        Dim TEMP As Currency
                        TEMP = Rs("zpje") - xjye
                        zpye = zpye - TEMP
                        xjye = 0
                        Rs("xjje") = Rs("zpje")
                        Rs("zpje") = TEMP
                        Rs("jzf") = "已结"
                        Rs("jzrq") = KHJZ_KH_RQ
                        Rs.Update
                        Rs.MoveNext
                    End If
                End If
                '===============支票结账阶段=============================================
                If add Then
                    Do While Not Rs.EOF         '现金余额是否小于当前记录的支票额,不小于则结账
                        If Not (zpye < CCur(Rs("zpje"))) Then
                            zpye = zpye - Rs("zpje")             '要考虑到拿来的支票大于所有未结支票总额
                            Rs("jzf") = "已结"
                            Rs("jzrq") = KHJZ_KH_RQ
                            Rs.Update
                        Else
                            Exit Do
                        End If
                        Rs.MoveNext
                    Loop
                Else
                    zpye = zpye + dqye
                    xjye = xjye - dqye
                    Do While Not Rs.EOF   '现金余额是否小于当前记录的支票额,不小于则结账
      

  6.   

    怎么这么多If Not Rs.EOF Then 和Do While Not Rs.EOF ,看晕了
      

  7.   

    我说这位仁兄,你那个代码的垃圾部分也太多了吧,那么多rs,你就不会用com和sql写啊,占这么多空间和连接系统不出现延时都奇怪,在说你那个记录集用完了不知道关吗。仅指出1点,其他的你自己整理把
    sstr5 = "select dqye from khqktable where khmc='" & KHJZ_KH_Name & "'"
            Rs5.Open sstr5, LCon, adOpenStatic, adLockOptimistic
            xjye = KHJZ_KH_XJ
            zpye = KHJZ_KH_ZP
            dqye = Rs5.Fields(0)
            xjye = xjye + dqye '这里 你在这累加干什么。不能写成sql阿
            add = False
    ===========================================================================
    sstr5 =  select count(dqye) from khqktable where khmc='" &  KHJZ_KH_Name & "'"
     
            Rs5.Open sstr5, LCon, adOpenStatic, adLockOptimistic
            xjye = KHJZ_KH_XJ
            zpye = KHJZ_KH_ZP             
            xjye =rs5.fields(0)
            add = False
             rs5.close '用完了给关上
            set rs5=nothing'然后清空