设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 3656|回复: 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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2009-1-27 10:26:44 | 只看该作者
Recordset的第i个字段,从0至总字段数-1
3#
发表于 2009-1-27 11:16:01 | 只看该作者
Recordset的第i+1个字段的值
4#
发表于 2009-1-27 11:36:12 | 只看该作者
请问6D版主:j = IIf(Me!chkFirstCol, 1, 0) 中的Me!chkFirstCol是检查第一列是否自动编号字段的函数过程,还是窗体上的一个控件?刚搜到并下载了该实例,原来是一个单选框。

[ 本帖最后由 koutx 于 2009-1-27 11:49 编辑 ]
5#
 楼主| 发表于 2009-1-27 12:17:40 | 只看该作者
十分多谢两位的热心指教!我查F1帮助,Fields好像没有在后面加括号的用法的,不知我的理解对否?另,"通用数据导入"例子在应用时有点意思,当往其导出的表增加了新数据后再导入时会提示出错有重复数据,但其临时表又能将新数据导入,不知是我理解不好还是上述语句不完善,请大家指教。
6#
发表于 2009-1-27 12:24:45 | 只看该作者
j = IIf(Me!chkFirstCol, 1, 0)
如果Me!chkFirstCol=true ,那么j=1,否则=0
7#
 楼主| 发表于 2009-1-27 12:32:03 | 只看该作者
十分多谢版主!从 For i = j To old_rs.Fields.Count - 1这句来看,3楼所说的“Recordset的第i+1个字段的值”是i+1还是i-1呢?
8#
发表于 2009-1-27 12:39:34 | 只看该作者
当i=0 时,是第一个字段
当i=1时,是第二个字段,以此类推,当然是i+1
9#
 楼主| 发表于 2009-1-27 13:15:43 | 只看该作者
多谢指教!可我还是不明白,真有点糊涂、混淆了,个人觉得2楼的还易理解。既然是i+1,哪么,For i = j To old_rs.Fields.Count - 1这句又如何理解呢?
10#
发表于 2009-1-27 13:25:42 | 只看该作者
For i = j To old_rs.Fields.Count - 1
这样是用来循环的,i是循环的计数器。比如for i=0 to 2,那么就是循环三次。

.Fields(i)
第一次循环,就是
.Fields(0)代表的是记录集的第一字段值,

第二次循环,就是
.Fields(1)代表的是记录集的第二字段值,

第三次循环,就是
.Fields(2)代表的是记录集的第三字段值,

从中可以看出,
当i=0时,代表的是记录集的第一字段值
当i=1时,代表的是记录集的第二字段值
当i=2时,代表的是记录集的第三字段值
那么就是说.Fields(i)代表的是记录集的第i+1字段值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-13 20:33 , Processed in 0.097427 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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