ERRO 3426 !?!
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
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
'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?
Rsdata.MoveLast
Rsdata.MoveFirst
Seguinte, quando cancela, o ponteiro esta sendo levado para um registro inexistente. Seguinte, para inserir, vc usa o RsData.addnew?
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!
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!
Repare isto no código acima:
If .BOF Then .MoveNext
If .EOF Then .MoveLast
If .BOF Then .MoveNext
If .EOF Then .MoveLast
Valeu pessoal, vou ver se dá certo !
Valeu galera, realmente era o posicionamento do registro.
Muito obrigado a todos !
Abraços,
Mark
Muito obrigado a todos !
Abraços,
Mark
Tópico encerrado , respostas não são mais permitidas