设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 3709|回复: 20
打印 上一主题 下一主题

[ADO/DAO] ADO语句

[复制链接]
跳转到指定楼层
1#
发表于 2009-1-27 10:14:03 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我在本站下载了"通用数据导入"例子学习,其导入代码如下:
    1、Dim i As Integer
   2、 Dim j As Integer
   3、 Dim lngRecCount As Long
    4、Dim old_rs As ADODB.Recordset
    5、Dim old_sql As String
    6、Dim new_rs As New ADODB.Recordset
    7、Dim new_sql As String
    8、j = IIf(Me!chkFirstCol, 1, 0)    '第一列是否为自动编号
    9、old_sql = "Select  * From " & strCurTable 'strCurTable见fill_subForm()函数
    10、Set old_rs = CurrentProject.Connection.Execute(old_sql)
    11、new_sql = "Select  * From " & strMBTable
    12、new_rs.Open new_sql, CurrentProject.Connection, 1, 3     While Not old_rs.EOF
        13、new_rs.AddNew
      14、  For i = j To old_rs.Fields.Count - 1
        15、    new_rs.Fields(i) = old_rs.Fields(i)
       16、 Next i
       17、 old_rs.MoveNext
       18、 new_rs.Update
    19、Wend
   20、 new_rs.Close
   21、 Set new_rs = Nothing
    22、old_rs.Close
    23、Set old_rs = Nothing
    24、DoCmd.Close acForm, Me.Name
   25、 Exit Sub
其中,第15句的“Fields(i)”的用法不理解,我也查F1帮助,请问,究竟“Fields(i)”表示什么意思?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
21#
 楼主| 发表于 2009-1-30 23:18:59 | 只看该作者
我想了想,不知追加数据且能自动去除重复值用19楼所说的recordset.addnew直接赋值能实现吗?如能,有例子吗?
20#
 楼主| 发表于 2009-1-30 17:07:56 | 只看该作者
谢谢楼上的朋友!
19#
发表于 2009-1-30 16:53:16 | 只看该作者
用SQL做insert,生成这个SQL语句太繁琐,不如直接用recordset.addnew方便。直接赋值。不需要做特殊处理。

http://www.office-cn.net/vvb/att ... arY2lHG%2FJbcmZNhpQ ADO手册





*****************
*  一切皆有可能 *
*****************


QQ群48866293 / 12035577 / 7440532 / 13666209
http://forum.csdn.net/SList/Access .
http://www.accessbbs.cn/bbs/index.php .
http://www.accessoft.com/bbs/index.asp .
http://www.office-cn.net .

http://www.office-cn.net/home/space.php?uid=141646 .
18#
 楼主| 发表于 2009-1-30 16:47:55 | 只看该作者
看来,追加还是用SQL好
17#
发表于 2009-1-30 15:39:03 | 只看该作者
学习中。
16#
 楼主| 发表于 2009-1-28 09:47:22 | 只看该作者
万分多谢6D及KOUTX的执手指教!我又增长了VBA知识,向你们这些高手学习!
15#
发表于 2009-1-28 07:30:48 | 只看该作者
3、导入时会提示出错,在一楼的代码中是否还不完善?
表设计中,编号为自动编号,姓名有索引(无重复)
当您导入同样的编号和姓名时当然会出错。
如果,将导入方式更改为替换旧数据则不会产生此错误。
14#
发表于 2009-1-27 19:47:19 | 只看该作者
一、因为ADO的Recordset中的字段与源表一一对应,并且第一个字段的id号是0,第二个是  1,所以最后一个是.fFields.Count-1。
二、13、new_rs.AddNew     该语句在new_rs中追加了一空行
     在以下的循环体中逐字段将old_rs各字段的值赋给了new_rs对应字段
      18、 new_rs.Update     该语句将new_rs的字段值变化更新到临时表
三、导入时提示出错。因尚未用过,不敢妄评。

[ 本帖最后由 koutx 于 2009-1-27 19:49 编辑 ]
13#
 楼主| 发表于 2009-1-27 18:15:52 | 只看该作者
十二万分多谢6D的执手指教!我明白了,For i = j To old_rs.Fields.Count - 1是取得字段数,而Fields(i)就是取得记录集的字段值。重新看了一下例子,还是有三方面问题请教:
1、为什么用For i = j To old_rs.Fields.Count - 1取得字段数要减去一的?
2、在一楼的代码中,没有用于追加的SQL语句,但运行后也能将数据追加到临时表的?
3、导入时会提示出错,在一楼的代码中是否还不完善?
盼指教

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-29 01:58 , Processed in 0.110884 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表