希望懂vb的朋友进来!关于判断数据库中的数据是否相等的问题!!!!就有点急!!

lzy5042 2001-08-22 04:39:34
Public Function cmpdata(rsSource As ADODB.Recordset, rsdes1 As ADODB.Recordset) As Boolean
Dim strsource As String
Dim strdes As String
Dim i As Integer
Dim flag As Boolean
Dim check() As Boolean
ReDim check(rsSource.Fields.Count - 1) As Boolean
For i = 0 To rsSource.Fields.Count - 1
If Not IsNull(rsSource(rsSource(i).Name)) And Not IsNull(rsdes1(rsSource(i).Name)) Then
If rsSource(rsSource(i).Name) <> rsdes1(rsSource(i).Name) Then
check(i) = True
Else
check(i) = False
End If
Else
check(i) = True
End If
Next
For i = 0 To rsSource.Fields.Count - 1
flag = check(i)
Next
cmpdata = flag
End Function
这些代码无法正确判断出两个数据库的数据是否一致。两个数据库的表都是一样的
...全文
140 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
emhb 2001-08-22
  • 打赏
  • 举报
回复
分有什么用,如果是要分,我早就第一名了!申请两个自己加给自己!
emhb 2001-08-22
  • 打赏
  • 举报
回复
不错嘛!很认真也很细心,像个程序员!

是不是每个程序员的心都比女孩子还要细哦? 有点女性化了!
emhb 2001-08-22
  • 打赏
  • 举报
回复
你只是对一条记录的各个字段进行比较了,程序的思路有很大的问题!

Public Function cmpdata(rsSource As ADODB.Recordset, rsdes1 As ADODB.Recordset) As Boolean
Dim i As Integer

'//如果两个记录集的记录条数不相同,直接返回false值。
if rsSource.recordcount<> rsdes1.recordcount then
cmpdata=false
exit function
end if
'//如果没有记录,那就返回true值
if rsSource.recordcount =0 then
cmpdata=true
exit function
end if

rsSource.movefirst
rsDes1.movefirst

'//每条记录逐一比较
while not rsSource.eof
'//该记录的每一个字段逐一比较, 只要一个字段的值不同就为false值
For i = 0 To rsSource.Fields.Count -1
If rsSource.fields(i) <> rsdes1.fields(i) Then
cmpdata=false
exit function
end if
Next i
rsSource.movenext
rsDes1.movenext
你只是对一条记录的各个字段进行比较了,程序的思路有很大的问题!

Public Function cmpdata(rsSource As ADODB.Recordset, rsdes1 As ADODB.Recordset) As Boolean
Dim i As Integer

'//如果两个记录集的记录条数不相同,直接返回false值。
if rsSource.recordcount<> rsdes1.recordcount then
cmpdata=false
exit function
end if
'//如果没有记录,那就返回true值
if rsSource.recordcount =0 then
cmpdata=true
exit function
end if

rsSource.movefirst
rsDes1.movefirst

'//每条记录逐一比较
while not rsSource.eof
'//该记录的每一个字段逐一比较, 只要一个字段的值不同就为false值
For i = 0 To rsSource.Fields.Count -1
If rsSource.fields(i) <> rsdes1.fields(i) Then
cmpdata=false
exit function
end if
Next i
rsSource.movenext
rsDes1.movenext
' ra=ra + 1 //忘了删除!
wend
cmpdata = true
End Function

wend
cmpdata = true
End Function
lzy5042 2001-08-22
  • 打赏
  • 举报
回复
楼上的:rs=rs+1 是什么意思??
lzy5042 2001-08-22
  • 打赏
  • 举报
回复
谢谢 emhb(兵子) :分已经加玩了。明天你来拿分
emhb 2001-08-22
  • 打赏
  • 举报
回复
你只是对一条记录的各个字段进行比较了,程序的思路有很大的问题!

Public Function cmpdata(rsSource As ADODB.Recordset, rsdes1 As ADODB.Recordset) As Boolean
Dim i As Integer

'//如果两个记录集的记录条数不相同,直接返回false值。
if rsSource.recordcount<> rsdes1.recordcount then
cmpdata=false
exit function
end if
'//如果没有记录,那就返回true值
if rsSource.recordcount =0 then
cmpdata=true
exit function
end if

rsSource.movefirst
rsDes1.movefirst

'//每条记录逐一比较
while not rsSource.eof
'//该记录的每一个字段逐一比较, 只要一个字段的值不同就为false值
For i = 0 To rsSource.Fields.Count -1
If rsSource.fields(i) <> rsdes1.fields(i) Then
cmpdata=false
exit function
end if
Next i
rsSource.movenext
rsDes1.movenext
ra=ra + 1
wend
cmpdata = true
End Function


lzy5042 2001-08-22
  • 打赏
  • 举报
回复
谢谢大家!!我没什么说得了!给分!!!我在想想办法!!
songyangk 2001-08-22
  • 打赏
  • 举报
回复
用不用发到我的邮箱里我帮你改一下??
mmzxg 2001-08-22
  • 打赏
  • 举报
回复
应该不是死机吧,是不是显示程序没有响应呢。当执行大的数据库查询时会出现这样的问题的啦。

你的数据库有多大呢。。。。
lzy5042 2001-08-22
  • 打赏
  • 举报
回复
这样做还是不行。我把数据库的数据都改了。两个数据库中表的数据完全不一样。可是还是
弹出表示数据相等的对话框
ozw 2001-08-22
  • 打赏
  • 举报
回复
你这个方法不是很好,如果一定要这样做,可以这样,没必要定义那么多变量
Public Function CmpData(rsSource As ADODB.Recordset, RsDes1 As ADODB.Recordset) As Boolean
Dim i As Integer

With rsSource
Do While Not .EOF
For i = 0 To rsSource.Fields.Count - 1
If (Not IsNull(rsSource(i).Value)) And (Not IsNull(RsDes1(i).Value)) Then
If rsSource(i).Value <> RsDes1(i).Value Then
CmpData = False '有一条记录不同就可以断定不一样了
Exit Function
End If
Else
check(i) = True
End If
Next
RsDes1.MoveNext
.MoveNext
Loop
End With
CmpData = True
End Function

songyangk 2001-08-22
  • 打赏
  • 举报
回复
不可能呀,除非你的循环控制的不对.
for i =1 to rssource.recordcount


rssource.movenext
next i
lzy5042 2001-08-22
  • 打赏
  • 举报
回复
循环就死机了
songyangk 2001-08-22
  • 打赏
  • 举报
回复
大哥,为什么你每次都不进行记录集的循环呢?????
lzy5042 2001-08-22
  • 打赏
  • 举报
回复
来吧!!!

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