以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于导入代码问题?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=88948)

--  作者:zch1104
--  发布时间:2016/8/12 10:33:00
--  关于导入代码问题?

 

导入代码:

Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
dlg.Filter= "excel文件|*.xls" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim mg As New Merger
    mg.SourcePath = dlg.FileName
    mg.Format = "excel" \'指定格式
    mg.SourceTableName = "入库明细$" \'指定要合并的表
    mg.DataTableName = "入库明细" \'指定接收数据的表
    mg.Merge() \'开始合并
End If

 

求帮助看看代码有问题吗?用自己会的几种方法都测试了好几次,还解决不了总是提示如下:

 

.NET Framework 版本:2.0.50727.3643
Foxtable 版本:2016.6.26.1
错误所在事件:表,入库明细,DataColChanged
详细错误信息:
调用的目标发生了异常。
索引和长度必须引用该字符串内的位置。
参数名: length

 

.NET Framework 版本:2.0.50727.3643
Foxtable 版本:2016.6.26.1
错误所在事件:表,入库明细,DataColChanged
详细错误信息:
调用的目标发生了异常。
未将对象引用设置到对象的实例。

 

 

我也试了把文件里可能影响长度的文字给删除了,但是导入还是不成功。还有就是用Foxtable一出现问题,易死机这是为什么?注:win8系统刚转换的XP系统、高配。



--  作者:2900819580
--  发布时间:2016/8/12 10:53:00
--  
测试没有问题。。。。。
--  作者:大红袍
--  发布时间:2016/8/12 11:04:00
--  

你的 DataColChanged 事件有代码影响了。

 

 贴出你事件代码。


--  作者:zch1104
--  发布时间:2016/8/12 12:14:00
--  

这是这个表的所有DataColChanged 事件有代码,设计到到导入,所以导入的数据就出现了问题?

 

If e.DataCol.Name = "产品编号" Then
    If e.NewValue Is Nothing Then
        e.DataRow("产品名称") = Nothing
        e.DataRow("规格型号") = Nothing
        e.DataRow("分类") = Nothing
        e.DataRow("单位") = Nothing
        e.DataRow("产地") = Nothing
        e.DataRow("注册证号") = Nothing
        e.DataRow("单价元") = Nothing
        e.DataRow("入库批号") = Nothing
        e.DataRow("有效期") = Nothing
    Else
        Dim dr As DataRow
        dr = DataTables("入库明细").Find("[产品编号] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing
            e.DataRow("产品名称")= dr("产品名称")
            e.DataRow("规格型号") = dr("规格型号")
            e.DataRow("单位") = dr("单位")
            e.DataRow("分类") = dr("分类")
            e.DataRow("产地") = dr("产地")
            e.DataRow("注册证号") = dr("注册证号")
            e.DataRow("单价元") = dr("单价元")
e.DataRow("入库批号") = Nothing
        e.DataRow("有效期") = Nothing

        End If
    End If
End If


Select Case e.DataCol.Name
    Case "入库批号"
        Dim s As String = CStr(e.NewValue)
        Dim d As Date =new Date(s.SubString(0,4),s.SubString(4,2),s.SubString(6,2))
        d = d.AddYears(1).AddDays(-1)
        e.DataRow("有效期") = Format(d,"yyyyMMdd")
End Select


If e.DataCol.Name = "单价元" OrElse e.DataCol.Name = "数量" Then
    e.DataRow("金额元") = e.DataRow("单价元") * e.DataRow("数量")
End If


--  作者:zch1104
--  发布时间:2016/8/12 12:14:00
--  

还有以下代码是什么意思

 

       Dim cpbh As WinForm.ComboBox = e.Form.Controls("产品编号")
 cpbh.combolist=DataTables("入库明细").GetComboListString("产品编号")

 

 

 

                                  谢谢


--  作者:zch1104
--  发布时间:2016/8/12 12:21:00
--  

        问题一:导入?

 

         问题二:Dim cpbh As WinForm.ComboBox = e.Form.Controls("产品编号")
 cpbh.combolist=DataTables("入库明细").GetComboListString("产品编号")     ????

 

         问题三:复制    Syscmd.Edit.Copy()       粘贴   Syscmd.Edit.Paste()     如图  输入代码执行不了?为什么?

 

 

 


--  作者:zch1104
--  发布时间:2016/8/12 12:21:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:截图01.png
图片点击可在新窗口打开查看

--  作者:大红袍
--  发布时间:2016/8/12 14:34:00
--  

If e.DataCol.Name = "产品编号" Then
    If e.NewValue = Nothing Then
        e.DataRow("产品名称") = Nothing
        e.DataRow("规格型号") = Nothing
        e.DataRow("分类") = Nothing
        e.DataRow("单位") = Nothing
        e.DataRow("产地") = Nothing
        e.DataRow("注册证号") = Nothing
        e.DataRow("单价元") = Nothing
        e.DataRow("入库批号") = Nothing
        e.DataRow("有效期") = Nothing
    Else
        Dim dr As DataRow
        dr = DataTables("入库明细").Find("[产品编号] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing
            e.DataRow("产品名称")= dr("产品名称")
            e.DataRow("规格型号") = dr("规格型号")
            e.DataRow("单位") = dr("单位")
            e.DataRow("分类") = dr("分类")
            e.DataRow("产地") = dr("产地")
            e.DataRow("注册证号") = dr("注册证号")
            e.DataRow("单价元") = dr("单价元")
            e.DataRow("入库批号") = Nothing
            e.DataRow("有效期") = Nothing
           
        End If
    End If
End If


Select Case e.DataCol.Name
    Case "入库批号"
        if e.newValue <> Nothing AndAlso e.newvalue.Length >= 8 then
            Dim s As String = CStr(e.NewValue)
            Dim d As Date =new Date(s.SubString(0,4),s.SubString(4,2),s.SubString(6,2))
            d = d.AddYears(1).AddDays(-1)
            e.DataRow("有效期") = Format(d,"yyyyMMdd")
        end if
End Select


If e.DataCol.Name = "单价元" OrElse e.DataCol.Name = "数量" Then
    e.DataRow("金额元") = e.DataRow("单价元") * e.DataRow("数量")
End If


--  作者:zch1104
--  发布时间:2016/8/12 15:31:00
--  
复制    Syscmd.Edit.Copy()       粘贴   Syscmd.Edit.Paste()     如图  输入代码执行不了?为什么?
--  作者:大红袍
--  发布时间:2016/8/12 15:40:00
--  

复制

 

Tables("表a").Focus
Sendkeys.Send("^C")

 

粘贴

 

Tables("表a").Focus
Sendkeys.Send("^V")