以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=86678)

--  作者:狂风暴雨狂波
--  发布时间:2016/6/23 10:16:00
--  求助

 Dim dlg As New OpenFileDialog
    dlg.Filter= "Excel文件|*.xls" \'设置筛选器
    If dlg.ShowDialog = DialogResult.Ok Then
        Dim Book As New XLS.Book(dlg.FileName)
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
        Tables("货单收款管理_Table1").StopRedraw()
        Dim cnt As Integer
        For n As Integer = 1 To Sheet.Rows.Count -1
            Dim bh As String = sheet(n,0).Text
            Dim dr As DataRow = DataTables("发车明细表").Find("托运单号= \'" & bh & "\'")
            If dr Is Nothing Then \'如果不存在相同单号的运单
                dr=DataTables("发车明细表").AddNew()
            End If
            For m As Integer = 0 To Tables("货单收款管理_Table1").Cols.Count-1
                dr(Tables("货单收款管理_Table1").Cols(m).Name) = Sheet(n,m).Value
             Next
        Next
        Tables("货单收款管理_Table1").ResumeRedraw()
    End If
如果存在相同单号的运单,则覆盖原来的运单,否则新增一个运单.

如果项目中的日期列的值为空,Excel文件中的日期列为空或者有值,覆盖运行时可以正常运行.如果项目中的日期列有日期,而Excel文件中的日期列为空,这样覆盖运行时报错


图片点击可在新窗口打开查看此主题相关图片如下:未命名.bmp
图片点击可在新窗口打开查看
是什么原因?该如何修改代码?请高手赐教,谢谢!
--  作者:大红袍
--  发布时间:2016/6/23 10:18:00
--  

For m As Integer = 0 To Tables("货单收款管理_Table1").Cols.Count-1
    If sheet(n, m).Text = "" Then
        dr(Tables("货单收款管理_Table1").Cols(m).Name) = Nothing
    Else
        dr(Tables("货单收款管理_Table1").Cols(m).Name) = Sheet(n,m).Value
    End If
Next


--  作者:狂风暴雨狂波
--  发布时间:2016/6/23 10:27:00
--  
修改了仍然报同样的错误
--  作者:大红袍
--  发布时间:2016/6/23 10:32:00
--  

 那就不是代码的问题,你dataColChanged事件应该有问题。

 

 上传实例


--  作者:狂风暴雨狂波
--  发布时间:2016/6/23 10:33:00
--  
为什么只是日期列出现这样的情况?其他列为空没有这种错误提示,是不是字符串不能转换为日期?
--  作者:大红袍
--  发布时间:2016/6/23 10:36:00
--  

 看4楼


--  作者:狂风暴雨狂波
--  发布时间:2016/6/23 11:26:00
--  
实例文件太大不能上传,我将dataColChanged事件的代码上传过来帮我看看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:datacolchanged事件.rar


--  作者:大红袍
--  发布时间:2016/6/23 11:28:00
--  

1、删除datacolchanged事件,是否还报错?如果报错,就加入msgbox,定位哪里出问题。

 

2、如果不报错,单独做个例子发上来测试。


--  作者:狂风暴雨狂波
--  发布时间:2016/6/23 11:38:00
--  

删除datacolchanged事件还是报错

If sheet(n, m).Text = "" Then
        dr(Tables("货单收款管理_Table1").Cols(m).Name) = Nothing
运行到这里出现日期列时报错,其他都能运行

[此贴子已经被作者于2016/6/23 11:39:37编辑过]

--  作者:大红袍
--  发布时间:2016/6/23 11:39:00
--  
 不可能,上传实例