ERRO 3167 SOLUCAO CRIATIVA

USUARIO.EXCLUIDOS 10/04/2004 01:48:59
#19725
Gostaria de agradecer as pessoas que me ajudaram na resolução deste problema, vou demonstrar o problema e a solução encontrada, espero que ajude mais programadores, vamos lá


O problema

if rs_db("nome") = form2.txt_variavel.text then
while not eof rs_clientes
rs_clientes.delete
rs_clientes.movenext
loop
end if

Este código retornava o erro 3167, devido que estava tentado mover o recordset , só que ja hávia sido deletado

A solução

Foi justamente criar um método que depois que o recordset fosse deletado , ele chamasse de novo o recordset, e assim pensei em fazer ele procurar de novo o record set , e a solução ficou

Dim contador As Long
Dim libera As String

contador = 0


inicio:
rs_colaboradores.Seek "=", Form2.txt_nome.Text

If rs_colaboradores.NoMatch Then
contador = contador
libera = "sim"
Else
rs_colaboradores.Delete
contador = contador + 1
libera = "nao"
End If

If libera = "nao" Then GoTo inicio:


MsgBox ("Existiam " & contador & "contribuições cadastradas para " & Form2.txt_nome.Text)

Vou ficando por aqui, mas notem que com este tipo de rotina é possível inclusive contar quantos recordset s foram deletados.
Valeu galera


USUARIO.EXCLUIDOS 10/04/2004 02:17:21
#19731
Resposta escolhida
Com o ADO, no método Execute, você pode apanhar o número de registros processados na mesma linha, poupando código. Por exemplo:
...
oCN.Execute "DELETE * FROM PENDENTES WHERE QUITADO = True;", nVAR
Msgbox "Foram eliminadas " & nVAR & " pendências." , vbOkOnly + vbInformation
...
Tópico encerrado , respostas não são mais permitidas