Office中国论坛/Access中国论坛

标题: ACCESS如何使用ADO读取Sql Server数据存放到表里 [打印本页]

作者: 打字比你快    时间: 2017-6-17 17:13
标题: ACCESS如何使用ADO读取Sql Server数据存放到表里
请教,ACCESS如何使用ADO读取Sql Server数据库表里的记录放到本地ACCESS表里?sql数据库名:ca  
sql数据表名:dbo.a
ACCESS表名:SQL表
dbo.a字段与SQL表字段一致如下3个字段名称:
id,name,gender
下面的操作只能把dbo.a里的第一条记录重复写入“SQL表”里,都是相同记录,数据记录指针没有往下走。
如果能一次性从dbo.a里写入所有记录到sql表里也可以。

-Dim cnn As New ADODB.Connection, rs As New ADODB.Recordset
-Dim rs1 As New ADODB.Recordset
-Dim i As Long
-cnn = "Provider=SQLOLEDB;Persist Security Info=true;Data Source=127.0.0.1;User -ID=sa;Password=123456;Initial Catalog=ca"
-cnn.Open
-rs.CursorLocation = adUseClient
-rs.Open "dbo.a", cnn, adOpenKeyset, adLockOptimistic
-For i = 1 To rs.RecordCount
-rs1.Open "SQL表", CurrentProject.Connection, adopenkeyest, adLockOptimistic
-rs1.AddNew
- rs1("id") = rs(0)
- rs1("name") = rs(1)
- rs1("gender") = rs(2)
-rs1.Update
-rs1.MoveNext
-rs1.Close
-Set rs1 = Nothing
-Next i
-rs.Close
-Set rs = Nothing






作者: access新新新手    时间: 2017-6-17 17:20
可以用代码链接SQL Server表,然后把链接表数据写入access的表里面,再把链接表删除。
作者: fan0217    时间: 2017-6-17 17:36
rs1.Add
作者: tmtony    时间: 2017-6-17 17:48
fans版主已告诉你了。
-rs1.AddNew
改为 rs1.add 即可以了

要先理解了代码才能改代码哦
作者: 打字比你快    时间: 2017-6-17 18:07
tmtony 发表于 2017-6-17 17:48
fans版主已告诉你了。
-rs1.AddNew
改为 rs1.add 即可以了

你好,tmtony
改了后提示:方法和数据成员未找到

作者: fan0217    时间: 2017-6-17 21:35
打字比你快 发表于 2017-6-17 18:07
你好,tmtony
改了后提示:方法和数据成员未找到

rs1.AddNew
作者: roych    时间: 2017-6-17 21:36
没毛病。[attach]61613[/attach]
不过我还是建议把打开记录集放在for循环的外面。

作者: 打字比你快    时间: 2017-6-17 21:40
fan0217 发表于 2017-6-17 21:35
rs1.AddNew

原代码就是:rs1.AddNew  ,但这样使用后,只能得到dbo.a表里的第一条数据且这条数据都是重复的写入ACCESS的“SQL表”里,正确的应该是不同记录。
作者: roych    时间: 2017-6-17 21:43
打字比你快 发表于 2017-6-17 21:40
原代码就是:rs1.AddNew  ,但这样使用后,只能得到dbo.a表里的第一条数据且这条数据都是重复的写入ACCES ...

没搞懂rs1.MoveNext是什么意思。
我觉得,应该是rs.MoveNext
作者: 打字比你快    时间: 2017-6-17 21:55
roych 发表于 2017-6-17 21:43
没搞懂rs1.MoveNext是什么意思。
我觉得,应该是rs.MoveNext

是的,应该是rs.MoveNext,多谢了。。
作者: tmtony    时间: 2017-6-19 10:11
-For i = 1 To rs.RecordCount
-rs1.Open "SQL表", CurrentProject.Connection, adopenkeyest, adLockOptimistic
-rs1.AddNew
- rs1("id") = rs(0)
- rs1("name") = rs(1)
- rs1("gender") = rs(2)
-rs1.Update
-rs1.MoveNext
-rs1.Close

写错,应该是rs.movenext 这个才是移动原数据啊
作者: tmtony    时间: 2017-6-19 10:12
roych 发表于 2017-6-17 21:43
没搞懂rs1.MoveNext是什么意思。
我觉得,应该是rs.MoveNext

原来R大师 已经帮你 已经复了。




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