以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  通过下拉窗口选择输入数值后,数据库处于死机状态  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=186119)

--  作者:水墨青花
--  发布时间:2023/4/7 10:18:00
--  通过下拉窗口选择输入数值后,数据库处于死机状态
老师,您好:

之前通过下拉窗口选择输入数值后,都没有问题,而且已经使用量很久了。

今天稍微修改了下code,新增了一个窗口,多了一个副表,结果通过下拉窗口选择输入数值后,数据库就会处于死机状态。

我把下拉窗口在prepare中关闭后,就没有这个问题了。

请问这是情况?

--  作者:有点蓝
--  发布时间:2023/4/7 10:19:00
--  
prepare写了什么代码?
--  作者:水墨青花
--  发布时间:2023/4/7 10:28:00
--  
prepare 的代码没有编号,就是增加了一个新窗口“E”的判断

If Forms("A").Opened Then   \'只能在处理窗口中修改
    pr = Tables("A_Table1").Current
    edit = True
Else If Forms("B").Opened  Then   \'只能在处理窗口中修改
    pr = Tables("B_Table1").Current
    
Else If Forms("C").Opened  Then   \'只能在处理窗口中修改
    pr = Tables("C_Table1").Current

Else If Forms("D").Opened Then
    pr = Tables("D_Table1").Current

Else If Forms("E").Opened Then \'只能在处理窗口中修改
    pr = Tables("E_Table1").Current
    edit = True
End If

--  作者:水墨青花
--  发布时间:2023/4/7 10:31:00
--  
如果我把 e.IsFocusCell 中的 "量1“ ”量2” 去掉,手动输入数据,就不会进入死循环。

If e.IsFocusCell Then
    If pr IsNot Nothing Then
        Select Case e.Col.Name
                
            Case "量1", "量2"
                e.Col.Combolist = ""
                If e.Row("配制") <> "配制" AndAlso e.Row("配制") <> "定量" Then
                    Dim filter As String = "溶液1批号 = \'" & e.Row("溶液1批号") & "\' And 配制 In (\'配制\',\'定量\') And  溶液2批号 = \'" & e.Row("溶液2批号") & "\'"
                    e.Col.Combolist = DataTables("溶液数据").SQLGetComboListString(e.Col.Name, filter)
                End If
        End Select
    End If
End If

--  作者:水墨青花
--  发布时间:2023/4/7 10:35:00
--  
如果prepare 中 e.IsFocusCell 可以选择,即便我直接输入,也会进入死循环。

不知允许从下拉窗口中 选择数值,和 不能选择只能直接输入数值,会有什么区别?
--  作者:有点蓝
--  发布时间:2023/4/7 10:46:00
--  
3楼的代码是干嘛用的?把这个事件的完整代码发上来
--  作者:水墨青花
--  发布时间:2023/4/7 10:53:00
--  

老师,我又试了一下,把新加的code全都 去掉后,也不行。

问题就是出在“下拉选择”,只要有下拉选择,就会进入死循环,如果把 prepare中的下拉选择去掉,就没有问题。而且这个情况就是出在今天,之前都没有。

这种情况如何解决呢?如果删掉 bin 文件夹 是否会起作用?

--  作者:有点蓝
--  发布时间:2023/4/7 10:57:00
--  
看6楼
--  作者:水墨青花
--  发布时间:2023/4/7 11:30:00
--  
老师,

下面是prepare的完整code。

但是刚才不止一个地方在报错,问题都是出在有下拉选项的输入,只要是有下拉选项的地方,输入数值就会进入死机状态。
而且,这个问题之前是没有的。


Dim pr As Row
Dim edit As Boolean

If Forms("溶出数据处理").Opened Then   \'只能在处理窗口中修改
    pr = Tables("溶出数据处理_Table1").Current
    edit = True
Else If Forms("含量数据处理").Opened  Then   \'只能在处理窗口中修改
    pr = Tables("含量数据处理_Table1").Current
    
Else If Forms("有关数据处理").Opened  Then   \'只能在处理窗口中修改
    pr = Tables("有关数据处理_Table1").Current

Else If Forms("验证数据处理").Opened Then
    pr = Tables("验证数据处理_Table1").Current

Else If Forms("标曲含量数据处理").Opened Then \'只能在处理窗口中修改
    pr = Tables("标曲含量数据处理_Table1").Current
    edit = True
End If

If pr IsNot Nothing Then
    Select Case e.Col.Name

        Case "称样量"
            If edit = True Then   
                If pr("完成") = "Y" Then
                    e.Cancel = True
                End If
            Else
                e.Cancel = True
            End If
        Case "备注"
            e.Cancel = False
        Case Else
            e.Cancel = True
    End Select
Else
    e.Cancel = True
End If


If e.IsFocusCell Then
    If pr IsNot Nothing Then
        Select Case e.Col.Name
            Case "称样量"
                e.Col.Combolist = ""
                If e.Row("配制") <> "定量" Then
                    Dim filter As String = "溶液1批号 = \'" & e.Row("溶液1批号") & "\' And 溶液2批号 = \'" & e.Row("溶液2批号") & "\'"
                    e.Col.Combolist = DataTables("溶液数据").SQLGetComboListString(e.Col.Name, filter)
                End If
        End Select
    End If
End If

--  作者:有点蓝
--  发布时间:2023/4/7 11:40:00
--  
看不出什么问题。请上传实例测试