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

Incluir dados no ACCESS


Mathe

Pergunta

Prezados,

Sou iniciante em VB6, e espero aind chegar no nível de vocês.

Não sei qual forma seria melhor para inserir dados num BD ACESS pelo VB6. Acabei optando por instruções SQL. Peguei um exemplo na net e tentei adaptar para minha situação, porém não estou conseguindo incluir de modo algum. Toda vez gera o erro 424 "Run time error". Posto abaixo como coloco a rotina. Agradeço desde já.

Private Sub cmdSalvar_Click()

Dim MinhaConexão As New ADODB.Connection
Dim RsCx As New ADODB.Recordset
Dim MinhaDatabase As New ADODB.Recordset
Dim i As Integer, Ctrl, Codigo, nDias, Lins

'Cria a conexão
MinhaConexão.CursorLocation = adUseClient
[b]MinhaConexão.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ThisWorkbook.Path & "/LOC.mdb" & ";"[/b] ' O ERRO ACONTECE NESTA LINHA

' cria a consulta
'MinhaDatabase.Open "SELECT * FROM [Clientes] WHERE Codigo=" & txtcod & ";", MinhaConexão, adOpenKeyset, adLockOptimistic, adCmdText
'If Not MinhaDatabase.EOF Then
'MsgBox "Código já Cadastrado!", vbInformation, "REPETIÇÃO"
'Exit Sub
'End If

MinhaDatabase.AddNew
MinhaDatabase("Codigo") = Me.txtcod
MinhaDatabase("nome") = Me.txtnome
MinhaDatabase("DataNasc") = Me.txtdtn
MinhaDatabase("CPF") = (Me.txtcpf)

MinhaDatabase("RG") = Me.txtrg
MinhaDatabase("Tel") = Me.txttel
MinhaDatabase("Cel1") = Me.txtcel1
MinhaDatabase("Cel2") = Me.txtcel2
MinhaDatabase("Email") = Me.txtemail
MinhaDatabase("Status") = Me.cbstatus
MinhaDatabase("Logra") = Me.txtend
MinhaDatabase("Num") = Me.txtnum
MinhaDatabase("Comp") = Me.txtcomp
MinhaDatabase("Cidade") = Me.txtcidade
MinhaDatabase("Bairro") = Me.txtbairro
MinhaDatabase("CEP") = Me.txtCEP

'MinhaDatabase("Foto") = Me.txtfoto


MinhaDatabase.Update
Set MinhaDatabase = Nothing

Set MinhaConexão = Nothing
    limpa

End Sub

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Opa cara, tudo bom??

Então... eu utilizo minha conexão em um módulo

Public cn As ADODB.Connection
Public rs As ADODB.Recordset
Public Function abrebanco()
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path & "\bd.mdb;jet oledb:database password=*********"
End Function
Public Function fechabanco()
cn.Close
End Function
E para inserir no botão eu faço:
inserir = "insert into TABELA(Coluna1,coluna2)" & "Values('" & txt1.text & "','" & txt2.text & "')"
cn.execute inserir

Lembrando que para numeros, você usa só aspas " & txt1.text & ", para textos apostrofo seguido de aspas...

Tem um tópico que postei explicadinho, vou procurar e já edito com o link

Abraços :D

edit--

Link

Editado por Matheus-vb6
Link para o comentário
Compartilhar em outros sites

  • 0

Olá Mathe :)

É cara, a forma que o Matheus-vb6 citou está correta, se o que você quer é inserir no BD Access...as formas de inserção tanto no SQL quanto no Access são as mesmas...

Esse script que você citou está bem complicado...há dois RecordSet's declarados nele... e, se é para inserção de dados, não há necessidade de usar RecordSet, apenas a string que contém a conexão com a base de dados.

Este script é uma consulta ao banco e não uma inserção no banco :blink: ...

ele está efetuando uma consulta e preenchendo TextBoxes com o resultado... :blush:

Te aconselho a quando tiver dúvidas, relacionadas a bancos de dados, dá umas pesquisadas nos tópicos de Setembro de 2010 para presente data...pois perguntei (pertubei :D) bastante sobre esse assunto aqui no ScriptBrasil...o pessoal é nota 10 para explicar e sugerir ;)

Valeu e boa sorte em seus estudos !

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Turma !!!

Valeu pelas respostas. Vamos as dúvidas...rsrs

Matheus,

CODE

inserir = "insert into TABELA(Coluna1,coluna2)" & "Values('" & txt1.text & "','" & txt2.text & "')"

cn.execute inserir

Fiquei imaginando numa tabela com 50 colunas por exemplo. Tenho que inserir nessa mesma linha todas as colunas e textbox ? Não há um meio mais "fast" de fazer o mesmo ?

Caso meu BD não tenha senha, a linha de conexão ficaria assim ?

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path & "\bd.mdb

Danleonhart,

Este script é uma consulta ao banco e não uma inserção no banco ...

ele está efetuando uma consulta e preenchendo TextBoxes com o resultado...

Realmente Dan, minha intenção é realizar uma consulta para verificar se o código já existe no BD, se existir filtraria os dados, senão basta cadastrar. Mas isso eu até abandonei, POR ENQUANTO, pois é melhor da um passo de cada vez, já estou com tanta dificuldade para inserir dados.

Te aconselho a quando tiver dúvidas, relacionadas a bancos de dados, dá umas pesquisadas nos tópicos de Setembro de 2010 para presente data...pois perguntei (pertubei ) bastante sobre esse assunto aqui no ScriptBrasil...o pessoal é nota 10 para explicar e sugerir

Pesquisei o fórum de VB quase todo e não achei seus tópicos, entrei até no teu perfil pra procurar, se tiver o link poste por favor, camarada.

Muito obrigado a todos, espero um dia poder retribuir.

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0
CODE

inserir = "insert into TABELA(Coluna1,coluna2)" & "Values('" & txt1.text & "','" & txt2.text & "')"

cn.execute inserir

É cara... o melhor método mesmo que te aconselho é esse... eu tenho um cadastro com 99 dados.. Segue o Link

----------

Caso não tenha senha... não tenho certeza, mas acho que é só retirar o password = .... nunca usei sem senha :S

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path & "\bd.mdb;jet oledb:database"
-------- Caso queira consultar, por exemplo, se o NOME existe por exemplo... você pode fazer assim:
dim existe as boolean
existe=false
set rsdados = new adodb.recordset
rsdados.open "select * from TABELA",CONEXAO
do while rsdados.eof=false and existe=false
if rsdados("Nome") = txtnome.text then
existe=true
else
rsdados.movenext
end if
loop
if existe=true then
msgbox "Cadastro já existente"
else ' ou elseif existe=false then
'%%% código de cadastrar %%%
end if

Não se esqueça de colocar o "abrebanco" e o "fechabanco"

----

. qualquer duvida poste ai que realmente o pessoal é nota 10....

Abraços cara :D boa sorte.

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,2k
    • Posts
      652k
×
×
  • Criar Novo...