ERRO 3426 !?!

USUARIO.EXCLUIDOS 09/03/2005 15:09:10
#71945
Galera, o que pode estar errado para ocorrer o erro 3426: This action was cancelled by an associated object ?. Entendi que a ação foi cancelada por um objeto associado, mas não estou conseguindo achar onde está o problema. Acontece quando faço o seguinte processo, clico no botão "incluir" e ao desistir da inclusão, clico em "cancelar" e o cadastro volta para o primeiro registro, ao clicar em algum botão de navegação, "primeiro","anterior","próximo" ou "ultimo" (Lv_navega), então ocorre o erro mencionado. Os códigos estão abaixo.

Valeu,

Mark

--------------------------------------------------------------------------------------------------
Private Sub Form_Load()
'-----------------------------------------------------------'
LblUsuario = "Usuário: " & xUsuario

CmbSistema.Clear
CmbSistema.AddItem ("SISTEMA 1")
CmbSistema.AddItem ("SISTEMA 2")
CmbSistema.AddItem ("OUTROS")
CmbSistema.AddItem ("NENHUM")
CmbSistema.ListIndex = 3

Opt_Nome = True
DtaCli.RecordSource = "SELECT codigo,contato,fantasia,nome,endereco,cidade,bairro,cep,uf,email,tele FROM agenda ORDER BY contato"

'abre tabela que será origem dos dados
Set Tblcad = DB.OpenRecordset("AGENDA", dbOpenTable)

'define o indice ativo
Tblcad.Index = "Nome"

'configura propriedades do Data Control
DtaCli.DatabaseName = sCaminho & "\cadastro.mdb"
DtaCli.RecordSource = "SELECT codigo,contato,nome,endereco,cidade,bairro,cep,uf,email,tele FROM Agenda ORDER BY nome"
DtaCli.Refresh
Set Rsdata = DtaCli.Recordset

'configura propriedades do DBList
DBList1.ListField = "nome"
DBList1.BoundText = Rsdata!nome

'carrega as caixas de texto com os valores do registro atual
Load_regs DBList1.BoundText

Log_off = False
End Sub

'-Código da função que carrega os controles com os dados.

Public Sub Load_regs(strnome As String)
'busca nome selecionado na tabela
Tblcad.Seek "=", strnome

'se achar então carrega os controles
If Not Tblcad.NoMatch Then
codigo = Tblcad("codigo")
TxtContato = "" & Tblcad("contato")
TxtNome = "" & Tblcad("nome")
TxtEndereco = "" & Tblcad("endereco")
TxtCidade = Tblcad("cidade")
TxtBairro = "" & Tblcad("bairro")
TxtCep = "" & Tblcad("cep")
TxtUf = "" & Tblcad("uf")
'ddd = "" & Tblcad("ddd")
TxtEmail = "" & Tblcad("email")
'fax = "" & Tblcad("fax")
TxtFone = "" & Tblcad("tele")
TxtFantasia = "" & Tblcad("fantasia")
End If
End Sub

Private Sub LvComando_Click(Index As Integer)
Select Case Index
Case 0
If Tblcad.RecordCount > 0 Or Tblcad.RecordCount = 0 Then

FrmDados.Enabled = True

Btn_GrvCan(0).Enabled = True 'cancelar
Btn_GrvCan(1).Enabled = True 'gravar

Call Desativa_botoes

If Tblcad.RecordCount > 0 Then
Marca = Tblcad.Bookmark
Tblcad.Index = "codigo"
Tblcad.MoveLast 'se mover depois addnew perde as alteracoes
codigo = Format(Tblcad![codigo] + 1, "00000")
End If
Inclui = True
Altera = False
'cmdfoto.Visible = True
'Image1.Picture = LoadPicture("")

Call Limpa_regs(frmConsulta)

