以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  导入判断  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=29091)

--  作者:lxh
--  发布时间:2013/2/27 13:37:00
--  导入判断

新手求解:有两个表,一个是物料基础信息表,一个是产成品入库汇总表,其中产成品入库汇总表通过窗口导入按钮导入数据时,要求导入的是‘物料基础信息表’中已存在的‘物料编号’和‘物料名称’才可以导入,作了三个按钮进行测试,求代码:

                   1:导入前判断按钮:物料基础信息表中存在的才可以导入,不存在的不能导入,查阅了帮助,无相关案例,是否可以做得到?求代码?

                    2:导入EXCEL数据:能不能通过datacolchanging事件触发的时候,判断并提示‘此物料编号’在‘物料基础信息表’不存在,不能导入,目前用的是merge,并无相关判断功能,求代码?

                   若第一点和第二点都没有办法,退而求次之,用第三点

                   3:导入后检查按钮: 先无条件合并,然后再删除‘物料基础信息表’中不存在的相应物料编号的行或数据,求代码

请高手指点,真诚地谢谢!谢谢!

               

      

 

       

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

[此贴子已经被作者于2013-2-27 13:38:56编辑过]

--  作者:狐狸爸爸
--  发布时间:2013/2/27 14:05:00
--  

编码合并excel文件,这样就可以进行条件判断:

http://www.foxtable.com/help/topics/2334.htm

 

例如:

Dim Book As New XLS.Book("c:\\test\\订单.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("订单").StopRedraw()
Dim nms() As String = {"产品","客户","雇员","单价","折扣","数量","日期"}
For n As Integer = 1 To Sheet.Rows.Count -1
    If DataTables("订单").Find("产品 = \'" & Sheet(r,0).Value & "\'") IsNot Nothing Then
        Dim r As Row = Tables("订单").AddNew()
        For m As Integer = 0 To nms.Length - 1
            r(nms(m)) = Sheet(n,m).Value
        Next
    End If
Next
Tables("订单").ResumeRedraw()


--  作者:lxh
--  发布时间:2013/2/27 15:21:00
--  

 提示出错

 


图片点击可在新窗口打开查看此主题相关图片如下:捕获1.jpg
图片点击可在新窗口打开查看

--  作者:狐狸爸爸
--  发布时间:2013/2/27 15:33:00
--  
Dim Book As New XLS.Book("c:\\test\\订单.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("订单").StopRedraw()
Dim nms() As String = {"产品","客户","雇员","单价","折扣","数量","日期"}
For n As Integer = 1 To Sheet.Rows.Count -1
    If DataTables("订单").Find("产品 = \'" & Sheet(n,0).Value & "\'") IsNot Nothing Then
        Dim r As Row = Tables("订单").AddNew()
        For m As Integer = 0 To nms.Length - 1
            r(nms(m)) = Sheet(n,m).Value
        Next
    End If
Next
Tables("订单").ResumeRedraw()

--  作者:lxh
--  发布时间:2013/2/27 16:03:00
--  

这是最好的办法吗?还有没有其它可解决的办法?


--  作者:don
--  发布时间:2013/2/27 16:04:00
--  
Merger即可:

Dim Bm,flt As String
flt = DataTables("物料基础信息表").GetComboListString("物料编号","","物料编号")
flt =  "物料编号 In (\'" & flt.Replace("|","\',\'") & "\')"     \'物料编号存在于物料基础信息表的
Bm = "要合并Excel的表名" & "$"

Dim mg As New Merger
mg.SourcePath = "D:\\Text.xls"
mg.Format = "excel" \'指定格式
mg.SourceTableName = Bm   \'指定要合并的表
mg.DataTableName = "产成品入库汇总表"     \'指定接收数据的表
mg.Filter = flt \'指定合并条件
mg.Merge() \'开始合
[此贴子已经被作者于2013-2-27 16:06:52编辑过]

--  作者:lxh
--  发布时间:2013/2/27 16:21:00
--  

呵呵,六楼的方法可行,谢谢

 


--  作者:lxh
--  发布时间:2013/2/27 16:30:00
--  
再请教六楼,希望合并时出现一个打开文件对话框(就是不指定绝对路径),自由选择指定的文件,应当如何修改,谢谢
--  作者:don
--  发布时间:2013/2/27 16:37:00
--  
帮助中有,在帮助文件中搜索[ 常用对话框 ]
--  作者:狐狸爸爸
--  发布时间:2013/2/27 16:52:00
--  

看看这里的示例二:

 

http://www.foxtable.com/help/topics/0685.htm