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

Ajuda Visual Basic + Bd Access 97


Guest k1tsune

Pergunta

Olá,

Quero construir um banco via código no VB 6. Gostaria de saber como fazer isso. Estou tentando usar o Microsoft.Jet.4.0, mas parece que esse é para o Access 2000. Só tenho Access 97, qual Jet é? Tentei usar o 3.51, mas falta uma outra parada (não lembro o nome).

Brigadão,

Link para o comentário
Compartilhar em outros sites

17 respostass a esta questão

Posts Recomendados

  • 0
Guest - Thiago -

amigoo....

eu vi o assunto e essa é exatamente minha duvida...

eu tentei conectar meu banco de dados, com o OLEDB Jet 3.51 e com o 4.0!

e não to conseguindo conectar meu banco de dados...

eu vi que vocês falaram de access 97 e 2000...

só que o meu é Access XP , qual versão do OLEDB Jet devo usar?

abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

Pow está aí o codigo que eu estou usando... um amigo que me passou esse codigo! hehe...

não to conseguindo conectar no banco de dados de jeito nenhum... está dando erro...

e aparecendo a msg do MSGBOX...

--> esse codigo esta na module: Biblio.bas

Public cnnBiblio As New ADODB.Connection

--> esse codigo esta no timer do formulario splash: frmSplash.frm

Private Sub Timer1_Timer()

On Error GoTo errConexao

cnnBiblio.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source=" & App.Path & "\Biblio.mdb;"

cnnBiblio.Open

Unload Me

frmBiblio.Show

Exit Sub

errConexao:

With Err

If .Number <> 0 Then

MsgBox "Houve um erro na conexão com o banco de dados." & _

vbCrLf & "O sistema será encerrado.", _

vbCritical + vbOKOnly + vbApplicationModal, _

"Erro na conexão"

.Number = 0

Set cnnBiblio = Nothing

End

End If

End With

End Sub

valeu pela ajuda desde já!

abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

Você já tentou abrir esse arquivo no Access? Aqui funciona perfeitamente com o código do seu amigo (você só não deveria colocá-lo em um Timer). Eu coloquei o seguinte no evento Click de um botão:

cnnBiblio.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Biblio.mdb;"
cnnBiblio.Open

E não deu erro algum.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Po graymalker... muito obrigado pela ajuda... agora eu to conseguindo conectar com meu BD...

mas estou com um outro problema quando vou cadastrar um usuario no meu BD...

vai aih meu codigo... poderar me ajudar e vê o que esta de errado... agradeço desde já!

Private Sub GravarDados()
Dim cnnComando As New ADODB.Command
Dim vConfMsg As Integer
Dim vErro As Boolean
    On Error GoTo errGravacao
    vConfMsg = vbExclamation + vbOKOnly + vbSystemModal
    vErro = False
    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 txtTelefon.Text = Empty Then
        MsgBox "O campo Telefone não foi preenchido.", vConfMsg, "Erro"
        vErro = True
    If txtCEP.Text = Empty Then
        MsgBox "O campo CEP não foi preenchido.", vConfMsg, "Erro"
        vErro = True
    End If
    If vErro Then Exit Sub
    Screen.MousePointer = vbHourglass
    With cnnComando
        .ActiveConnection = cnnBiblio
        .CommandType = adCmdText
        If vInclusao Then
            .CommandText = "INSERT INTO Usuarios " & _
                "(CodUsuario, NomeUsuario, Endereco, Cidade, " & _
                "Estado, Telefone, CEP) VALUES ('" & _
                txtCodUsuario.Text & ",'" & _
                txtNomeUsuario.Text & "','" & _
                txtEndereco.Text & "','" & _
                txtCidade.Text & "','" & _
                txtEstado.Text & "','" & _
                txtTelefone.Text & "','" & _
                txtCEP.Text & "');"
        Else
            .CommandText = "UPDATE Usuarios SET " & _
                "NomeUsuario = '" & txtNomeUsuario.Text & "'," & _
                "Endereco = '," & txtEndereco.Text & "'," & _
                "Cidade = '," & txtCidade.Text & "'," & _
                "Estado = '," & txtEstado.Text & "'," & _
                "Telefone = '," & txtTelefone.Text & "'," & _
                "CEP = '," & txtCEP.Text & "' " & _
                "WHERE CodUsuario = " & txtCodUsuario.Text & ";"
        End If
        .Execute
    End With
    MsgBox "Gravação concluída com sucesso.", vbApplicationModal + vbInformation + vbOKOnly, "Gravação OK"
    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

Link para o comentário
Compartilhar em outros sites

  • 0

