设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1417|回复: 3
打印 上一主题 下一主题

[ADO/DAO] 求救:ADO Fields 比较 判断是否相同

[复制链接]
跳转到指定楼层
1#
发表于 2009-5-12 16:14:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 mpc-long 于 2009-5-12 17:46 编辑

两个表,表1和表2,两个表的格式和记录的笔数完全一样,只是同一条记录的某些字段的字可能不一样。
我的想法是用两个Recordset,然后将每一条记录的每个字段比较,不同的话就在输出的EXCEL文档中对应单元格中弄成黄色背景,相同的就原样输出
部分代码如下:

Dim Conn As New ADODB.Connection
Dim Rec As New ADODB.Recordset
Dim Rec2 As New ADODB.Recordset
Dim strSQL As String
Dim strSQL2 As String
strSQL = "SELECT * FROM 表1 "
strSQL2 = "SELECT * FROM 表2 "
Rec.Open strSQL, Conn, adOpenStatic, adLockOptimistic
Rec2.Open strSQL2, Conn, adOpenStatic, adLockOptimistic

Do While Not Rec.EOF
For n = 0 To Rec.Fields.count - 1
    .Cells(i + j, n + 1) = Rec.Fields(n)      
    If (Rec.Fields(n) <> (Rec2.Fields(n)) Then  ' 问题就是这句,去掉这句就没问题 ,但是去掉这句又不能实现判断
      xlApp.ActiveSheet.Cells(i + j, n + 1).Interior.ColorIndex = 6
    end if
next
i=i+1
Rec.movenext
Rec2.movenext
Loop

.......
.......
错误是:Item cannot be found in the collection corresponding to the requested name or ordinal
不知道是不是因为我的某些字段是空的原因呢?
如果是的话,怎么解决呢?
急啊,先在此多谢了~~~~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2009-5-12 17:04:41 | 只看该作者
没有明白具体是如何比较?
3#
 楼主| 发表于 2009-5-12 17:27:58 | 只看该作者
因为我需要输出表1,但是在输出的时候呢,要让有变动过的字段在excel中用颜色标示出来。
所以我在update之前,将表1全部复制到表2,然后在update完成之后,对每一条记录的每一个字段比较。
因为是复制过去的,所以关键字都一样嘛,
对于一条相同关键字的记录,假如某一个字段在表1中和表2中不一样,就说明是在update的时候改变过。
对应的就是  If (Rec.Fields(n) <> (Rec2.Fields(n)) Then  ‘其中n代表第几个栏位
不知道我这样说有没有解释清楚!
4#
 楼主| 发表于 2009-5-12 17:33:08 | 只看该作者
或者有其他实现思路或者办法?
就是在完成一个update查询之后将表1导出到excel,
但是要对在刚才update过程中确实改变了的值用颜色表示出来。
让别人一眼就能看出,哪些个单元格是更新了的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-13 00:47 , Processed in 0.093648 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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