-- 作者:sf020cf
-- 发布时间:2015/12/21 11:44:00
-- test运算符后缺少操作数
导入数据时报错 test运算符后缺少操作数 用的是外部数据源 数据源名称是test 数据源连接正常 高速合并没问题 导入的代码是:
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号","城市","客户","送货地址","物料代码","数量","体积","重量","承运商","司机","车牌","车数","车型","出车日期","车辆属性","备注","特殊要求","跟车搬运"} Dim count As Integer = 0 Dim ls As new List(of Integer) Dim dic As new Dictionary (Of DataRow, Integer) For n As Integer = 2 To ws.UsedRange.Rows.Count Dim filter As String = "1=1" For m As Integer = 0 To nms.length-1 Dim vl As object = ary(n,m+1) Dim dc As String = nms(m) Dim c As Col = Tables("订单").Cols(dc) If vl = Nothing Then filter &= " and " & dc & " is null" Else If c.IsNumeric Then filter &= " and " & dc & " >= " & vl - 0.0001 & " and " & dc & " <= " & vl + 0.0001 ElseIf c.IsBoolean Then If vl = True Then filter &= " And " & dc & " = true" Else filter &= " and " & dc & " = false" End If ElseIf c.IsDate Then Dim d As Date If Date.TryParse(vl, d) filter &= " and " & dc & " = #" & d.Date & "#" End If Else filter &= " and " & dc & " = \'" & vl & "\'" End If End If Next Dim dr As DataRow = DataTables("订单").find(filter) If dr Is Nothing Then output.show(filter) ls.Add(n) count += 1 Else dic.add(dr, n) End If Next For Each n As Integer In ls Dim r As Row = Tables("订单").AddNew() For m As Integer = 0 To nms.Length - 1 If ary(n,m+1) = Nothing Then r(nms(m)) = Nothing Else 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 End If Next Next Tables("订单").ResumeRedraw() msgbox("共有 "& count &" 条数据导入" ) catch ex As exception msgbox(ex.message) finally app.quit End try End If
Tables("订单").save
|
-- 作者:大红袍
-- 发布时间:2015/12/21 11:51:00
--
试试
Dim vl As object = ary(n,m+1)
改成
Dim vl As object = ary(n,m+1)
vl = cstr(vl).replace("\'", "\'\'")
-----------不行,就用下面的方法
加入代码
msgbox(n & " " & filter)
Dim dr As DataRow = DataTables("订单").find(filter)
运行看运行到哪一条出错
|