Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

请教一下各位,我有800个结构完全相同的ACCESS文件,求教VBA代码来合并………………

张素禄  发表于:2016-02-01 20:51:58  
复制

Private Sub 啊啊啊()
Dim str As String
str = "INSERT INTO 啊(1) SELECT * FROM"
For i = 2 To 5
str = str + "啊" + CStr(i)
If i <> 5 Then
str = str + ","
End If
Next

End Sub

这是我找的一个代码,编译没有错误,但是不能得到结果。。。。求教啊

 

Top
朱先生 发表于:2016-02-01 23:22:45

终于完成了框架

N个都行

关键是啊1、啊2、啊3。。。。。。的循环变量

一个循环,一句代码即解决

用好   啊(I)  就解决了



朱先生 发表于:2016-02-02 08:40:02

在哪找的一段代码啊!这样的代码怎么运行?

Private Sub 啊啊啊()
Dim str As String            这一行可要可不要
str = "INSERT INTO 啊(1) SELECT * FROM"    这个赋值语句错误。啊(1)后面需要有字段名。这一行直接放在第四行也行。代码可读性好
For i = 2 To 5                    这一句不可少
str = str + "啊" + CStr(i)         这是赋值语句,看起来象是追加数据的语句,缺少命令关键词,严重错误。 “啊”+    CSTR(I)引用错误。
If i <> 5 Then    多余语句
str = str + ","     多余语句
End If                多余语句
Next                 这一句不可少
End Sub

这样的代码实在是没用,将第二行放在第四行,就是“一个循环,一句代码”解决问题。



张素禄 发表于:2016-02-02 10:43:53
求教~我一个ACCESS文件中有3个不同的表格,N个结构相同的数据库要合并的代码~编程小白求代码~

张素禄 发表于:2016-02-02 11:50:01
Sub 合并()
Dim str1 As String
Dim str2 As String
Dim str3 As String
str1 = "INSERT INTOselect * into 居民出行调查个人表from [" & (1) & "].居民出行调查个人表"
str2 = "INSERT INTOselect * into 居民出行调查个人出行表from [" & (1) & "].居民出行调查个人出行表"
str3 = "INSERT INTOselect * into 居民出行调查家庭表from [" & (1) & "].居民出行调查家庭表"
For i = 2 To 5
   str1 = str1 + "INSERT INTOselect * into 居民出行调查个人表from [" & (i) & "].居民出行调查个人表"
   str2 = str2 + "INSERT INTOselect * into 居民出行调查个人出行表from [" & (i) & "].居民出行调查个人出行表"
   str3 = str3 + "INSERT INTOselect * into 居民出行调查家庭表from [" & (i) & "].居民出行调查家庭表"
    Next i
End Sub
我现在把5个数据库命名为(1)、(2)、(3)、(4)、(5);每个数据库里均有居民出行调查个人表、居民出行调查个人出行表、居民出行调查家庭表这三张表,以我的水平就只能编到上面这几行代码了。。。求教800个这样的数据库合并代码。。。。跪谢


朱先生 发表于:2016-02-02 12:44:23
三个不同的表格中有和N个结构相同的字段吗?

 三个不同的表格中只要存在和N个结构相同的字段就可以合并,否则会出现输入参数的提示,按确定也可以用空格合并,就是比较麻烦



朱先生 发表于:2016-02-02 14:00:26

FOR I=1 TO 800
docmd.runsql   "INSERT INTO    居民出行调查个人表 (姓名)SELECT *  from  " & (" 表" & I) & ""
NEXT

其中  表  指表1、 表2.......、表800

如果上面的代码能通过就行,实在是

不知表的结构,不知如何更改,如果居民出行调查个人表的结构与800表不同,就要指明字段

居民出行调查个人表就要分别列出字段名(如姓名,性别.....),后面的  * 也要和前面一样列出字段名

