Foxtable(狐表)用户栏目专家坐堂 → 请教一个问题


  共有3122人关注过本帖树形打印复制链接

主题:请教一个问题

帅哥哟,离线,有人找我吗?
sf020cf
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
请教一个问题  发帖心情 Post By:2015/11/19 14:06:00 [显示全部帖子]

在导入时 遇到数据格式不对的(会报错) 怎样跳过这个报错 继续导 完成后提示正确导入多少条 错误多少条

(能不能把报错的数据在临时表中显示出来 修改完成后再重新导入)

是否有过范本或者参考 谢谢

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
sf020cf
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
  发帖心情 Post By:2015/11/19 14:46:00 [显示全部帖子]

这个我明白 就是想跳过报错 完成后才集体显示哪些数据有问题 假如 我有300条数据要导入 其中二十条有错 能否不用提示二十次 完成导入280条 有问题的20条集体显示 就算不能改 也要知道是哪条数据出错吧

像我刚才有一条报字符“”不能转换为双精度小数的 在excel中搜不到是哪条  两万多条数据怎么找


 回到顶部
帅哥哟,离线,有人找我吗?
sf020cf
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
  发帖心情 Post By:2015/11/19 15:58:00 [显示全部帖子]

有没有catch错误提示的功能 跳过 不用一出现错误就要按确定 


 回到顶部
帅哥哟,离线,有人找我吗?
sf020cf
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
  发帖心情 Post By:2015/11/19 16:35:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:xzu$wm{o%b5e1gywy9veqox.png
图片点击可在新窗口打开查看
做成这样的效果 也是针对excel的表格 有没有好的建议 能自动识别错误类型 比如

If 单元格.Value = "" Then

    Tables("临时表").AddNew

Else

    Tables("正常表").AddNew

End If

只能针对单元格.value是“”这种格式的错误

 


 回到顶部
帅哥哟,离线,有人找我吗?
sf020cf
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
  发帖心情 Post By:2015/11/19 16:58:00 [显示全部帖子]

我有四行数据需要注意 一行日期时间类型的 三行双精度小数的

像日期的有不是合法的OleAut日期的

小数有“”不能转换为double

出错的数据类型多种多样 能不能直接不管什么错 错了扔到临时表 对的导入到数据表

我上传的图片就是这样的 19条数据 18条错了 最后才统一体现


 回到顶部
帅哥哟,离线,有人找我吗?
sf020cf
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
  发帖心情 Post By:2015/11/19 18:02:00 [显示全部帖子]

先测试再导入,还是边导入边测试

 Dim d As Date'变量d用于存储转换结果
If Date.TryParse("下单日期列", d) Then '如果转换成功
    tables(“配载订单”).addnew(这一行数据)

Else

    tables(“临时表”).addnew
(这一行数据)'给出错误提示
End
If

dim r As Double

If Double.TryParse("数量|体积|重量",r) then

   tables(“配载订单”).addnew(这一行数据)
Else

    tables(“临时表”).addnew
(这一行数据)'给出错误提示
End
If

不知道该怎样做 条件要怎样连接起来 四列数据都要能转换才导得进 导不进的都在临时表

Dim dlg As new OpenFileDialog
If dlg.ShowDialog = DialogResult.OK Then
    Dim App As New MSExcel.Application
    try
        Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(dlg.FileName)
        Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets("总计划表")
        Dim Rg As MSExcel.Range = Ws.UsedRange
        Dim ary = rg.value

        Tables("配载订单").ResumeRedraw()
        Tables("配载订单").StopRedraw()
        Dim nms() As  String = {"项目","下单日期","MK号","DO号","城市","客户","送货地址","物料代码","数量","体积","重量","承运商","司机","车牌","车数","车型","出车日期"}
       
        For n As Integer = 2 To ws.UsedRange.Rows.Count -1
            Dim r As  Row = Tables("配载订单").AddNew()
            For  m As  Integer = 0 To nms.Length - 1
                If Tables("配载订单").Cols(nms(m)).IsDate Then
                    Dim d As Date
                    If Date.TryParse(ary(n,m+1), d)
                        r(nms(m)) = d
                    End If
                Else
                    r(nms(m)) = ary(n,m+1)
                   
                End If
            Next
        Next
        Tables("配载订单").ResumeRedraw()
       
    catch ex As exception
        msgbox(ex.message)
        app.quit
    End try
End If
e.Form.Controls("提示").Text = "正在导入,请稍后..."
Application.DoEvents()
e.Form.Controls("提示").Text = "已经导入完成."
 e.Form.TimerInterval = 5000
  e.Form.TimerEnabled = True

 

帮忙在这段代码上指引一下


 回到顶部
帅哥哟,离线,有人找我吗?
sf020cf
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
  发帖心情 Post By:2015/11/20 10:40:00 [显示全部帖子]

Dim dlg As new OpenFileDialog
If dlg.ShowDialog = DialogResult.OK Then
    Dim App As New MSExcel.Application
    try
        Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(dlg.FileName)
        Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets("总计划表")
        Dim Rg As MSExcel.Range = Ws.UsedRange
        Dim ary = rg.value
       
        Tables("配载订单").ResumeRedraw()
        Tables("配载订单").StopRedraw()
        Dim nms() As  String = {"项目","下单日期","MK号","DO号","城市","客户","送货地址","物料代码","数量","体积","重量","承运商","司机","车牌","车数","车型","出车日期"}
       
        For n As Integer = 2 To ws.UsedRange.Rows.Count -1
            Dim r As Row
            Dim msg As String = ""
            For  m As  Integer = 0 To nms.Length - 1
                If Tables("配载订单").Cols(nms(m)).IsDate Then
                    Dim d As Date
                    If Date.TryParse(ary(n,m+1), d) = False Then '如果不能转成日期,肯定是不能导入的
                        msg &= "【" & ary(n,m+1) & "】不能转成日期" & vbcrlf
                    End If
                    If Tables("配载订单").Cols(nms(m)).IsNumeric Then
                        Dim d As Double
                        If Double.TryParse(ary(n,m+1), d) = False Then '如果不能转成日期,肯定是不能导入的
                            msg &= "【" & ary(n,m+1) & "】不能转成数值" & vbcrlf
                        End If
                    End If
                Next
                If msg > "" Then
                    msgbox(msg)
                    r = Tables("临时表").addnew
                Else
                    Tables("配载订单").addnew
                End If
               
                For  m As  Integer = 0 To nms.Length - 1
                    r(nms(m)) = ary(n,m+1)
                End If
            Next
        Next
        Tables("配载订单").ResumeRedraw()
       
    catch ex As exception
        msgbox(ex.message)
        app.quit
    End try
End If

 

 

try..........catch...........end try 在按钮事件中已经写入了 为什么还是提示 try必须跟 end try 结束


 回到顶部