Office中国论坛/Access中国论坛

标题: 求救:ADO Fields 比较 判断是否相同 [打印本页]

作者: mpc-long    时间: 2009-5-12 16:14
标题: 求救:ADO Fields 比较 判断是否相同
本帖最后由 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
不知道是不是因为我的某些字段是空的原因呢?
如果是的话,怎么解决呢?
急啊,先在此多谢了~~~~
作者: Henry D. Sy    时间: 2009-5-12 17:04
没有明白具体是如何比较?
作者: mpc-long    时间: 2009-5-12 17:27
因为我需要输出表1,但是在输出的时候呢,要让有变动过的字段在excel中用颜色标示出来。
所以我在update之前,将表1全部复制到表2,然后在update完成之后,对每一条记录的每一个字段比较。
因为是复制过去的,所以关键字都一样嘛,
对于一条相同关键字的记录,假如某一个字段在表1中和表2中不一样,就说明是在update的时候改变过。
对应的就是  If (Rec.Fields(n) <> (Rec2.Fields(n)) Then  ‘其中n代表第几个栏位
不知道我这样说有没有解释清楚!
作者: mpc-long    时间: 2009-5-12 17:33
或者有其他实现思路或者办法?
就是在完成一个update查询之后将表1导出到excel,
但是要对在刚才update过程中确实改变了的值用颜色表示出来。
让别人一眼就能看出,哪些个单元格是更新了的




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