在不泄密的情况下,传部分资料来,居民出行调查个人表只要有1~2条记录、800个表只需一个就行,可以复制为若干个的,其中记录也只要1~2条,但要2003格式

你上面的代码运行了吗?????估计是能编译,不运行,因为都是赋值,编译不会出问题的



张素禄 发表于:2016-02-02 14:23:21

点击下载此附件

您看一下。。我就是想要把这800个数据库里的3种表格分别合并,最后得到一个总的数据库,里面仍然有三张表



朱先生 发表于:2016-02-02 15:41:25
是要把三张表合起来吗???

张素禄 发表于:2016-02-02 16:11:43
不是把三张表合起来啊,是把800个ACCESS里的表1合成一个表,表2合成一个表,表3也合成一个表,最后形成一个数据库,里面只有三张表

朱先生 发表于:2016-02-02 20:42:06
张素禄 发表于:2016-02-02 21:23:25
是啊。。然后出行表和家庭表也可以这样是吧

偶是一颗菠菜 发表于:2016-02-02 21:29:11
看了半天 没看懂 你在說啥。。。  首先 你现在3个表 然后看到3个表里各有若干条记录 一直看你在說合并 合并的。。。你是要合并啥。。。 然后哪来800个记录。。。你3个表 60 111 25 这就是你的记录数。。。。

朱先生 发表于:2016-02-02 23:06:56

是的



张素禄 发表于:2016-02-03 13:29:56
朱先生~你是在ACCESS里面复制的个人表吧!那我如果是不同的ACCESS里面的个人表怎么导到同一个ACCESS里面形成一个个人表总表啊

朱先生 发表于:2016-02-03 13:59:15

DoCmd.RunSQL "insert into [;database=D:\a3.Mdb].个人表总表 select * from [;database=D:\a4.Mdb].个人表"

DoCmd.RunSQL "insert into [;database=D:\a3.Mdb].个人表总表 select * from [;database=D:\a5.Mdb].个人表"

D: 路径名 视需要而改变 A3.MDB 是个人表总表所在的数据库 A4.MDB、A5MDB是指个人表所在的数据库

 



张素禄 发表于:2016-02-03 17:42:56
Sub 合并()
DoCmd.SetWarnings False
i = 2


For i = 2 To 5


DoCmd.RunSQL "INSERT INTO " & (database="C:\Users\Administrator\Desktop\新建文件夹(4)\(1).mdb").居民出行调查个人表 & " (个人编码,表格编码,个人编号,户籍,与户主关系,性别,年龄,职业,文化程度,有无驾照,车辆类型,车辆性质,车龄,排量,总里程,平均里程,出行月份,出行日期)
                SELECT 个人编码,表格编码,个人编号,户籍,与户主关系,性别,年龄,职业,文化程度,有无驾照,车辆类型,车辆性质,车龄,排量,总里程,平均里程,出行月份,出行日期
                FROM " & (database="C:\Users\Administrator\Desktop\新建文件夹(4)\( & i).mdb").居民出行调查个人表 & " ";


Next
DoCmd.SetWarnings True


MsgBox "ok", vbOKOnly, "提示"


  End Sub

。。。我要疯了编译语法错误,您看看哪里有错啊(我是在一个新建的空白ACCESS里运行的这段代码,要合并的数据库是(1)、(2)、(3)、(4)、(5),名字都带括号,)



朱先生 发表于:2016-02-04 09:38:48
DoCmd.RunSQL "insert into [;database=C:\Users\acer\Desktop\888\a.Mdb].个人表总表 (个人编码) select * from [;database=C:\Users\acer\Desktop\888\" & ("A" & I) & ".Mdb].个人表  "
改一下路径,数据库重新命名为A、A1、A2、A3、A4、A5 试吧,用(1)、(2)......命名数据库的实在不多见

张素禄 发表于:2016-02-04 11:35:06
代码可以运行,但是得不到合并结果。。是不是还要加一些打开ACCESS文件的代码啊

总记录:18篇  页次:1/1 9 1 :