USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  VB6 X ACCESS 97(ERRO 3426)???
Ade
MACEIÓ
AL - BRASIL
ENUNCIADA !
Postada em 19/12/2008 21:06 hs            
Olá,
 
     Alguém poderia me ajudar? Estou com uma aplicação que ao tentar incluir, alterar qualquer informação no BD que está vinculado por um objeto DATA, está dando o seguinte erro, na linha de comando do VB, "Data1.Recordset.Update": Run time error: 3426 "This action was cancelled by an associated object ". Utilizo o VB6 x ACCESS 97, a DatabaseName, utilizo quando carrego o formulário, RecordsetType, utilizo o Dynaset, de um Recordsource relacionado a uma tab x. A rotina que utilizo quando quero modificar qualquer registro é através do botão Adicionar/Alterar e em seguida pelo botão salvar conforme consta abaixo:
Botão Adicionar:
 
Private Sub Command1_Click()
Dim Contador As Currency
Dim Estoque As Currency
If Menu.CEstoque = "" Then
Menu.CEstoque = 0
End If
Estoque = Menu.CEstoque
Contador = Estoque + 1
Menu.CEstoque = Contador

A1.Visible = True
Tabela.Visible = False

Data1.Recordset.AddNew
A1 = Contador
Frame1.Enabled = True
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = True
Command4.Enabled = False
Command5.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
C5.Enabled = False
TABE.Enabled = False
PRINTB.Enabled = False
Data1.Enabled = False
A2.SetFocus
A1.Visible = False
P1 = A1
Menu.Contador.Refresh
End Sub
x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-
Botão Alterar:
Private Sub Command2_Click()
If P1 <> "" Then
Data1.Recordset.Edit
Data1.Enabled = False
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = True
Command4.Enabled = False
Command5.Enabled = False
Command7.Enabled = False
C5.Enabled = False
TABE.Enabled = False
PRINTB.Enabled = False
Tabela.Visible = False
Data1.Enabled = False
A1.Visible = False
Frame1.Enabled = True
A2.SelStart = 0
A2.SelLength = Len(A2.Text)
A2.SetFocus
Tabela.Visible = False
End If
End Sub
x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-
Botão Salvar (É aqui que existe o erro apontado)
Private Sub Command3_Click()
If P1 <> "" Then
'Confirmação de campos
If A3 = "" Then
A3 = 0
End If
If A4 = "" Then
A4 = 0
End If
If A5 = "" Then
A5 = 0
End If
If A07 = "" Then
A07 = 0
End If
If A8 = "" Then
A8 = 0
End If
If A09 = "" Then
A09 = 0
End If
If A10 = "" Then
A10 = 0
End If
If A22 = "" Then
A22 = 0
End If
If A12 = "" Then
A12 = 0
End If
If A11 = "" Then
A11 = 0
End If
If A9 = "" Then
A9 = 0
End If
If A23 = "" Then
A23 = 0
End If
If A13 = "" Then
A13 = 0
End If
If A7 = "" Then
A7 = 0
End If
If A15 = "" Then
A15 = 0
End If
If A17 = "" Then
A17 = 0
End If
If A19 = "" Then
A19 = 0
End If
If TvenHoje = "" Then
TvenHoje = 0
End If
If LucDia = "" Then
LucDia = 0
End If
If LucMes = "" Then
LucMes = 0
End If
If Custo_total = "" Then
Custo_total = 0
End If
If Estoque_total = "" Then
Estoque_total = 0
End If
If LucMesMec = "" Then
LucMesMec = 0
End If
If LucDiaMec = "" Then
LucDiaMec = 0
End If
If QueMes = "" Then
QueMes = 0
End If
If QueMesVr = "" Then
QueMesVr = 0
End If
Data1.Enabled = True
ENTRADA.Visible = False
Command1.Enabled = True
Command2.Enabled = True
Command3.Enabled = False
Command4.Enabled = True
Command5.Enabled = True
Command7.Enabled = True
C5.Enabled = True
TABE.Enabled = True
PRINTB.Enabled = True
Frame1.Enabled = False
Altera = True
TABE = True
Data1.Recordset.Update
End If
End Sub
Alguém pode me ajudar???
   
Sandro
não registrado
Postada em 19/12/2008 23:51 hs   
Olá,
 
Esse é um dos motivos pelo qual eu detesto controles acoplados...
Bom, o que acontece é que em alguns casos o controle DATA se perde durante atualizações nos controles vinculados e aponta para algum registro inexistente e tenta atualizar o registro quando se dá um AddNew ou Edit. É confuso, mas a própria Microsoft diz que isso é o comportamento padrão, então só nos resta se proteger.
Veja as propriedades EOFAction e BOFAction, elas devem estar setadas para MoveMax e MoveMin respectivamente, se já estiverem, coloque isso ANTES do seu comando AddNew:
 
If Data1.Recordset.EOF Or Data1.Recordset.BOF Then
   
    Str1 = Text1.text   '<--Crie variáveis para armazenar temporariamente o conteúdo de cada um dos controles acoplados

    Data1.UpdateControls
 
    Text1.Text = Str1   '<--devolva o conteúdo de cada variável para os controles acoplados

    Data1.Recordset.AddNew

End If
Em alguns casos, você pode forçar um moveMax antes de dar um AddNew que também acaba funcionando.
Espero que isso te ajude.
 
Sandro.
     
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 20/12/2008 18:53 hs            
eu acredito que o problema está no seguinte toda vez que der um addnew, ou edit, tem de fazer um updateveja

Data1.Recordset.Addnew
'o seu código
Data1.Recordset.Update

ou

Data1.Recordset.Edit
'código
Data1.Recordset.Update
   
Ade
MACEIÓ
AL - BRASIL
ENUNCIADA !
Postada em 29/12/2008 12:31 hs            
Já fiz todas as tentativas e não obtive sucesso, alguém pelo amor de Deus poderia me ajudar????????????????????
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página