Me.Caption = Caption & " ---> INCLUSÃO !!! "
TxtContato.SetFocus
'Text16.Text = "DIREITO"
'Check3.Value = Checked desabilitado ativo->pagamento
Else
MsgBox "Para incluir saia do modo de seleção !!! "
End If

End Select
End Sub

Private Sub LvNavega_Click(Index As Integer)
Const MOVE_FIRST = 0
Const MOVE_PREVIOUS = 1
Const MOVE_NEXT = 2
Const MOVE_LAST = 3

Select Case Index
Case MOVE_FIRST
DtaCli.Recordset.MoveFirst
Case MOVE_PREVIOUS
DtaCli.Recordset.MovePrevious
Case MOVE_NEXT
DtaCli.Recordset.MoveNext
Case MOVE_LAST
DtaCli.Recordset.MoveLast
End Select
End Sub

Public Sub Cancela()
On Error GoTo trata_erros

Tblcad.Bookmark = Marca

Posiciona_reg

Me.Caption = "Agenda Eletrà'nica"
Btn_GrvCan(0).Enabled = False
Btn_GrvCan(1).Enabled = False

Altera = False
Inclui = False

Call Ativa_botoes

FrmDados.Enabled = False
Exit Sub

trata_erros:
Resume Next

End Sub

Private Sub Posiciona_reg()
Tblcad.Index = "nome"

DtaCli.RecordSource = "SELECT codigo,contato,nome,endereco,cidade,bairro,cep,uf,email,tele FROM Agenda ORDER BY nome"
DtaCli.Refresh
Set Rsdata = DtaCli.Recordset
'DtaCli.Refresh

'posiciona o ponteiro no primeiro registro
Rsdata.MoveFirst

'configura propriedades do DBList
DBList1.ListField = "nome"
DBList1.BoundText = Rsdata!nome

'carrega as caixas de texto com os valores do registro atual
Load_regs DBList1.BoundText
End Sub
ALMARTI 09/03/2005 16:11:45
#71959
Resposta escolhida
'posiciona o ponteiro no primeiro registro
Rsdata.MoveLast
Rsdata.MoveFirst

Seguinte, quando cancela, o ponteiro esta sendo levado para um registro inexistente. Seguinte, para inserir, vc usa o RsData.addnew?
RO.DRIGOSG 09/03/2005 16:40:10
#71967
Eu utilizo assim:

Private Sub CmdNavega_Click(Index As Integer)
On Error GoTo Erros
With rsMovimento
Select Case Index
Case 0
.MoveFirst
Case 1
.MovePrevious
If .BOF Then .MoveNext
Case 2
.MoveNext
If .EOF Then .MoveLast
Case 3
.MoveLast
End Select
End With
PreencheCampos
Exit Sub
Erros:
MsgBox "Erro", vbExclamation, "Aviso"
End Sub


Já tentou carregar os campos na navegação dos registros:

Private Sub LvNavega_Click(Index As Integer)
Const MOVE_FIRST = 0
Const MOVE_PREVIOUS = 1
Const MOVE_NEXT = 2
Const MOVE_LAST = 3

Select Case Index
Case MOVE_FIRST
DtaCli.Recordset.MoveFirst
Case MOVE_PREVIOUS
DtaCli.Recordset.MovePrevious
Case MOVE_NEXT
DtaCli.Recordset.MoveNext
Case MOVE_LAST
DtaCli.Recordset.MoveLast
End Select
Load_regs
End Sub


Espero ter ajudado um pouco.

Um abraço!
RO.DRIGOSG 09/03/2005 16:44:08
#71970
Repare isto no código acima:

If .BOF Then .MoveNext
If .EOF Then .MoveLast
USUARIO.EXCLUIDOS 09/03/2005 17:35:49
#71986
Valeu pessoal, vou ver se dá certo !
USUARIO.EXCLUIDOS 10/03/2005 11:02:14
#72110
Valeu galera, realmente era o posicionamento do registro.

Muito obrigado a todos !

Abraços,

Mark

Tópico encerrado , respostas não são mais permitidas