以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]从字符串“”到类型“Single”的转换无效。 这个怎么办  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=135030)

--  作者:hrlong
--  发布时间:2019/5/15 14:41:00
--  [求助]从字符串“”到类型“Single”的转换无效。 这个怎么办

.NET Framework 版本:2.0.50727.9031
Foxtable 版本:2018.10.9.1
错误所在事件:
详细错误信息:
从字符串“”到类型“Single”的转换无效。
输入字符串的格式不正确。
-----------------------------------------------------------------------------------------------------------------
从系统下载了2个订单表,开始是可以的,但是后来下的就报错,对比了表格也没发现哪里有问题,麻烦帮我看下


--------------------------------------------------------------------------------------------------------------------------------
导入 代码如下:
--------------------------------------------------------------------------------------------------------------------------------
Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim mg As New Merger
    mg.SourcePath = dlg.FileName
    mg.Format = "excel" \'指定格式
    mg.SourceTableName = "报表1$"
    mg.DataTableName = "订单临时表"
    mg.FieldMaps.Add("旺旺/昵称","客户ID")
    mg.FieldMaps.Add("系统订单号","系统单号")
    mg.Merge()
    DataTables("订单临时表").DataCols("系统单号").RaiseDataColChanged()
End If
Dim Cols1() As String = {"系统单号","平台订单号","付款时间","发货时间","实付金额","订单金额","商品净重","实收运费"}
Dim Cols2() As String = {"系统单号","订单号","付款时间","发货时间","实付总金额","订单总金额","商品总重","运费"}
For Each dr1 As DataRow In DataTables("订单临时表").Select("[订单金额] > 1")
    Dim dr2 As DataRow = DataTables("订单临时表汇总").AddNew()
    For i As Integer = 0 To Cols1.Length -1
        dr2(Cols2(i)) = dr1(Cols1(i))
    Next
Next
Syscmd.Project.Save()

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:正常的.xlsx

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:出错的.xlsx

--  作者:有点甜
--  发布时间:2019/5/15 16:48:00
--  

1、把这个代码删除后测试

 

DataTables("订单临时表").DataCols("系统单号").RaiseDataColChanged()

 

2、把这个代码删除后测试

 

dr2(Cols2(i)) = dr1(Cols1(i))

 


--  作者:hrlong
--  发布时间:2019/5/31 15:31:00
--  
Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim mg As New Merger
    mg.SourcePath = dlg.FileName
    mg.Format = "excel" \'指定格式
    mg.SourceTableName = "报表1$"
    mg.DataTableName = "订单临时表"
    mg.FieldMaps.Add("旺旺/昵称","客户ID")
    mg.FieldMaps.Add("系统订单号","系统单号")
    mg.Merge()
End If


============================================================================
已经删的只有这个导入的代码了,但是还是提醒这个报错;

下面的是原文件

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:订单.xlsx



--  作者:有点甜
--  发布时间:2019/5/31 17:34:00
--  

 

测试了一下,代码没问题。应该是你datacolchanged事件有问题导致的。

 

 


--  作者:hrlong
--  发布时间:2019/6/3 11:53:00
--  
我已经把datacolchanged的代码都去掉了,而且 新建了 个 项目  ,只加了导入的代码,还是发生了这个错误
麻烦帮我看下  是哪里有问题;


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:导入测试2.foxdb


--  作者:有点甜
--  发布时间:2019/6/3 13:01:00
--  

算是bug吧。换一种方式导入,如

 

Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog =DialogResult.OK Then
    Dim t As Table = Tables("订单")
    t.StopRedraw()
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim r As DataRow = Nothing \' t.DataTable.Find("第一列 = \'" & sheet(n, 0).text & "\'")
        If r Is Nothing Then r = t.DataTable.AddNew()
        For i As Integer = 0 To sheet.Cols.Count -1
            Dim cname As String = sheet(0, i).text
            If cname = "旺旺/昵称" Then
                r("客户id") = sheet(n, i).Text
            End If
            If t.Cols.Contains(cname) Then
                r(cname) = sheet(n, i).Text
            End If
        Next
    Next
    t.ResumeRedraw()
End If


--  作者:kylin
--  发布时间:2019/6/3 14:51:00
--  
最近有点懒去翻找和测试逐行逐个写入数据的,恰好甜版写了样板,多谢了!直接拷贝小改,呵呵