Office中国论坛/Access中国论坛

标题: 数据的批量接收 [打印本页]

作者: gpgpgp    时间: 2006-7-7 02:43
标题: 数据的批量接收
前提是:在某一个文件夹中的所有数据库中的表的数量和名称都是一样的,并且当前打开的数据库与用浏览按钮找到的这个文件夹中的所有数据库中的表的数量和名称也都是一样的。

目的:想要实现的是选定list1中要接收的数据库和ist2中要接收的数据库中的那些表后,按照对应的数据库表的名称把数据批量接收到当前打开的数据库的各表中来。

再次对andymark版主这些日子帮助表示衷心的感谢!如有没有说清楚的地方,请明示,我在做补充说明。现将范例上传。[attach]18911[/attach]

作者: andymark    时间: 2006-7-7 04:31
把文件夹的mdb加载到list1

  [attach]18912[/attach]

作者: gpgpgp    时间: 2006-7-12 01:08
标题: 非常感谢andymark版主和其他老师的帮助
这些日子非常感谢andymark版主和其他老师的帮助,想完成《数据的批量接收》这项功能,已经看到了希望,现在只剩下两个问题,由于自己能力所限,恳请各位老师帮助完成。


前提:是在某一个文件夹中的所有数据库中的表的数量和名称都是一样的,并且当前打开的数据库与用浏览按钮找到的这个文件夹中的所有数据库中的表的数量和名称也都是一样的。


目的:想要实现的是选定list1中要接收的数据库和list2中要接收的数据库中的那些表后,按照对应的数据库表的名称把数据批量接收到当前打开的数据库的各表中来。





两个问题是在上传的范例里数据接收按钮要完成:


1.    删除当前数据库(就是我上传的范例数据库)中在list2里选择的(是多选)表中的所有记录。


2.    将选定list1中要接收的数据库和list2中要接收的数据库中的那些表后,按照对应的数据库表的名称把数据批量接收到当前打开的数据库的各表中来。[attach]18978[/attach]

作者: fan0217    时间: 2006-7-12 01:23
第一个问题:

Dim strTableList As String, varArray As Variant
Dim i As Integer

    strTableList = Me.List2.RowSource

    varArray = Split(strTableList, ";", -1)
   
    For i = 0 To UBound(varArray)
        DoCmd.RunSQL "Delete * from " & varArray(i) & ";"
    Next
   


[此贴子已经被作者于2006-7-11 18:01:58编辑过]


作者: fan0217    时间: 2006-7-12 01:27
第二个问题:参考:http://www.office-cn.net/forum.php?mod=viewthread&tid=19442&replyID=&skin=1
作者: andymark    时间: 2006-7-12 03:51
我想知道所谓接收的数据是替换,还是追加到当前数据库

如果是替换,可直接将当前数据库删除,直接将选定表的COPY或导入

如果是合并追加,还必须考虑数据唯一完整性的问题(即不能重复追加)
作者: gpgpgp    时间: 2006-7-12 17:55
andymark版主您好!

就是直接将当前数据库删除,直接将选定表的COPY或导入
作者: andymark    时间: 2006-7-12 23:07
在LIST1中取消了多选,我觉得把全部数据一起导进来,最终结果,也只有最后导进的数据库的数据

[attach]18991[/attach]

作者: gpgpgp    时间: 2006-7-13 18:04
andymark版主您好!

我之所以要对LIST1进行多选,就是要将选择的文件夹中的这些数据库中各表的记录连续不断的追加到当前的数据库中来,而现在只将选择的一个数据库的记录导入进来了.

目的:将选定list1中要接收的数据库和list2中要接收的数据库中的那些表后,按照对应的数据库表的名称把数据批量接收到当前打开的数据库的各表中来。

道理我知道,就是要循环增加,但代码不会写,恳请大家把最后这个问题帮助解决.

[此贴子已经被作者于2006-7-13 10:06:39编辑过]


作者: andymark    时间: 2006-7-13 20:10
追加前把数据库清空,然后按选定的数据库 选定的表追加到当前数据库指定的表[attach]19008[/attach]

作者: gpgpgp    时间: 2006-7-13 23:31
andymark版主大恩不言谢了.来论坛短短的几天,获得的帮助实在是太多了,由于基础原因,泉涌之恩,无法点滴回报,但向您一样论坛里的许多精英们已经走进了我们这些普通人的生活,把感动留在了人间.

问题总的来说已经解决了,但有两个问题想进一步请教一下:

1.通过text8、list1、list2已经获得要导入数据库的表,为什么还要用strSqlstring = "INSERT INTO 数据 ( 编号, A, B, C, D, E, F )SELECT 数据.编号, 数据.A, 数据.B, 数据.C, 数据.D, 数据.E, 数据.F FROM " & strDbName这样的语句来实现,如果以后在应用时,表的字段发生变化,还要重新修改,这样通用性就降低了,这个问题能否再帮助完善一下。

2.list1、list2的多重选择的属性里,选择“简单”和“展开的”有什么区别。
作者: andymark    时间: 2006-7-14 00:45
1.因为你是想把所有数据库都追加到一个表中,追加好像不支持*号的,必须写具体的字段名称,如果字段改变也必须重新修改代码 ,可以把strSqlstring 字符串的内容保存到表中,从表中调用也行

2.简单多项选择 : 单击或按 SPACEBAR 键选定列表中的附加项目,或撤消对附加项目所作的选定

  扩充的多项选择: 可用 SHIFT+ 单击或 SHIFT+ 箭头键选定从上一个选定项到当前的选项之间的所有选项。CTRL+ 单击将选定(或撤消选定)列表中的项目。
作者: gpgpgp    时间: 2006-7-14 01:19
andymark版主您好您能否帮助做一个范例,我想学习一下如何把strSqlstring 字符串的内容保存到表中,然后再从表中调用的。
作者: andymark    时间: 2006-7-14 05:44
在表中保存字符串再调用

[attach]19015[/attach]

作者: gpgpgp    时间: 2006-7-14 19:47
恩师您好!让您费心了。这些日子让我重新理解了什么是论坛,遇到像您这样的一些老师,真正体会到了“学高为师、德高为范”的道理。这次您帮助我解决了工作中分机录入的问题,由于自己计算机知识的欠缺,没有你们的帮助是无法解决这样的难题。感恩的心,感谢有你。最后祝愿恩师开心、快乐,平安、健康!
作者: andymark    时间: 2006-7-14 19:55
不用客气,帮助别人也在提高自已,温故而知新
作者: fengday    时间: 2006-9-4 06:01
太慢了
作者: fengday    时间: 2006-9-4 06:32
我也想学习这个方法。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3