Ir para conteúdo
Fórum Script Brasil
  • 0

vb6


rizuane

Pergunta

ola galera eu sou iniciante em vb6 e tou resolvendo um exercicio duma apostila tirada na net.......que contem mts erros..........o codigo é este:

erro em limpar tela

Private Sub LimparDados()

'Apaga o conteúdo dos campos do formulário:

txtNomeUsuario.Text = Empty

txtEndereco.Text = Empty

txtCidade.Text = Empty

txtEstado.Text = Empty

txtCEP.Text = Empty

txtTelefone.Text = Empty

End Sub

Private Sub LimparTela()

'Chama a sub LimparDados para limpar os campos do formulário:

LimparDados

'Desabilita o botão Excluir:

Toolbar1.Buttons(3).Enabled = False

'Apaga o conteúdo do campo CodUsuario e lhe passa o foco:

txtCodUsuario.Text = Empty

txtCodUsuario.SetFocus

End SUB

O ERRO ENCONTRA-SE ILUSTRADO PELA COR VERMELHA

erro gravar dados

Private Sub GravarDados()

Dim cnnComando As New ADODB.Command

Dim vConfMsg As Integer

Dim vErro As Boolean

On Error GoTo errGravacao

'Inicializa as variáveis auxiliares:

vConfMsg = vbExclamation + vbOKOnly + vbSystemModal

vErro = False

'Verifica os dados digitados:

If txtNomeUsuario.Text = Empty Then

MsgBox "O campo Nome não foi preenchido.", vConfMsg, "Erro"

vErro = True

End If

If txtEndereco.Text = Empty Then

MsgBox "O campo Endereço não foi preenchido.", vConfMsg, "Erro"

vErro = True

End If

If txtCidade.Text = Empty Then

MsgBox "O campo Cidade não foi preenchido.", vConfMsg, "Erro"

vErro = True

End If

If txtEstado.Text = Empty Then

MsgBox "O campo Estado não foi preenchido.", vConfMsg, "Erro"

vErro = True

End If

If txtCEP.Text = Empty Then

MsgBox "O campo CEP não foi preenchido.", vConfMsg, "Erro"

vErro = True

End If

'Se aconteceu um erro de digitação, sai da sub sem gravar:

If vErro Then Exit Sub

Screen.MousePointer = vbHourglass

With cnnComando

.ActiveConnection = cnnBiblio

.CommandType = adCmdText

'Verifica a operação e cria o comando SQL correspondente:

If vInclusao Then

'Inclusão:

.CommandText = "INSERT INTO Usuarios(CodUsuario, NomeUsuario, Endereco, Cidade, Estado, CEP, Telefone) VALUES ('" & txtCodUsuario.Text & "', '" & txtNomeUsuario.Text & "', '" & txtEndereco.Text & "', '" & txtCidade.Text & "', '" & txtEstado.Text & "', '" & txtCEP.Text & "', '" & txtTelefone.Text & "');"

Else

'Alteração:

.CommandText = "UPDATE Usuarios SET NomeUsuario = '" & txtNomeUsuario.Text & "', Endereco = '" & txtEndereco.Text & "', Cidade = '" & txtCidade.Text & "', Estado = '" & txtEstado.Text & "', CEP = '" & txtCEP.Text & "', Telefone = '" & txtTelefone.Text & "' WHERE CodUsuario = " & txtCodUsuario.Text & ";"

End If

.Execute

End With

MsgBox "Gravação concluída com sucesso.", _

vbApplicationModal + vbInformation + vbOKOnly, _

"Gravação OK"

'Chama a sub que limpa os dados do formulário:

LimparTela

Saida:

Screen.MousePointer = vbDefault

Set cnnComando = Nothing

Exit Sub

errGravacao:

With Err

If .Number <> 0 Then

MsgBox "Houve um erro durante a gravação dos dados na tabela.", _

vbExclamation + vbOKOnly + vbApplicationModal, "Erro"

.Number = 0

GoTo Saida

End If

End With

End Sub

APOS GRAVAÇÃO CONCLUIDA COM SUCESSO SURGE LOGO EM SEGUIDA UMA OUTRA MENSAGEM DE ERRO

erro durante a exclusão

Private Sub ExcluirRegistro()

Dim cnnComando As New ADODB.Command

Dim vOk As Integer

On Error GoTo errExclusao

'Solicita confirmação da exclusão do registro:

vOk = MsgBox("Confirma a exclusão desse registro?", _

vbApplicationModal + vbDefaultButton2 + vbQuestion + vbYesNo, _

"Exclusão")

If vOk = vbYes Then

Screen.MousePointer = vbHourglass

With cnnComando

.ActiveConnection = cnnBiblio

.CommandType = adCmdText

'Cria o comando SQL:

.CommandText = "DELETE FROM Usuarios WHERE CodUsuario = " & txtCodUsuario.Text & ";"

.Execute

End With

MsgBox "Registro excluído com sucesso.", _

vbApplicationModal + vbInformation + vbOKOnly, _

"Exclusão OK"

'Chama a sub que apaga todos os campos do formulário:

LimparTela

End If

Saida:

Screen.MousePointer = vbDefault

Set cnnComando = Nothing

Exit Sub

errExclusao:

With Err

If .Number <> 0 Then

MsgBox "Houve um erro durante a exclusão do registro.", _

vbExclamation + vbOKOnly + vbApplicationModal, "Erro"

.Number = 0

GoTo Saida

End If

End With

End Sub

APOS EXCLUSÃO CONCLUIDA COM SUCESSO SURGE LOGO EM SEGUIDA UMA OUTRA MENSAGEM DE ERRO

PRECISO DA VOSSA AJUDA

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

