以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  遇到不明原因的错误提示(140719)  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=53895)

--  作者:yankunhao
--  发布时间:2014/7/17 16:05:00
--  遇到不明原因的错误提示(140719)
请问出现如下错误是什么原因?如何查呢?

.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2014.7.19.1
错误所在事件:窗口,销售订单管理,Button04,Click
详细错误信息:
Object cannot be cast from DBNull to other types.

--  作者:Bin
--  发布时间:2014/7/17 16:07:00
--  
错误所在事件:窗口,销售订单管理,Button04,Click

代码发出来看看

--  作者:yankunhao
--  发布时间:2014/7/17 16:16:00
--  
If Tables("obas_part_spec").Visible=True Then
    If CurrentTable.Name = "osal_ord2" Then
        Dim s As String =CurrentTable.Current("part_no")
        
        Dim t As WinForm.Table = Forms("销售订单管理").Controls("Table1")
        If t.Table.Rows.Count > 0 Then
            Dim ids As String
            For Each r As Row In t.Table.Rows
                
                ids = ids & ",\'" & r("part_no") & "\'"
            Next
            ids= ids.Trim(",")
            
            
            \'Try
            DataTables("obas_part_spec").LoadFilter = "part_no In (" & ids & ")"
            DataTables("obas_part_spec").Load()
            
            
            \'Catch ex As Exception
            
            \'MessageBox.Show("没有找到符合条件的行!")
            \'End Try
            
            e.Form.Visible=False
            Tables("临时表")(0)("第一列")="osal_ord1"
            MainTable = Tables("obas_part_spec")
            DataTables("obas_part_spec").DataCols("产品编码").RaiseDataColChanged()
            DataTables("obas_part_spec").Save()
            
            \'Syscmd.Project.Save()
            
            \'Application.DoEvents()
            With Tables("obas_part_spec")
                .Sort="订单ID"
                
                Dim r As Integer
                r = .Find(s, 0, "part_no", False, False, True)
                If r > - 1 Then \'如果找到符合条件的行
                    .Position = r \'则选择该行
                    Dim cpph As String = Tables("obas_part_spec").Current("part_no")
                    Dim dr As DataRow
                    dr = DataTables("料品资料查询表").Find("part_no = \'" & cpph & "\'")
                    If dr IsNot Nothing Then
                        
                        \'Select Case Tables("obas_part_spec").Current("产品类别")
                        Select Case dr("type_name")
                            Case "铝门锁","鹅旦锁","有尾门锁"
                                \' SystemReady = False
                                Forms("产品规格表2").Show
                                \' SystemReady = True
                            Case Else
                                \' SystemReady = False
                                Forms("产品规格表").Show
                                \' SystemReady = True
                        End Select
                    Else
                        Return
                    End If
                Else
                    If Messagebox.Show("规格表中还没录入此项数据,是否反回销售订单窗口?","提示",MessageBoxButtons.YesNo, MessageBoxIcon.Information)=DialogResult.Yes Then
                        \'e.Form.Close
                        MainTable = Tables("osal_ord1")
                    Else
                        
                        Select Case Tables("obas_part_spec").Current("产品类别")
                            
                            Case "铝门锁","鹅旦锁","有尾门锁"
                                \'SystemReady = False
                                Forms("产品规格表2").Open
                                \'SystemReady = True
                            Case Else
                                \'SystemReady = False
                                Forms("产品规格表").Open
                                \'SystemReady = True
                        End Select
                        
                        \'If Forms("产品规格表").Opened=False Then
                        \'SystemReady = False
                        \'Forms("产品规格表").Open
                        \'SystemReady = True
                        \'ElseIf Forms("产品规格表").Visible=False Then
                        \'Forms("产品规格表").Visible=True
                        \'End If
                    End If
                End If
            End With
            
        Else
            
            Messagebox.Show("订单明细表中没数据!,如有疑问,请与管理员联系","提示",MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If
    Else
        MessageBox.Show("请你先在下表中选择要查询的产品,再进行点击查询!")
    End If
Else
    Messagebox.Show("你不能查看此表!,如有疑问,请与管理员联系","提示",MessageBoxButtons.OK, MessageBoxIcon.Information)
End If

--  作者:yankunhao
--  发布时间:2014/7/17 16:17:00
--  
我是用这个按钮去查产品的,发现有些产品没错误,有部份产品就会提示出错。
[此贴子已经被作者于2014-7-17 16:17:01编辑过]

--  作者:有点甜
--  发布时间:2014/7/17 16:19:00
--  

 用msgbox测试,在哪个位置报错。

 

 http://www.foxtable.com/help/topics/1485.htm

 


--  作者:yankunhao
--  发布时间:2014/7/17 16:49:00
--  
Forms("产品规格表").Show 有问题

但个别产品没问题

--  作者:yankunhao
--  发布时间:2014/7/17 16:51:00
--  
这个在以前的版本是没问题的,是升级之后发现
--  作者:有点甜
--  发布时间:2014/7/17 16:52:00
--  
以下是引用yankunhao在2014-7-17 16:49:00的发言:
Forms("产品规格表").Show 有问题

但个别产品没问题

 

如果这个有问题,就去看这个窗口的AfterLoad事件,再调试一下错误。

 

 


--  作者:yankunhao
--  发布时间:2014/7/17 17:10:00
--  
.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2014.7.19.1
错误所在事件:obas_part_spec,DoubleClick
详细错误信息:
对象不能从 DBNull 转换为其他类型。

--  作者:yankunhao
--  发布时间:2014/7/17 17:11:00
--  
obas_part_spec,DoubleClick

Select Case Tables("obas_part_spec").Current("产品类别")
    
    Case "铝门锁","鹅旦锁","有尾门锁"
        
        Forms("产品规格表2").Show
        
    Case Else
    
        Forms("产品规格表").Show

End Select
[此贴子已经被作者于2014-7-17 17:11:04编辑过]