rizuane Postado Março 2, 2009 Denunciar Share Postado Março 2, 2009 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 telaPrivate Sub LimparDados()'Apaga o conteúdo dos campos do formulário:txtNomeUsuario.Text = EmptytxtEndereco.Text = EmptytxtCidade.Text = EmptytxtEstado.Text = EmptytxtCEP.Text = EmptytxtTelefone.Text = EmptyEnd SubPrivate 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 = EmptytxtCodUsuario.SetFocus End SUBO ERRO ENCONTRA-SE ILUSTRADO PELA COR VERMELHAerro gravar dadosPrivate Sub GravarDados()Dim cnnComando As New ADODB.CommandDim vConfMsg As IntegerDim vErro As BooleanOn Error GoTo errGravacao'Inicializa as variáveis auxiliares:vConfMsg = vbExclamation + vbOKOnly + vbSystemModalvErro = False'Verifica os dados digitados:If txtNomeUsuario.Text = Empty ThenMsgBox "O campo Nome não foi preenchido.", vConfMsg, "Erro"vErro = TrueEnd IfIf txtEndereco.Text = Empty ThenMsgBox "O campo Endereço não foi preenchido.", vConfMsg, "Erro"vErro = TrueEnd IfIf txtCidade.Text = Empty ThenMsgBox "O campo Cidade não foi preenchido.", vConfMsg, "Erro"vErro = TrueEnd IfIf txtEstado.Text = Empty ThenMsgBox "O campo Estado não foi preenchido.", vConfMsg, "Erro"vErro = TrueEnd IfIf txtCEP.Text = Empty ThenMsgBox "O campo CEP não foi preenchido.", vConfMsg, "Erro"vErro = TrueEnd If'Se aconteceu um erro de digitação, sai da sub sem gravar:If vErro Then Exit SubScreen.MousePointer = vbHourglassWith 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.ExecuteEnd WithMsgBox "Gravação concluída com sucesso.", _vbApplicationModal + vbInformation + vbOKOnly, _"Gravação OK"'Chama a sub que limpa os dados do formulário:LimparTelaSaida:Screen.MousePointer = vbDefaultSet cnnComando = NothingExit SuberrGravacao:With ErrIf .Number <> 0 ThenMsgBox "Houve um erro durante a gravação dos dados na tabela.", _vbExclamation + vbOKOnly + vbApplicationModal, "Erro".Number = 0GoTo SaidaEnd IfEnd WithEnd SubAPOS GRAVAÇÃO CONCLUIDA COM SUCESSO SURGE LOGO EM SEGUIDA UMA OUTRA MENSAGEM DE ERROerro durante a exclusãoPrivate Sub ExcluirRegistro()Dim cnnComando As New ADODB.CommandDim vOk As IntegerOn 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 ThenScreen.MousePointer = vbHourglassWith cnnComando.ActiveConnection = cnnBiblio.CommandType = adCmdText'Cria o comando SQL:.CommandText = "DELETE FROM Usuarios WHERE CodUsuario = " & txtCodUsuario.Text & ";".ExecuteEnd WithMsgBox "Registro excluído com sucesso.", _vbApplicationModal + vbInformation + vbOKOnly, _"Exclusão OK"'Chama a sub que apaga todos os campos do formulário:LimparTelaEnd IfSaida:Screen.MousePointer = vbDefaultSet cnnComando = NothingExit SuberrExclusao:With ErrIf .Number <> 0 ThenMsgBox "Houve um erro durante a exclusão do registro.", _vbExclamation + vbOKOnly + vbApplicationModal, "Erro".Number = 0GoTo SaidaEnd IfEnd WithEnd SubAPOS EXCLUSÃO CONCLUIDA COM SUCESSO SURGE LOGO EM SEGUIDA UMA OUTRA MENSAGEM DE ERROPRECISO DA VOSSA AJUDA Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 raphael_suporte Postado Março 2, 2009 Denunciar Share Postado Março 2, 2009 primeira questão, o campos txtCodUsuario do tipo texto está criado?? caso esteja confirme o nome do campo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Março 2, 2009 Denunciar Share Postado Março 2, 2009 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 errExclusaoe 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rizuane Postado Março 2, 2009 Autor Denunciar Share Postado Março 2, 2009 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 ambose 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 = EmptytxtCodUsuario.SetFocusEnd SUBE 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Março 2, 2009 Denunciar Share Postado Março 2, 2009 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 = EmptytxtCodUsuario.Enabled = True 'ADICIONE ESSA LINHAtxtCodUsuario.SetFocusEnd SUB[/code] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rizuane Postado Março 2, 2009 Autor Denunciar Share Postado Março 2, 2009 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rizuane Postado Março 31, 2009 Autor Denunciar Share Postado Março 31, 2009 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 conformeo 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 Subconforme você escolhe a editora na datacombo, o grid é automaticamente atualizado comseus 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: datEditorasNa propriedade LIstFilde da datacombo: NomeEditoraNa propriedade Boundcolumn da datacombo: Livros.CodEditoraQuando corro o programa, na datacombo aparecem todas as editoras, mas quando seleciono uma editora, a grid não mostra nada fica branco. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rizuane Postado Abril 1, 2009 Autor Denunciar Share Postado Abril 1, 2009 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 NomeEditoraAlterei aqui também:Na propriedade RowSource da datacombo: datEditorasNa propriedade LIstFilde da datacombo: NomeEditoraNa propriedade Boundcolumn da datacombo: NomeEditoraValeu pela minha PERSISTÊNCIA Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
rizuane
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
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.