以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]从excel表手动导入的空值问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=90811) |
||||
-- 作者:pladic -- 发布时间:2016/9/22 9:21:00 -- [求助]从excel表手动导入的空值问题 从excel表手动导入table execel表中一列为字符型,当该列的单元格值为空时,导入table的对应列属性为字符型,错误提示为: 从字符中“”列类型“Double”的转换无效 我加入判断代码,不为空时才赋值 IF sheet(n,m).value isnot nothing r("列名")=sheet(n,m) endif 但是,报错依旧。 |
||||
-- 作者:有点蓝 -- 发布时间:2016/9/22 9:29:00 -- 贴出完整代码和上传Excel文件测试 |
||||
-- 作者:pladic -- 发布时间:2016/9/22 10:23:00 -- 回复:(有点蓝)贴出完整代码和上传Excel文件测试 Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog dlg.Filter= "Excel文件|*.xls;*.xlsx" \'设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 \' MessageBox.Show("你选择的文档为:" & dlg.FileName,"提示") \' Dim ip As New Importer Dim Book As New XLS.Book(dlg.FileName) Dim Sheet As XLS.Sheet = Book.Sheets(0) Dim zong As Integer=sheet.Rows.count-1 MessageBox.Show("你的文档有效行数为:" & zong,"提示") \'Tables("订户信息表").StopRedraw() \'Tables("订款信息表").StopRedraw() \'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致 \'Dim nms() As String = { "编号","产品","客户","雇员","单价","折扣","数量","日期" } \'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题 For n As Integer = 2 To Sheet.Rows.Count -1 Dim r As Row = Tables("订户信息表").AddNew() For m As Integer = 0 To 19 \'nms.Length - 1 Select Case m Case 0 r("发行员") = Sheet(n,m).Value \'Dim lb As String = e.DataRow("发行员") \'If e.DataRow("订户编号").StartsWith(lb) = False \'如果单据编号前缀不符 \'Dim max As String \'Dim idx As Integer \'max = e.DataTable.Compute("Max(订户编号)","发行员 = \'" & lb & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号 \'If max > "" Then \'如果存在最大编号 \'idx = CInt(max.Substring(lb.length+1)) + 1 \'获得最大编号的后三位顺序号,并加1 \'Else \'idx = 1 \'否则顺序号等于1 \'End If \'e.DataRow("订户编号") = lb & "-" & Format(idx,"00000") \'End If \' Case 1 r("一级") = Sheet(n,m).Value Case 2 r("二级") = Sheet(n,m).Value Case 3 r("三级") = Sheet(n,m).Value Case 4 r("单位") = Sheet(n,m).Value Case 5 r("收刊人") = Sheet(n,m).Value Case 6 r("地址") = Sheet(n,m).Value Case 7 r("邮编") = Sheet(n,m).Value Case 8 r("份数") = Sheet(n,m).Value Case 9 r("获得方式") = Sheet(n,m).Value \'Case 10 \'r("金额") = Sheet(n,m).Value \'Case 11 \'r("到款日期") = Sheet(n,m).Value Case 12 r("电话") = Sheet(n,m).Value Case 13 r("备注") = Sheet(n,m).Value Case 14 r("组织征订") = Sheet(n,m).Value Case 15 If sheet(n,m).value=1 r("发刊标识") = False Else r("发刊标识") = True End If Case 16 If sheet(n,m).value IsNot Nothing r("应发期数") = sheet(n,m).value Else r("应发期数") = "" End If \'Case 17 \'r("汇款方式") = Sheet(n,m).Value \'Case 18 \'r("汇票号码") = Sheet(n,m).Value End Select Dim result As String Output.Show(Result) Next Forms("批量数据入库").controls("label1").text=n & "/" & zong application.Doevents() Next Tables("订户信息表").ResumeRedraw() Tables("订款信息表").ResumeRedraw() End If
|
||||
-- 作者:pladic -- 发布时间:2016/9/22 10:24:00 -- 怎么传附件? 同题 |
||||
-- 作者:pladic -- 发布时间:2016/9/22 10:27:00 -- 回复:(有点蓝)贴出完整代码和上传Excel文件测试 \'Dim lb As String = e.DataRow("发行员") \'If e.DataRow("订户编号").StartsWith(lb) = False \'如果单据编号前缀不符 \'Dim max As String \'Dim idx As Integer \'max = e.DataTable.Compute("Max(订户编号)","发行员 = \'" & lb & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号 \'If max > "" Then \'如果存在最大编号 \'idx = CInt(max.Substring(lb.length+1)) + 1 \'获得最大编号的后三位顺序号,并加1 \'Else \'idx = 1 \'否则顺序号等于1 \'End If \'e.DataRow("订户编号") = lb & "-" & Format(idx,"00000") \'End If 另外,这段代码是表事件datacolchanged中的代码 复制到BUTTON里后,e.datarow就报错了。 请教
|
||||
-- 作者:有点蓝 -- 发布时间:2016/9/22 10:33:00 -- Dim lb As String = tables(某表).current("发行员") 上传项目和Excel文件测试 |
||||
-- 作者:pladic -- 发布时间:2016/9/22 10:49:00 -- [求助][贴图]回复:(有点蓝)Dim lb As String = tables(某表).cu... 我是用360浏览器,不显示“上传文件”这一栏。 |
||||
-- 作者:pladic -- 发布时间:2016/9/22 10:51:00 -- 这里可以
|
||||
-- 作者:有点蓝 -- 发布时间:2016/9/22 10:58:00 -- 狐表中 ("应发期数")是什么列类型? |
||||
-- 作者:pladic -- 发布时间:2016/9/22 11:06:00 -- \'Tables("订户信息表").StopRedraw() \'Tables("订款信息表").StopRedraw() 如果单元格的值分别赋给这两个表,如何写订款信息表的赋值代码?
|