以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  加载外部数据的时候如何限定记录的条数  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=77471)

--  作者:zhangchi96
--  发布时间:2015/11/18 21:29:00
--  加载外部数据的时候如何限定记录的条数
这是一个加载外部数据源中数据的代码:

Dim Filter As String
Filter = " 台帐年月 = \'201511‘  and 单位 =  ’部门1‘  "
DataTables("职工").LoadFilter = Filter \'设置加载条件
DataTables("职工").Load()

数据源中 记录有若干条,其中的【台帐年月】有三种201509、201510、201511,
                                        【单位】有两种:部门1、部门2,组合了以后就有6种,

1、请教:如何把每种【台帐年月】及每种【单位】都各加载1条记录,总共6条记录 

2、同样 从本地mdb 文件合并数据
Dim mg As New Merger
mg.SourcePath = ProjectPath &"\\Data\\职工数据库.mdb"
mg.Password = "*****"
mg.SourceTableName = "职工表"
mg.DataTableName = "职工表"
mg.Filter="台帐年月 >= \'201509\'  and 台帐年月 <= \'201511\'  "
mg.Merge()
如何把上述提到的6种情况,每种只合并一条记录过来?



[此贴子已经被作者于2015/11/18 22:05:58编辑过]

--  作者:大红袍
--  发布时间:2015/11/19 9:09:00
--  

1、参考代码

 

Dim Vals As List(of String())
Vals = DataTables("来源表").GetValues("产品|客户")
For i As Integer = 0 To Vals.Count - 1
    Dim dr As DataRow = DataTables("接收表").AddNew()
    dr("产品") = Vals(i)(0)
    dr("客户") = Vals(i)(1)
Next

 

2、先把数据合并到一张临时表,然后参考1的代码,把临时表的数据合并过去。


--  作者:zhangchi96
--  发布时间:2015/11/19 9:37:00
--  
请问:
1、第一个问题中,我的[职工]表,是外部数据,我就是为了少加载数据,节约时间的,您写的[来源表]和[接受表]中,哪个是外部数据表呢?

2、第二个问题,我也是为了少读数据,先到临时表,就去了时间了,因为我的数据可能几万条

其实,我就是有一个数据源,想到数据源读取每一种产品中每一种客户的某一列数据,如[首次订货时间],我设计的思路不一定对,如果有其他办法就更好了,我的数据源有两种,第一是在服务器上的,已经建立了数据源连接的,第二种就是在自己电脑上的mdb文件(没有建立外部数据源连接,只能用合并方法调用数据),请老师帮我设计一个最佳的方案代码。

--  作者:大红袍
--  发布时间:2015/11/19 11:11:00
--  

1、做一个查询表

 

se lect Distinct 年月,单位 from {表A}

 

然后,循环每一行,去查其余你需要的后台数据。

 

2、动态添加成数据源,然后用sql语句读取。

 

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

 

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

 

 


--  作者:zhangchi96
--  发布时间:2015/11/19 14:17:00
--  
第一个问题解决了,但代码发不上去
用的是说明书这一部分的内容:
 

3.14.4.1 自行编码合并外部数据

例如项目中有一个员工表,要从一个外部文件中合并数据到这个员工表中,希望在合并过程中检查身份证号码,如果员工表已经存在相同身份证号码的行,则跳过此行。
假定被合并的表和员工表的结构相同,代码如下:

[此贴子已经被作者于2015/11/19 14:23:55编辑过]

--  作者:大红袍
--  发布时间:2015/11/19 15:15:00
--  

sql语句,适当加入空格才能发上来的,如

 

se lect Distinct 年月,单位 from {表A}

 


--  作者:zhangchi96
--  发布时间:2015/11/19 21:53:00
--  
由于我的数据每次保存的时候都重新排序,及【排序】都存在 等于 1的情况,运行后得到需要的结果了
1、
\'------ 用加载数据的方法清空网络教职工-----
Dim Filter2 As String
Filter2 = "台帐年月 = \'201511\' And 排序 = 1 And (是否在职 = \'在职\' Or 是否在职 = \'离退\'  ) "
DataTables("网络职工").LoadFilter = Filter2    \'设置加载条件
DataTables("网络职工").Load()

2、
Dim mg As New Merger
mg.SourcePath = ProjectPath &"\\Data\\杏花教育信息数据库.mdb"    \'指定数据文件
mg.Password = "zhangruomei"
mg.SourceTableName = "职工信息表" \'指定要导入的表
mg.DataTableName = "比对表" \'导入后的表名
mg.Filter = "台帐年月 = \'201511‘  And 排序 = 1 And (是否在职 = \'在职\' Or 是否在职 = \'离退\'  ) "
mg.Merge()