vsflexgrid的奇怪问题,不知哪位神仙能解释一下?EditText?为什么事件vsfg_ChangeEdit()中
1.如下代码,则Set_StockAndPrice函数执行并没有起作用2.去掉条件If aa <> topart Then,则执行正确
3.如果不注释掉MsgBox CLBRowid & "," & itmcode & " ," & ProvLoc & " ," & topart,将执行MsgBox ,显示结果也正确
4.如果最后一行,也就是最后的End If ,设断点则执行结果也正确请问为什么有这个条件If aa <> topart Then,结果就不正确了?我认为是vsfg数据更新延迟,但是没有条件If aa <> topart Then,怎么就可以呢??
真是想不通Private Sub vsfg_ChangeEdit()
    Dim topart As String
    Dim itmcode As String
    Dim ProvLoc As String
    Dim CLBRowid As String
    Dim aa      As String
    
    
    If vsfg.row > 0 And vsfg.Col = 6 Then
        
        '查转换数值
        CLBRowid = vsfg.TextMatrix(vsfg.row, 14)
        itmcode = vsfg.TextMatrix(vsfg.row, 0)
        topart = vsfg.EditText
        ProvLoc = cmb_ProvideL.Text
        aa = vsfg.TextMatrix(vsfg.row, 6)
       
        If aa <> topart Then
        '重新按该单位调出库存数量、价格
        'MsgBox CLBRowid & "," & itmcode & " ," & ProvLoc & " ," & topart
        Call Set_StockAndPrice(CLBRowid, itmcode, ProvLoc, topart)
        Call CalCostsAndShow
        Call Status(2)
        End If
    End If
End Sub其中函数Set_StockAndPrice(CLBRowid, itmcode, ProvLoc, topart)内有如下代码: With vsfg_Item
            .TextMatrix(.RowSel, 4) = "ewqq"
            .TextMatrix(.RowSel, 7) = "fsdfdsf"
            .......
         End With

解决方案 »

  1.   

    你说的错误是:If aa <> topart Then条件判断错误还是Set_StockAndPrice(CLBRowid, itmcode, ProvLoc, topart)函数执行错误啊?
      

  2.   

    程序并没有错误
    只是在上述四种情况下,对于如下的执行结果不相同
            
            With vsfg_Item
                .TextMatrix(.RowSel, 4) = "ewqq"
                .TextMatrix(.RowSel, 7) = "fsdfdsf"
                .......
             End With
      

  3.   

    不大明白,楼主你说的几种情况都是只是相差一两条指令的时间嘛,这相对于VsFlexGrid的数据更新延时应该影响不大吧?怎么又会得出几种不同的正确答案呢??我都搞糊涂了。
      

  4.   

    单步进去调试看看是否是Set_StockAndPrice的几个参数有变化。
      

  5.   

    我也不清楚你要问什么,但能确定的是vsflexgrid在这个事件里不存在数据更新延时的问题
      

  6.   

    建议不要使用ChangeEdit事件,这个事件好像是对老版本的兼容才放在里面的,新的VSFlexGRID7里里面有AfterEdit 和BeforeEdit事件,建议使用这二个事件.试一下吧.!
      

  7.   

    With vsfg_Item
                .TextMatrix(.RowSel, 4) = "ewqq"
                .TextMatrix(.RowSel, 7) = "fsdfdsf"
                .......
             End With
    并非vsfg,是另一个VSFLEXGRID吧,那和你传进去的参数也没什么关系啊,怎么会结果不一样呢
      

  8.   

    AfterEdit 和BeforeEdit事件我试过了,不理想,达不到效果这个程序可简化如下:Private Sub vsfg_ChangeEdit()
        Dim topart As String
        Dim itmcode As String
        Dim ProvLoc As String
        Dim CLBRowid As String
        Dim aa      As String
        
        
        If vsfg.row > 0 And vsfg.Col = 6 Then
            
            '查转换数值
            CLBRowid = vsfg.TextMatrix(vsfg.row, 14)
            itmcode = vsfg.TextMatrix(vsfg.row, 0)
            topart = vsfg.EditText
            ProvLoc = cmb_ProvideL.Text
            aa = vsfg.TextMatrix(vsfg.row, 6)
           
            If aa <> topart Then
                '重新按该单位调出库存数量、价格
                'MsgBox CLBRowid & "," & itmcode & " ," & ProvLoc & " ," & topart
                With vsfg
                    .TextMatrix(.RowSel, 4) = "ewqq"
                    .TextMatrix(.RowSel, 7) = "fsdfdsf"
                    .......
                End With
            End If
        End If
    End Sub
      

  9.   

    神了
    神了我解决了
    在函数Set_StockAndPrice(CLBRowid, itmcode, ProvLoc, topart)内做了一点点改动(添加了.TextMatrix(.RowSel, 6)=topart),就OK了.但对最初为什么会出现那几种情况还是不明白,而且为什么这么改就OK也不明白??With vsfg_Item
      .TextMatrix(.RowSel, 4) = "ewqq"
      .TextMatrix(.RowSel, 7) = "fsdfdsf"
      .TextMatrix(.RowSel, 6)=topart    '这行添加的,我在vsfg_ChangeEdit里改的也是第6列
    End With而我再写一个类似的程序,不用类似的添加 .TextMatrix(.RowSel, 6)=topart    就OK真是不可想象,这几行程序看了无数次了,不明白!!!
      

  10.   

    回复人: RUKYO(SpeakFool - 蠢蠢的男子汉) ( ) 信誉:123  2004-07-30 14:06:00  得分: 0  
     
     
       :)
      
     
    好好想想可能是什么原因?