有两个表 info 和inftotemp两表的结构完全相同,
info 表中有记录但是其中的成绩字段为空, 想把infotemp中的成绩字段的值一一对应的写入到info 表中,注意:infoetmp表中的记录顺序和info 的记录顺序可能不同。
我用下面的函数来实现:
但是有点小错误,如果两个表中考号(唯一索引)顺序不相同时,成绩采集不完全。望指正:
Public Sub insoure()
Dim rstemp1 As ADODB.Recordset '临时表记录集合
Dim rs1 As ADODB.Recordset '信息表正式集合
Dim totalin1
Dim j
Dim temps1
Dim isin1 '用于表识是否存在重复数据
totalin1 = 0
tatall2 = 0
Set rstemp1 = New ADODB.Recordset
rstemp1.Open "infotemp", CurrentProject.Connection, adOpenDynamic, adLockOptimistic, adCmdTableDirect
Set rs1 = New ADODB.Recordset
rs1.Open "info", CurrentProject.Connection, adOpenDynamic, adLockOptimistic, adCmdTableDirect
'If Not rs.BOF And Not rs.EOF Then
'rs.MoveLast
Do While Not rstemp1.EOF
temps1 = rstemp1("考号")
allnum1 = DCount("*", "info")
'If Not rs1.BOF And rs1.EOF Then
Do While Not rs1.EOF
'检测数据的冗余程度
'If Not rs1.BOF And Not rs1.EOF Then
'rs1.MoveFirst
'rs1.MoveLast
'For i = 1 To allnum1 '只检测条以内的记录
'If Not rs1.BOF Then
inwhat = rs1("考号")
If temps1 = inwhat Then
'存在重复记录时则跳过添加记录这一项目
'MsgBox "该数据已录入,请检查已输入的记录!", vbOKOnly + vbInformation, "提示"
'isin1 = 1 '说明记录存在 对该字段的名称进行修改....查看效果怎么样
rs1!成绩 = rstemp1("成绩")
rs1.Update
totalin1 = totalin1 + 1
'rs1.MovePrevious
rs1.MoveFirst
Exit Do
Else
'rs1.MovePrevious
rs1.MoveNext
'isin1 = 0
End If
'End If
Loop
'End If
tatall2 = tatall2 + 1
rstemp1.MoveNext
Loop
MsgBox "本次采集共输入数据" & totalin1 & "条" & tatall2, , "系统提示"
Set rs1 = Nothing
Set rstemp1 = Nothing
End Sub
[此贴子已经被作者于2006-7-30 21:24:00编辑过]
|