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过程中确实改变了的值用颜色表示出来。
让别人一眼就能看出,哪些个单元格是更新了的