faca o seguinte, nessas duas subs GravarDados() e ExcluirRegistro(), vai la e comente ou apague as linhas:

On Error GoTo errGravacao
e
On Error GoTo errExclusao

e de preferencia nem use isso q so atrapalha na hora de estudar. o On Error GoTo serve pra evitar mensagens de erro q fechariam o programa pra facilitar quando o usuario tiver usando, mas vai te impedir de saber qual o problema.

depois de apagar as linhas, tenta de novo. e ai quando der erro, poste aqui pra nos quais as tres mensagens de erro q aparecem (pra cada um dos tres erros q você falou) porque sem as mensagens não tem como a gente saber.

Link para o comentário
Compartilhar em outros sites

  • 0

alo amigo Kuroi, fiz o que me recomendaste, comentei nos seus respectivos codicos dessas duas subs GravarDados() e ExcluirRegistro() e ele da o erro run time 5 (invalid procedure call or argument) para ambos

e quando faxo o debug ele aponta para txtCodUsuario.SetFocus da sub LimparTela como mostrado em amarelo:

Private Sub LimparTela()

'Chama a sub LimparDados para limpar os campos do formulário:

LimparDados

'Desabilita o botão Excluir:

Toolbar1.Buttons(3).Enabled = False

'Apaga o conteúdo do campo CodUsuario e lhe passa o foco:

txtCodUsuario.Text = Empty

txtCodUsuario.SetFocus

End SUB

E quando comento ou apago esta linha txtCodUsuario.SetFocus da sub acima ele não da o erro ao gravar ou excluir, mas já não permite que eu faça novo cadastro.

agadecia sua colaboração

Link para o comentário
Compartilhar em outros sites

  • 0

rizuane, por acaso o txtCodUsuario esta desabilitado (.Enabled = False)??

se tiver você não consegue por o SetFocus.

tente fazer o seguinte pra ver se para com o erro:

Private Sub LimparTela()
'Chama a sub LimparDados para limpar os campos do formulário:
LimparDados
'Desabilita o botão Excluir:
Toolbar1.Buttons(3).Enabled = False
'Apaga o conteúdo do campo CodUsuario e lhe passa o foco:
txtCodUsuario.Text = Empty
txtCodUsuario.Enabled = True 'ADICIONE ESSA LINHA
txtCodUsuario.SetFocus
End SUB[/code]

Link para o comentário
Compartilhar em outros sites

  • 0

caro amigo Kuroi consegui resolver o problema com base na sua dica: por acaso o txtCodUsuario estava desabilitado (.Enabled = False) em este procedimento: Private Sub txtCodUsuario_LostFocus()

Assim já consigo gravar, excluir e limparTela. valeu muito obrigado pela coperação.

Link para o comentário
Compartilhar em outros sites

  • 0

oi pessoal......

estou quase a ultimar esse exercicio Bibliotecario (pdf tirado da net, com muitos erros) , so que estou com um problema nesta parte do exercicio:

Elaborei um formulário para a consulta de Livros por Editora (com um datacombo, dois ado data control e uma datagrid)

O funcionamento dessa consulta será assim: na DataCombo serão exibidas os nomes das editoras, e conforme

o operador for alternando entre eles, os livros da editora selecionado serão exibidos no grid. Será necessário,

portanto, filtrar os registros da tabela de livros de acordo com a editora escolhida na combo.

No evento Load do formulário, os comandos para atribuir a ConnectionString aos controles de dados:

Private Sub Form_Load()
Me.Left = (frmBiblio.ScaleWidth - Me.Width) / 2
Me.Top = (frmBiblio.ScaleHeight - Me.Height) / 2
datEditoras.ConnectionString = cnnBiblio.ConnectionString
datLivros.ConnectionString = cnnBiblio.ConnectionString
End Sub
O próximo passo é fazer com que o grid seja atualizado com os livros da editora selecionado. Para isso usaremos o eventos Click da combo:
Private Sub cboEditoras_Click(Area As Integer)
datLivros.RecordSource = "SELECT * FROM ConsultaTodosLivros " & _
"WHERE Editora = '" & cboEditoras.BoundText & "';"
datLivros.Refresh
End Sub

conforme você escolhe a editora na datacombo, o grid é automaticamente atualizado com

seus respectivos livros.

No recordSource do ado data control de datEditoras tem este sql:

SELECT DISTINCT Editoras.*, Livros.CodEditora FROM Editoras INNER JOIN Livros ON Editoras.CodEditora = Livros.CodEditora ORDER BY Editoras.NomeEditora;

No recordSource do ado data control de datLivros tem este sql:

SELECT * FROM ConsultaTodosLivros;

Na propriedade RowSource da datacombo: datEditoras

Na propriedade LIstFilde da datacombo: NomeEditora

Na propriedade Boundcolumn da datacombo: Livros.CodEditora

Quando corro o programa, na datacombo aparecem todas as editoras, mas quando seleciono uma editora, a grid não mostra nada fica branco.

Link para o comentário
Compartilhar em outros sites

  • 0

RESOLVIDO..........o problema estava nesta string sql:

No recordSource do ado data control de datEditoras tem este sql:

SELECT DISTINCT Editoras.*, Livros.CodEditora FROM Editoras INNER JOIN Livros ON Editoras.CodEditora = Livros.CodEditora ORDER BY Editoras.NomeEditora;

Troquei por este:

SELECT DISTINCT NomeEditora FROM Editoras ORDER BY NomeEditora

Alterei aqui também:

Na propriedade RowSource da datacombo: datEditoras

Na propriedade LIstFilde da datacombo: NomeEditora

Na propriedade Boundcolumn da datacombo: NomeEditora

Valeu pela minha PERSISTÊNCIA

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...