Public Sub crystal_init() '对水晶报表进行初始化Call check_condatabase
Dim rs_rpt As ADODB.Recordset
Dim rs_feiyong As ADODB.Recordset
Set rs_rpt = New ADODB.Recordset
Set rs_feiyong = New ADODB.Recordsetrs_rpt.Open "select * from feiyong_rpt", cn, adOpenStatic, adLockPessimistic
rs_feiyong.Open "select * from feiyong", cn, adOpenStatic, adLockPessimisticIf rs_rpt.BOF <> True Then '这地方已经判断rs_rpt.Open为是否为true
If rs_feiyong.BOF <> True Then rs_feiyong.MoveFirst
Do Until rs_feiyong.EOF
If rs_rpt.EOF <> True Then
For i = 0 To 7
rs_rpt.Fields(i).Value = rs_feiyong.Fields(i).Value
Next
Else
rs_rpt.AddNew
For i = 0 To 7
rs_rpt.Fields(i).Value = rs_feiyong.Fields(i).Value
Next
End If
rs_rpt.Update
rs_rpt.MoveNext
rs_feiyong.MoveNext
Loop
Else
If rs_rpt.BOF <> True Then rs_rpt.MoveLast ‘而这地方还判断一次重复的,不是不这地方有错误!!!!
If rs_feiyong.BOF <> True Then rs_feiyong.MoveFirst
Do Until rs_feiyong.EOF
rs_rpt.AddNew
For i = 0 To 7
rs_rpt.Fields(i).Value = rs_feiyong.Fields(i).Value
Next
rs_rpt.Update
rs_rpt.MoveNext
rs_feiyong.MoveNext
Loop
Exit Sub
End IfIf rs_rpt.EOF <> True Then
Do Until rs_rpt.EOF
rs_rpt.Delete
rs_rpt.MoveNext
Loop
End If
Dim rs_rpt As ADODB.Recordset
Dim rs_feiyong As ADODB.Recordset
Set rs_rpt = New ADODB.Recordset
Set rs_feiyong = New ADODB.Recordsetrs_rpt.Open "select * from feiyong_rpt", cn, adOpenStatic, adLockPessimistic
rs_feiyong.Open "select * from feiyong", cn, adOpenStatic, adLockPessimisticIf rs_rpt.BOF <> True Then '这地方已经判断rs_rpt.Open为是否为true
If rs_feiyong.BOF <> True Then rs_feiyong.MoveFirst
Do Until rs_feiyong.EOF
If rs_rpt.EOF <> True Then
For i = 0 To 7
rs_rpt.Fields(i).Value = rs_feiyong.Fields(i).Value
Next
Else
rs_rpt.AddNew
For i = 0 To 7
rs_rpt.Fields(i).Value = rs_feiyong.Fields(i).Value
Next
End If
rs_rpt.Update
rs_rpt.MoveNext
rs_feiyong.MoveNext
Loop
Else
If rs_rpt.BOF <> True Then rs_rpt.MoveLast ‘而这地方还判断一次重复的,不是不这地方有错误!!!!
If rs_feiyong.BOF <> True Then rs_feiyong.MoveFirst
Do Until rs_feiyong.EOF
rs_rpt.AddNew
For i = 0 To 7
rs_rpt.Fields(i).Value = rs_feiyong.Fields(i).Value
Next
rs_rpt.Update
rs_rpt.MoveNext
rs_feiyong.MoveNext
Loop
Exit Sub
End IfIf rs_rpt.EOF <> True Then
Do Until rs_rpt.EOF
rs_rpt.Delete
rs_rpt.MoveNext
Loop
End If
Dim rs_rpt As ADODB.Recordset
Dim rs_feiyong As ADODB.Recordset
Set rs_rpt = New ADODB.Recordset
Set rs_feiyong = New ADODB.Recordset
rs_rpt.Open "select * from feiyong_rpt", cn, adOpenStatic, adLockPessimistic
rs_feiyong.Open "select * from feiyong", cn, adOpenStatic, adLockPessimistic
If rs_rpt.BOF <> True Then '这地方已经判断rs_rpt.Open为是否为true
If rs_feiyong.BOF <> True Then rs_feiyong.MoveFirst
Do Until rs_feiyong.EOF
If rs_rpt.EOF <> True Then
For i = 0 To 7
rs_rpt.Fields(i).Value = rs_feiyong.Fields(i).Value
Next
Else
rs_rpt.AddNew
For i = 0 To 7
rs_rpt.Fields(i).Value = rs_feiyong.Fields(i).Value
Next
End If
rs_rpt.Update
rs_rpt.MoveNext
rs_feiyong.MoveNext
Loop
Else
If rs_rpt.BOF <> True Then rs_rpt.MoveLast '而这地方还判断一次重复的,不是不这地方有错误!!!!
If rs_feiyong.BOF <> True Then rs_feiyong.MoveFirst
Do Until rs_feiyong.EOF
rs_rpt.AddNew
For i = 0 To 7
rs_rpt.Fields(i).Value = rs_feiyong.Fields(i).Value
Next
rs_rpt.Update
rs_rpt.MoveNext
rs_feiyong.MoveNext
Loop
Exit Sub
End If
If rs_rpt.EOF <> True Then
Do Until rs_rpt.EOF
rs_rpt.Delete
rs_rpt.MoveNext
Loop
End If
If rs_rpt.BOF <> True Then rs_rpt.MoveLast '而这地方还判断一次重复的,不是不这地方有错误!!!!
**********************************
这里不可能 rs_rpt.BOF <> True
的确有冗余语句,但不影响逻辑。我一般这样写:Call check_condatabase
Dim rs_rpt As ADODB.Recordset
Dim rs_feiyong As ADODB.Recordset
Set rs_rpt = New ADODB.Recordset
Set rs_feiyong = New ADODB.Recordsetcn.Execute "DELETE FROM feiyong_rpt"
cn.Execute "INSERT INTO feiyong_rpt SELECT fieldname0, fieldname1, fieldname2, fieldname3, fieldname4, fieldname5, fieldname6, fieldname7 FROM feiyong"rs_rpt.Open "select * from feiyong_rpt", cn, adOpenStatic, adLockPessimistic
rs_feiyong.Open "select * from feiyong", cn, adOpenStatic, adLockPessimistic
Do Until rs_rpt.EOF
rs_rpt.Delete
rs_rpt.MoveNext
Loop
这地方什么意思不明白,刚把数据拷贝到位rs_rpt,为什么这个语句把数据又都删除了?
If rs_rpt.EOF <> True Then '如果数据集rs_rpt不是最后则
Do Until rs_rpt.EOF '循环到rs_rpt的最后一条
rs_rpt.Delete '删除当前游标所在位置的数据
rs_rpt.MoveNext '游标下移
Loop