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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Rotina de gravação de dados sempre retorna erro...
Estudante
RIO DE JANEIRO
RJ - BRASIL
ENUNCIADA !
Postada em 08/08/2007 16:38 hs         
Boa tarde. Estou iniciando estudos em VB6 e estou apanhando pra fazer funcionar uma rotina de gravação em um BD Access 2000. Segue abaixo o código que estou tentando fazer essa rotina

'Num módulo chamado: AbreBD

Dim ConectaBD As New ADODB.Connection

'Ao abrir o form de produtos eu coloco para fazer a conexão com o BD:
        
       AbreBD.ConectaBD.ConnectionString= ""Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & app.path &"DatabaseSN.mdb;"

'Abre o BD:
          AbreBD.ConectaBD.open
Msgbox "Base de Dados aberto com sucesso!!", vbInformation + vbOkOnly,"AVISO"
              
Na rotina de gravação de dados está assim:

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 = ConectaBD
.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

Onde será que está o erro nesta rotina? Será que errei os comandos SQL's :(? Por favor, se puderem me ajudar agradeço pois é um trabalho de aprendizagem.;)

Edson:P
   
kerplunk
Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 08/08/2007 16:46 hs         
Parece estar certo, porém esse é um dos meios mais difíceis de se trabalhar. Seria melhor vc abrir um recordset:
Dim Rs as new adodb.recordset
Set rs = new adodb.recordset
if vinclusao then
   rs.open "Select * From usuarios"
   rs.addnew
else
   rs.open "Select * From usuarios Where CodUsuario = " & txtcodusuario.text
endif
Rs!nomeusuario = txtnomeusuario.text
rs!endereco = txtendereco.text
...
rs.update

Teu código vai ficar bem mais legível e mais simples para uma eventual manutenção
   
Estudante
RIO DE JANEIRO
RJ - BRASIL
ENUNCIADA !
Postada em 08/08/2007 20:46 hs         
eu peguei este código de uma apostila e estava estudando ele mas naum consegui entender. Eu coloquei tudo dentro de um módulo chamado BaseDados.bas e faço as rotinas dentro dele pra ficar mais centralizado e limpo nos forms que uso.

Tenho uma tabela chamada PRODUTOS com os seguintes campos: CODPRODUTO (chave primária, texto), PRODUTO, FORNECEDOR, TELFORNECEDOR, ALUGADO(SIM/NÃO), TIPO, COR, VALOR, TAMANHO, CAMINHOFOTO.


Sub GravaDados()
Dim Conecta As NEW ADODB.Connection
Dim Comando as NEW ADODB.Command
Dim RS as NEW ADODB.Recordset

      With Comando
              .ActiveConnection = Conecta
              .CommandType = adCmdTableDirect
              .CommandText = "Produtos"
              Set RS = .Execute
      End With

         RS.open

      With RS
             !CodProduto = txtCodProduto.text
             !Produto = txtProduto.text
             !Fornecedor = txtFornecedor.text
             !TelFornecedor = txtTelFornecedor.text
             !Alugado = optAlugado.value
             !Tipo = cboTipo.list(1).text
             !Cor = txtCor.text
             !Valor = txtValor.text
             !Tamanho = txtTamanho.text
    
             ' Aqui no campo foto eu ainda não aprendi a pegar o path da figura através  
             ' do CommonDialog e atribuir no código abaixo.
            ' !CaminhoFoto =

           End With
End Sub

Usando o recordset como o código fica parecido com o que coloquei acima? O código acima está certo?
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

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

HTML DESLIGADO

     
 VOLTAR

  



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