Mas, qual é o erro que ocorre? Novamente você está utilizando On Error GoTo, o que não é nada bom, uma vez que você não sabe qual o erro que ocorre.

É importante notar que só utilizamos On Error GoTo *depois* que testamos a rotina e verificamos que não ocorre nenhum erro na correta utilização dela. Eu escrevo a rotina, sem qualquer tratamento de erro, e testo ela com valores corretos, ou seja, como eu faria, por exemplo, o cadastro do cliente. Se der tudo certo, então ok, agora sim posso incluir um tratamento de erro, porque pode acontecer alguma outra coisa que eu não pensei. Se der erro, então eu corrijo o erro até que a rotina fique perfeita, sob a minha perspectiva. Daí sim, posso incluir o tratamento de erro. Sacou? ;)

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Eu fiz algumas mudanças no meu codigo e ainda esta dando erro na minha gravação... o erro é esse:

Run-time error '424':

Object Required

bom esse é o erro... meu codigo vai aqui embaixo, agradeço desde já a ajuda:

Private Sub GravarDados()
Dim cnnComando As New ADODB.Command
Dim vConfMsg As Integer
Dim vErro As Boolean
    vConfMsg = vbExclamation + vbOKOnly + vbSystemModal
    vErro = False
    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 txtTelefon.Text = Empty Then
        MsgBox "O campo Telefone 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
    If vErro Then Exit Sub
    Screen.MousePointer = vbHourglass
    With cnnComando
        .ActiveConnection = cnnBiblio
        .CommandType = adCmdText
        If vInclusao Then
            .CommandText = "INSERT INTO Usuarios " & _
                "(CodUsuario, NomeUsuario, Endereco, Cidade, " & _
                "Estado, Telefone, CEP) VALUES ('" & _
                txtCodUsuario.Text & ",'" & _
                txtNomeUsuario.Text & "','" & _
                txtEndereco.Text & "','" & _
                txtCidade.Text & "','" & _
                txtEstado.Text & "','" & _
                txtTelefone.Text & "','" & _
                txtCEP.Text & "');"
        Else
            .CommandText = "UPDATE Usuarios SET " & _
                "NomeUsuario = '" & txtNomeUsuario.Text & "'," & _
                "Endereco = '," & txtEndereco.Text & "'," & _
                "Cidade = '," & txtCidade.Text & "'," & _
                "Estado = '," & txtEstado.Text & "'," & _
                "Telefone = '," & txtTelefone.Text & "'," & _
                "CEP = '," & txtCEP.Text & "' " & _
                "WHERE CodUsuario = " & txtCodUsuario.Text & ";"
        End If
        .Execute
    End With
    MsgBox "Gravação concluída com sucesso.", vbApplicationModal + vbInformation + vbOKOnly, "Gravação OK"
    LimparTela
    Screen.MousePointer = vbDefault
    Set cnnComando = Nothing
    
End Sub

abraços graymalkin!

Link para o comentário
Compartilhar em outros sites

  • 0

Quase sempre o erro de Object Required ocorre quando o nome de um objeto ou propriedade está escrito incorretamente.

Ah, e você esqueceu de informar uma coisa muito importante: qual é a linha em que o erro ocorre?

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Graymalkin.. consegui consertar meu erro de Object...

só que agora está dando outro erro... e eu já tentei de tudo e nada... =/

poderia me ajudar?

Eu preencho o formulario todo certinho, quando eu coloco pra salvar no banco de dados, ele salva, inclui o usuario no BD, aih eu dou OK, só que depois não limpa a tela, como deveria e da esse erro aqui:

Run-time error '5':

Invalid procedure call or argument

o erro é na linha (txtCodUsuario.SetFocus), abaixo o codigo:

Private Sub LimparTela()
    LimparDados
    Toolbar1.Buttons(3).Enabled = False
    txtCodUsuario.Text = Empty
    txtCodUsuario.SetFocus
End Sub

Quando eu entro no sistema novamente, vou cadastrar outro usuario, quando eu coloco o codigo do usuario já existe, aparece as informaçoes do usuarios, quando eu vou excluir, acontece tudo certinho, exclui o usuario do banco de dados, limpa o formulario, só que o ponteiro do mouse vai direto para a cx. de texto 'NOME', sendo que eu não posso subir pra o Codigo do Usuario.... entendeu ???

abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

Este LimpaTela() é chamado no evento Load do formulário? Se for, realmente vai dar problema em focar uma textbox, porque o form ainda está sendo carregado. Você tentar utilizar o evento Activate, se for o caso.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...