用
do until rs.eof
.........
rs.movenext
loop
do until rs.eof
.........
rs.movenext
loop
解决方案 »
- 关于MSHFlexGrid的ScrollBars的问题
- 关于VB的多重循环与时间控件的结合使用问题?
- 如何声明和调用这个API函数?解决了还给加分!!!!很急!!!
- 大家好,有来求救了。我在VB时,在运行父窗体时,会打开所有的子窗体,有没有一种方法,可以让子窗体不打开呢?
- 请教各位大侠,关于最短路径问题
- 导入文本文件时,可以取得文本文件的行数吗?
- 3年未解决的问题!!VB加载ACTIVESKIN皮肤后,其他VB控件不显示!!
- 我怎么定制DataGrid控件每个列的长度啊!
- 如何将编号0001、0003中自动添加0002
- 怎么检测软件更新?
- 如果不知道一个软件的源码及接口,能否在这个软件的基础上编写软件呢?
- 希望懂vb的朋友进来!关于判断数据库中的数据是否相等的问题!!!!就有点急!!
do while not rsdes.eof
For i = 0 To rs.Fields.Count - 1
If Not IsNull(rs(rs(i).Name)) Then
rsdes(rs(i).Name) = Trim(rs(rs(i).Name))
Else
rsdes(rs(i).Name) = Null
End If
Next
rsdes.Update
rsdes.movenext
loop
Dim i As Integer
Set rs = New ADODB.Recordset
Set rsdes = New ADODB.Recordset
strsource = "select * from info "
rs.Open strsource, cn, adOpenkeyset, adLockOptimistic
rsdes.Open strsource, cndes, adOpenkeyset, adLockOptimistic
If rsdes.RecordCount = 0 Then rsdes.AddNew
do until rsdes.eof
For i = 0 To rs.Fields.Count - 1
If Not IsNull(rs(rs(i).Name)) Then
rsdes(rs(i).Name) = Trim(rs(rs(i).Name))
Else
rsdes(rs(i).Name) = Null
End If
Next
rsdes.Update
rsdes.movenext
loop
if rsdes.eof=true then Then rsdes.AddNew
If Not IsNull(rs(rs(i).Name)) Then
rsdes(rs(i).Name) = Trim(rs(rs(i).Name))
Else
rsdes(rs(i).Name) = Null
End If
rsdes.Update
rsdes.movenext
rs.movenext
Next
出现错误:Either bof or eof is true,or the current recorder has been delted requested operation requaires a current record
对了。我的rsdes里面时空的。没有纪录。但是字段都有!!!!急!!!!
Dim i As Integer
Set rs = New ADODB.Recordset
Set rsdes = New ADODB.Recordset
strsource = "select * from info "
rs.Open strsource, cn, adOpenDynamic, adLockOptimistic
rsdes.Open strsource, cndes, adOpenDynamic, adLockOptimisti
For i = 0 To rs.Fields.Count - 1
rsdes.AddNew
If Not IsNull(rs(rs(i).Name)) Then
rsdes(rs(i).Name) = Trim(rs(rs(i).Name))
Else
rsdes(rs(i).Name) = Null
End If
rsdes.Update
rs.movenext
Next 这样行不行?
Dim strsource As String
Dim i As Integer
Set rs = New ADODB.Recordset
Set rsdes = New ADODB.Recordset
strsource = "select * from info "
rs.Open strsource, cn, adOpenkeyset, adLockOptimistic
rsdes.Open strsource, cndes, adOpenkeyset, adLockOptimistic
If rsdes.RecordCount = 0 Then rsdes.AddNew
do until rs.eof
For i = 0 To rs.Fields.Count - 1
If Not IsNull(rs(rs(i).Name)) Then
rsdes(rs(i).Name) = Trim(rs(rs(i).Name))
Else
rsdes(rs(i).Name) = Null
End If
Next
rsdes.Update
rs.movenext
rsdes.AddNewloop
Dim i As Integer
Dim rs As New ADODB.Recordset
Dim rsdes As New ADODB.Recordset
strsource = "select * from info "
rs.Open strsource, cn, adOpenDynamic, adLockOptimistic
rsdes.Open strsource, cndes, adOpenDynamic, adLockOptimisti
With rs
Do While Not .EOF
For i = 0 To rs.Fields.Count - 1
rsdes(rs(i).Name) = IIf(IsNull(rs(rs(i).Name).Value), Null, Trim(rs(rs(i).Name).Value))
Next i
Loop
.MoveNext
End With
!
你的程序很间洁,不怕人家看不懂?还有,你漏了rsdes.addnew rsdes.update
你怎么把movenext放到循环外面了?这不是死循环?
to lzy5042(老山)
你两个表的结构完全一样吗?
Dim i As Integer
dim j as long
Set rs = New ADODB.Recordset
Set rsdes = New ADODB.Recordset
strsource = "select * from info "
rs.Open strsource, cn, adOpenDynamic, adLockOptimistic
rsdes.Open strsource, cndes, adOpenDynamic, adLockOptimisti
If rsdes.RecordCount = 0 Then rsdes.AddNew
for j = 0 to rsdes.recordcount-1
For i = 0 To rs.Fields.Count - 1
If Not IsNull(rs(rs(i).Name)) Then
rsdes(rs(i).Name) = Trim(rs(rs(i).Name))
Else
rsdes(rs(i).Name) = Null
End If
Next i
rsdes.Update
rsddes.movenext
next j
Dim i As Integer
Set rs = New ADODB.Recordset
Set rsdes = New ADODB.Recordset
strsource = "select * from info "
rs.Open strsource, cn, adOpenDynamic, adLockOptimistic
rsdes.Open strsource, cndes, adOpenDynamic, adLockOptimisti
If rsdes.RecordCount = 0 Then
For i = 0 To rs.Fields.Count - 1
If Not IsNull(rs(rs(i).Name)) Then
rsdes.addnew
rsdes(rs(i).Name) = Trim(rs(rs(i).Name))
Else
rsdes(rs(i).Name) = Null
End If
rsdes.update
NextADDNEW和UPDATE的位置放的不对!!
Dim strsource As String
Dim i As Integer
Set rs = New ADODB.Recordset
Set rsdes = New ADODB.Recordset
strsource = "select * from info "
rs.Open strsource, cn, adOpenDynamic, adLockOptimistic
rsdes.Open strsource, cndes, adOpenDynamic, adLockOptimisti
while rs.EOF=false
rsdes.AddNew
For i = 0 To rs.Fields.Count - 1
If Not IsNull(rs(rs(i).Name)) Then
rsdes(rs(i).Name) = Trim(rs(rs(i).Name))
Else
rsdes(rs(i).Name) = Null
End If
next i
rsdes.Update
rs.movenext
wend
With rs
Do While Not .EOF
rsdes.Addnew
For i = 0 To rs.Fields.Count - 1
rsdes(rs(i).Name).value = IIf(IsNull(rs(rs(i).Name).Value), Null, Trim(rs(rs(i).Name).Value))
Next i
rsdes.Update
Loop
.MoveNext
End With
With rs
Do While Not .EOF
rsdes.AddNew
For i = 0 To .Fields.Count - 1
rsdes(i).Value = IIf(IsNull(rs(i).Value), Null, Trim(rs(i).Value))
Next i
rsdes.Update
Loop
.MoveNext
End With
With rs
Do While Not .EOF
rsdes.AddNew
For i = 0 To .Fields.Count - 1
rsdes(i).Value = IIf(IsNull(rs(i).Value), Null, Trim(rs(i).Value))
Next i
rsdes.Update
.MoveNext
Loop
End With
Dim StrSource As String
Dim Rs As ADODB.Recordset
Dim I As Long
Set Rs = New ADODB.Recordset
StrSource = "select * from info "
'=====================
'注意打开方式为,静态、成批
Rs.Open StrSource, cn, adOpenStatic, adLockBatchOptimistic
'=====================
If Rs.RecordCount > 0 Then
Rs.MoveFirst
Do While Rs.EOF = False
For I = 0 To Rs.Fields.Count - 1
If Not IsNull(Rs.Fields(I).Value) Then '判断是否为NULL
If TypeName(Rs.Fields(I).Value) = "String" Then '判断字段是否为String型
Rs.Fields(I).Value = Trim(Rs.Fields(I).Value)
End If
End If
Next I
Rs.MoveNext '移向下一条记录
Loop
Rs.UpdateBatch adAffectAllChapters '一次性成批修改记录集
End If
Dim strsource As String
Dim i As Integer
Set rs = New ADODB.Recordset
Set rsdes = New ADODB.Recordset
strsource = "select * from info "
rs.Open strsource, cn, adOpenDynamic, adLockOptimistic
rsdes.Open strsource, cndes, adOpenDynamic, adLockOptimistic
do while not rs.eof
rsdes.addnew
For i = 0 To rs.Fields.Count - 1
If Not IsNull(rs(rs(i).Name)) Then
rsdes(rs(i).Name) = Trim(rs(rs(i).Name))
Else
rsdes(rs(i).Name) = Null
End If
Next
rsdes.Update
rs.movenext
loop
rsdes(rs(i).Name) = Trim(rs(rs(i).Name))
Else
rsdes(rs(i).Name) = Null
End 一句 rsdes(rs(i).Name) = Trim(rs(rs(i).Name)) 不就够了?
For i = 0 To rs.Fields.Count - 1 ... 分明就是有问题!
如果想要全部更新,最快的方法是采用批次更新。即在Recordset打開的時候,指明為批次鎖定的方法。
Rs.Cursor=adUseClient 'ADO enginer Cursor 為客戶端,否則無法用批次。
Rs.Open StrSource, cn, adOpenStatic, adLockBatchOptimistic 這樣做的好處是,Recordset取回資料後,可以斷開與DataBase的連線,節省寶貴的Connection.
Set Rs.ActiveConnection=Nothing 然後,如果需要更新DataBase里的資料的時候,再連上Connection,Update即可。
Set Rs.ActiveConnection=Cn
Rs.UpdateBatch
千萬不可以在循環里寫上 rs.Update,因為這樣每循環一次,ADO都要與DataBase進行一次會話,這樣會大大影響你程式的效能。