Você está na página 1de 15

Acabando com as Dvidas sobre ADO Excel x Access Pessoal boa tarde.

Tenho notado que muitos usurios do forum vem em busca de solues em Excel que utiliza o Access como banco de dados . Segue aqui um exemplo passo a passo de como enviar do excel para o Access e buscar dados do Access para o Excel. Vamos comear habilitando o ADO do VBA. No editor do VBA v em Ferramentas > referncias > Selecione o Microsoft Activex Data Object 2.8 Library e click em OK. Vamos supor que vc precisa criar um programa que Cadastra Funcionrios e precisa armazenar os dados no Access. Crie um novo projeto no Access salve como o nome de base no C da maquina . Crie uma tabela com o nome de Banco e ponha as seguintes colunas : Nome / Cargo / Salario / Setor Salve e feche o Access. Abra o editor do VBA , crie um formulrio com os seguintes dados : Inclua 4 textbox e um commandbutton Renomear os textbox para seus respectivos dados: txtNome txtCargo txtSalario txtSetor Duplo click no commandbuton e insira esta macro. 'Declarando Variavel de coneco Dim Coneco As ADODB.Connection 'Declarando Variavel de armazenamento da dados Dim Dados As ADODB.Recordset 'Definindo Variavel coneco com nova consulta Set Coneco = New ADODB.Connection 'Definindo parmetros para coneco With Coneco .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Base.mdb" .Open End With 'Definindo nova busca e armazenamento dos dados da Tabela Set Dados = New ADODB.Recordset 'Definindo parmetros dos dados Dados.Open "Banco", Coneco, adOpenKeyset, adLockOptimistic, adCmdTable 'Observe que a palavra "banco" representa a tabela 'Criando uma condio para que nenhum dado deixe de ser digitado

If txtNome = "" Or txtCargo = "" Or txtSalario = "" Or txtSetor = "" Then MsgBox "Preencher todos os campos", vbCritical Else 'Caso ocorra algum erro , a macro segue On Error Resume Next 'Inserindo os dados na tabela With Dados .AddNew .Fields("Nome") = txtNome.Value .Fields("Cargo") = txtCargo.Value .Fields("Salario") = txtSalario.Value .Fields("Setor") = txtSetor.Value .Update End With 'Encerrando Recordset liberando memria Dados.Close Set Dados = Nothing 'Encerrando coneco Coneco.Close Set Coneco = Nothing 'Limpando textbox para novo lanamento txtNome = Empty txtCargo = Empty txtSalario = Empty txtSetor = Empty 'Definindo foco no textbox txtNome txtName.SetFocus Para Importar os dados para o excel , crie um mdulo e ponha esta macro : Sub Trazer_Dados() 'Declarando Variavel de coneco Dim Coneco As ADODB.Connection 'Declarando Variavel de armazenamento da dados Dim Dados As ADODB.Recordset 'Definindo Variavel coneco com nova consulta Set Coneco = New ADODB.Connection 'Definindo parmetros para coneco With Coneco .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Base.mdb" .Open End With 'Definindo nova busca e armazenamento dos dados da Tabela Set Dados = New ADODB.Recordset 'Definindo parmetros dos dados Dados.Open "Banco", Coneco, adOpenKeyset, adLockOptimistic, adCmdTable 'Observe que a palavra "banco" representa a tabela 'Declarando variavel WorkSheet Dim Xlst As Excel.Worksheet Set Xlst = Sheets("Plan1") 'Copiando os dados para Plan1 Xlst.Range("A1").CopyFromRecordset Dados 'Criando o Cabealho Range("A1").Select ActiveCell.Text = "Nome do Funcionario"

ActiveCell.Offset(0, 1).Text = "Cargo" ActiveCell.Offset(0, 2).Text = "Salario" ActiveCell.Offset(0, 3).Text = "Setor" Dados.Close Set Dados = Nothing Coneco.Close Set Coneco = Nothing End Sub Testem e vejam se deu certo. Abrao a todos.
07-07-2010 por Coloniz@dor

Dando continuao , vamos por a mo na massa. Salve os dois arquivos no C:\ de sua mquina e vamos cria funcionalidade a esse pequeno projeto de cadastro de funcionrios.
08-07-2010 por Coloniz@dor

Criando a Classe de Conexo Para conexo com o banco de dados , quando o programa que estamos criando requer vrias consultas , para no ter que fica digitando todas vez o provedor e local do banco de dados , a melhor e mais prtica maneira criar uma classe. Vamos l. No editor do VBA v em inserir Mdulo Classe e renomei a para - ClasseConexo. Inserir esta cdigo :
Cdigo:

'################################### 'CLASSE PARA CONEXO COM BANCO DE 'DADOS ACCESS '################################### Public Conn As New ADODB.Connection 'DECLARAO DA VARIVEL DE CONEXO Public Sub Conectar() '***************************' 'VARIVEL STRING QUE INDICA ' 'PROVEDOR E LOCAL DO BANCO ' 'DE DADOS ACCESS ' '***************************' Dim nConectar As String nConectar = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Base.mdb" Conn.ConnectionString = nConectar Conn.Open 'CONEXO ABERTA End Sub Public Sub Desconectar() Conn.Close 'CONEXO FECHADA End Sub ' Ento toda vez que precisar se conectar basta chamar a classe. Vamos agora preparar nosso formulrio para inserir registro: 1 Vamos formatar o textbox de Admisso para receber valores no formato de data. Inserir esse cdigo no textbox5:

Cdigo:

Private Sub TextBox5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If Len(Me.TextBox5) = 2 Or Len(Me.TextBox5) = 5 Then Me.TextBox5.Text = Me.TextBox5.Text & "/" SendKeys "{END}", True End If Me.TextBox5.MaxLength = 10 'DEFINE O NUMEROS DE CARACTERES NO TEXTBOX End Sub ' Com isso , quando for digitar , ir ficar com mscara de data , s precisa digitar os numeros. testem. Feita isso , vamos ao csdigo que inseri os novos registro. Preencham os dados. Inserir este cdigo no boto inserir.
Cdigo:

Private Sub CommandButton1_Click() 'CHAMANDO A CLASSE CONEXO Dim cx As New ClasseConexao 'VARIVEL DE ARMAZENAMENTO DOS DADOS DO BANCO Dim banco As ADODB.Recordset 'VARIVEL DE COMANDO PARA INSERIR OD DADOS Dim sql As String Set banco = New ADODB.Recordset 'DEFININDO INSTRUO A VARIVEL sql = " INSERT INTO Funcionario( Nome, Setor, Cargo, Salario, Admisso, Matricula )" sql = sql & " VALUES ( " sql = sql & " '" & Me.TextBox1.Text & "', " sql = sql & " '" & Me.TextBox2.Text & "', " sql = sql & " '" & Me.TextBox3.Text & "', " 'INSERT INTO , INSTRUO SQL PARA INSERIR DADOS sql = sql & " '" & Me.TextBox4.Text & "', " sql = sql & " '" & Me.TextBox5.Text & "', " sql = sql & " '" & Me.TextBox6.Text & "' ) " 'CONECTAR AO BANCO DE DADOS cx.Conectar 'EXECUTAR A SQL On Error Resume Next banco.Open sql, cx.Conn 'CONFIRMAO DE REGISTRO MsgBox "Funcionrio: " & Me.TextBox1.Text & " Cadastrado." 'DESCONECTAR PARA LIBERAR MEMRIA cx.Desconectar Me.TextBox1 = Empty Me.TextBox2 = Empty Me.TextBox3 = Empty 'LIMPA OS CAMPOS PARA NOVO REGISTRO Me.TextBox4 = Empty Me.TextBox5 = Empty Me.TextBox6 = Empty Me.TextBox1.SetFocus ' FOCO NA TEXTBOX NOME End Sub ' Faam vrios cadastros para testar , se houver erros , favor postarem.

At a proxima. abrao.
08-07-2010 por Slugman

Muito bom, gostei das dicas. Voce poderia colocar uns exemplos de importao de uma consulta existente ou de joins de consultas. Eu ja usei umas coisas mais simples. mas sempre fiquei confuso com os objetos do Access...kkkk Valeu!
08-07-2010 por Coloniz@dor

Importando os Dados para o Excel Vamos agora importar os dados do Access para o Excel. Vamos gravar os dados na Plan2 que j esta com os cabealhos , renomei o intervalo de celulas da A2:G100 como dados, isso definir a carga do ListBox com o dados. No Formulrio vpa na aba Pesquisa I , duplo click no Boto Listar Todos e inserir esta Cdigo.
Cdigo:

Private Sub CommandButton9_Click() 'CHAMANDO A CLASSE CONEXO Dim cx As New ClasseConexao 'VARIVEL DE ARMAZENAMENTO DOS DADOS DO BANCO Dim banco As ADODB.Recordset 'VARIVEL DE COMANDO PARA INSERIR OD DADOS Dim sql As String Set banco = New ADODB.Recordset 'DEFININDO INSTRUO A VARIVEL sql = " SELECT * FROM Funcionario " Range("dados").Clear 'CONECTAR AO BANCO DE DADOS cx.Conectar 'EXECUTAR A SQL On Error Resume Next banco.Open sql, cx.Conn 'DECLARANDO VARIVEL PARA LOCAL QUE RECEBER OS DADOS NA PLANILHA Dim xls As Excel.Worksheet Set xls = Sheets("Plan2") xls.Range("A2").CopyFromRecordset banco 'CONFIGURANDO LISTBOX Me.ListBox1.RowSource = "dados" Me.ListBox1.ColumnHeads = True Me.ListBox1.ColumnCount = 7 Me.ListBox1.ColumnWidths = "60pt;150pt;100pt;150pt" 'DESCONECTAR PARA LIBERAR MEMRIA cx.Desconectar End Sub

Testem , e no esqueam de renomear o intervalo seno no carregar o listbox. At a proxima. abrao.


09-07-2010 por Coloniz@dor

Exibindo os dados para alterao e excluso Ol a todos. Vamos agora exibir os dados do banco de dados do access afim de conseguirmos alterar ou ate masmo deletar o registro. Vamos para a aba alterao. Duplo click no boto busca. Inserir esse cdigo.
Cdigo:

Private Sub CommandButton4_Click() 'CHAMANDO A CLASSE CONEXO Dim cx As New ClasseConexao 'VARIVEL DE ARMAZENAMENTO DOS DADOS DO BANCO Dim banco As ADODB.Recordset 'VARIVEL DE COMANDO PARA INSERIR OD DADOS Dim sql As String Set banco = New ADODB.Recordset 'DEFININDO INSTRUO A VARIVEL sql = " SELECT Nome, Setor, Cargo, Salario, Admisso, Matricula FROM Funcionario " sql = sql & " WHERE idFuncionario = " & Me.TextBox13.Text 'CONECTAR AO BANCO DE DADOS cx.Conectar 'EXECUTAR A SQL On Error Resume Next banco.Open sql, cx.Conn 'VARIVEIS DO BANCO DE DADOS Dim nNome As String Dim nSetor As String Dim nCargo As String Dim nSalario As String Dim nAdmisso As String Dim nMatricula As String 'ASSOCIANDO AS VARIVEIS AS COLUNAS DO BANCO DE DADOS nNome = banco.Fields("Nome") nSetor = banco.Fields("Setor") nCargo = banco.Fields("Cargo") nSalario = banco.Fields("Salario") nAdmisso = banco.Fields("Admisso") nMatricula = banco.Fields("Matricula") 'PREENCHENDO TEXTBOX COM OS DADOS DO BANCO DE DADOS Me.TextBox7.Text = nNome Me.TextBox8.Text = nSetor Me.TextBox9.Text = nCargo Me.TextBox10.Text = nSalario Me.TextBox11.Text = nAdmisso Me.TextBox12.Text = nMatricula

'FORMATAR TEXTBOX PARA RECEBER DADOS MONETRIOS Me.TextBox10.Text = Format(UserForm1.TextBox10.Text, "R$ #,###.00") 'DESCONECTAR PARA LIBERAR MEMRIA cx.Desconectar End Sub Observe que para pesquisar , basta digitar o numero do registro que foi gerado pelo access e depois buscar. Os dados ref ao registro aparecem no formulrio. Testem. At a proxima. abrao.
09-07-2010 por Jones_RB Citao:

Postado Originalmente por Coloniz@dor Ol a todos. Vamos agora exibir os dados do banco de dados do access afim de conseguirmos alterar ou ate masmo deletar o registro. Vamos para a aba alterao. Duplo click no boto busca. Inserir esse cdigo.
Cdigo:

Private Sub CommandButton4_Click() 'CHAMANDO A CLASSE CONEXO Dim cx As New ClasseConexao 'VARIVEL DE ARMAZENAMENTO DOS DADOS DO BANCO Dim banco As ADODB.Recordset 'VARIVEL DE COMANDO PARA INSERIR OD DADOS Dim sql As String Set banco = New ADODB.Recordset 'DEFININDO INSTRUO A VARIVEL sql = " SELECT Nome, Setor, Cargo, Salario, Admisso, Matricula FROM Funcionario " sql = sql & " WHERE idFuncionario = " & Me.TextBox13.Text 'CONECTAR AO BANCO DE DADOS cx.Conectar 'EXECUTAR A SQL On Error Resume Next banco.Open sql, cx.Conn 'VARIVEIS DO BANCO DE DADOS Dim nNome As String Dim nSetor As String Dim nCargo As String Dim nSalario As String

Dim nAdmisso As String Dim nMatricula As String 'ASSOCIANDO AS VARIVEIS AS COLUNAS DO BANCO DE DADOS nNome = banco.Fields("Nome") nSetor = banco.Fields("Setor") nCargo = banco.Fields("Cargo") nSalario = banco.Fields("Salario") nAdmisso = banco.Fields("Admisso") nMatricula = banco.Fields("Matricula") 'PREENCHENDO TEXTBOX COM OS DADOS DO BANCO DE DADOS Me.TextBox7.Text = nNome Me.TextBox8.Text = nSetor Me.TextBox9.Text = nCargo Me.TextBox10.Text = nSalario Me.TextBox11.Text = nAdmisso Me.TextBox12.Text = nMatricula 'FORMATAR TEXTBOX PARA RECEBER DADOS MONETRIOS Me.TextBox10.Text = Format(UserForm1.TextBox10.Text, "R$ #,###.00") 'DESCONECTAR PARA LIBERAR MEMRIA cx.Desconectar End Sub Observe que para pesquisar , basta digitar o numero do registro que foi gerado pelo access e depois buscar. Os dados ref ao registro aparecem no formulrio. Testem. At a proxima. abrao. Amigo... como fao uma frmula dentro do access?
10-07-2010 por Coloniz@dor

Excluindo registros Vamos agora Excluir determinado registro , para isso devemos indicar qual registro excluir , por isso a importncia da chave primria com auto numerao . Vamos na aba alterao , faa o como fez para alterar , digite o numero do registro no textbox e buscar. Se o registro exibido na tela for o que deseja excluir pronto. Duplo click no boto Deletar e inserir essa macro:
Cdigo:

Private Sub CommandButton3_Click() 'CHAMANDO A CLASSE CONEXO Dim cx As New ClasseConexao 'VARIVEL DE ARMAZENAMENTO DOS DADOS DO BANCO Dim banco As ADODB.Recordset 'VARIVEL DE COMANDO PARA INSERIR OD DADOS Dim sql As String

Set banco = New ADODB.Recordset 'DEFININDO INSTRUO A VARIVEL sql = " DELETE FROM Funcionario " 'DELETE INSTRUO SQL PARA DELETAR REGISTRO sql = sql & " WHERE idFuncionario = " & Me.TextBox13.Text 'CONECTAR AO BANCO DE DADOS cx.Conectar 'EXECUTAR A SQL On Error Resume Next banco.Open sql, cx.Conn 'CONFIRMAO DE EXCLUSO MsgBox "Funcionrio: " & Me.TextBox7.Text & " Alterado." 'DESCONECTAR PARA LIBERAR MEMRIA cx.Desconectar Me.TextBox7 = Empty Me.TextBox8 = Empty Me.TextBox9 = Empty 'LIMPA OS CAMPOS PARA NOVA CONSULTA Me.TextBox10 = Empty Me.TextBox11 = Empty Me.TextBox12 = Empty Me.TextBox13 = Empty Me.TextBox13.SetFocus ' FOCO NA TEXTBOX ID End Sub at a proxima. abrao.
12-07-2010 por Coloniz@dor

Pesquisa pelo Nome Vamos agora criar uma rotina para pesquisa no campo nome do funcionrio , observe que vc poder fazer um filtro podendo ser digitado desde a 1 letra at o nome todo. Na aba pesquisa 1 duplo click no boto filtra do campo "Buscar pelo Nome" e inserir esta macro.
Cdigo:

Private Sub CommandButton5_Click() 'CHAMANDO A CLASSE CONEXO Dim cx As New ClasseConexao 'VARIVEL DE ARMAZENAMENTO DOS DADOS DO BANCO Dim banco As ADODB.Recordset 'VARIVEL DE COMANDO PARA INSERIR OD DADOS Dim sql As String Set banco = New ADODB.Recordset 'DEFININDO INSTRUO A VARIVEL sql = " SELECT * FROM Funcionario " sql = sql & " WHERE Nome LIKE '" & Me.TextBox14.Text & "%' " Range("dados").Clear 'CONECTAR AO BANCO DE DADOS cx.Conectar 'EXECUTAR A SQL

banco.Open sql, cx.Conn 'DECLARANDO VARIVEL PARA LOCAL QUE RECEBER OS DADOS NA PLANILHA Dim xls As Excel.Worksheet Set xls = Sheets("Plan2") xls.Range("A2").CopyFromRecordset banco 'CONFIGURANDO LISTBOX Me.ListBox1.RowSource = "dados" Me.ListBox1.ColumnHeads = True Me.ListBox1.ColumnCount = 7 Me.ListBox1.ColumnWidths = "60pt;150pt;100pt;150pt" 'DESCONECTAR PARA LIBERAR MEMRIA cx.Desconectar End Sub at a proxima. abrao.
13-07-2010 por Coloniz@dor

Pesquisar por Matrcula Vamos agora criar o cdigo que busca o funcionrio pelo numero da matrcula. Na aba pesquisa1 , no campo buscar por matrcula , duplo click no boto filtrar , inserir o cdigo abaixo.
Cdigo:

Private Sub CommandButton6_Click() 'CHAMANDO A CLASSE CONEXO Dim cx As New ClasseConexao 'VARIVEL DE ARMAZENAMENTO DOS DADOS DO BANCO Dim banco As ADODB.Recordset 'VARIVEL DE COMANDO PARA INSERIR OD DADOS Dim sql As String Set banco = New ADODB.Recordset 'DEFININDO INSTRUO A VARIVEL sql = " SELECT * FROM Funcionario " sql = sql & " WHERE Matricula = " & Me.TextBox15.Text Range("dados").Clear 'CONECTAR AO BANCO DE DADOS cx.Conectar 'EXECUTAR A SQL On Error Resume Next banco.Open sql, cx.Conn 'DECLARANDO VARIVEL PARA LOCAL QUE RECEBER OS DADOS NA PLANILHA Dim xls As Excel.Worksheet Set xls = Sheets("Plan2") xls.Range("A2").CopyFromRecordset banco 'CONFIGURANDO LISTBOX Me.ListBox1.RowSource = "dados" Me.ListBox1.ColumnHeads = True Me.ListBox1.ColumnCount = 7 Me.ListBox1.ColumnWidths = "60pt;150pt;100pt;150pt"

'DESCONECTAR PARA LIBERAR MEMRIA cx.Desconectar End Sub Testem at a proxima. abrao.
15-07-2010 por Coloniz@dor

Filtrando por datas Vamos agora filtrar os dados pelo intervalo de datas , esse assunto sempre foi muito procurado , agora acabou o problema. na aba Pesquisa 1 , no campo de pesquisa por data de admisso , duplo click em filtrar e inserir esse cdigo.
Cdigo:

Private Sub CommandButton7_Click() 'CHAMANDO A CLASSE CONEXO Dim cx As New ClasseConexao 'VARIVEL DE ARMAZENAMENTO DOS DADOS DO BANCO Dim banco As ADODB.Recordset 'VARIVEL DE COMANDO PARA INSERIR OD DADOS Dim sql As String Set banco = New ADODB.Recordset 'DEFININDO INSTRUO A VARIVEL sql = " SELECT * FROM Funcionario " sql = sql & " WHERE Admisso " sql = sql & " BETWEEN '" & Me.TextBox16.Text & "' " sql = sql & " AND '" & Me.TextBox17.Text & "'" Range("dados").Clear 'CONECTAR AO BANCO DE DADOS cx.Conectar 'EXECUTAR A SQL On Error Resume Next banco.Open sql, cx.Conn 'DECLARANDO VARIVEL PARA LOCAL QUE RECEBER OS DADOS NA PLANILHA Dim xls As Excel.Worksheet Set xls = Sheets("Plan2") xls.Range("A2").CopyFromRecordset banco 'CONFIGURANDO LISTBOX Me.ListBox1.RowSource = "dados" Me.ListBox1.ColumnHeads = True Me.ListBox1.ColumnCount = 7 Me.ListBox1.ColumnWidths = "60pt;150pt;100pt;150pt" 'DESCONECTAR PARA LIBERAR MEMRIA cx.Desconectar End Sub Testem utilizando um intervalo de datas. al a proxima.

abrao.

16-07-2010 por Coloniz@dor

Carregar os dados no ListView Bom pessoal , por ultimo e no menos importante , vamos agora carregar os dados em um ListView , veja como fica melhor em comparao ao listbox. Na aba pesquisa II , duplo click em carregar e inserir essa macro:
Cdigo:

Private Sub CommandButton8_Click() 'CHAMANDO A CLASSE CONEXO Dim cx As New ClasseConexao 'VARIVEL DE ARMAZENAMENTO DOS DADOS DO BANCO Dim banco As ADODB.Recordset 'VARIVEL DE COMANDO PARA INSERIR OD DADOS Dim sql As String Set banco = New ADODB.Recordset 'DEFININDO INSTRUO A VARIVEL sql = " SELECT * FROM Funcionario " cx.Conectar 'CONFIGURAR VARIVEL RECORSET With banco .CursorType = adOpenKeyset .CursorLocation = adUseClient .Source = sql .ActiveConnection = cx.Conn .Open End With 'FORMATANDO O LISTVIEW 'CRIANDO OS CABEALHOS Me.ListView1.ListItems.Clear Me.ListView1.View = lvwReport Me.ListView1.Gridlines = True Me.ListView1.ColumnHeaders.Add Me.ListView1.ColumnHeaders.Add Me.ListView1.ColumnHeaders.Add Me.ListView1.ColumnHeaders.Add Me.ListView1.ColumnHeaders.Add Me.ListView1.ColumnHeaders.Add Me.ListView1.ColumnHeaders.Add

, , , , , , ,

, , , , , , ,

"id Funcionrio" "Nome" "Setor" "Cargo" "Salario" "Admisso" "Matrcula" = = = = = = = 70 150 150 150 80 80 80

'DEFININDO A LARGURA DAS COLUNAS Me.ListView1.ColumnHeaders(1).Width Me.ListView1.ColumnHeaders(2).Width Me.ListView1.ColumnHeaders(3).Width Me.ListView1.ColumnHeaders(4).Width Me.ListView1.ColumnHeaders(5).Width Me.ListView1.ColumnHeaders(6).Width Me.ListView1.ColumnHeaders(7).Width Me.ListView1.FullRowSelect = True Dim itens As ListItem 'PREENCHENDO O LISTVIEW While Not banco.EOF

Set itens = Me.ListView1.ListItems.Add(, , banco(0)) itens.SubItems(1) = "" & banco(1) itens.SubItems(2) = "" & banco(2) itens.SubItems(3) = "" & banco(3) itens.SubItems(4) = "" & banco(4) itens.SubItems(5) = "" & banco(5) itens.SubItems(6) = "" & banco(6) banco.MoveNext Wend cx.Desconectar End Sub Pronto pessoal , esses so os passos bsicos para se montar um programa bem elaborado no Excel , espero que tenham gostado. abrao a todos.
24-07-2010 por Depoisteconto Citao:

Postado Originalmente por Coloniz@dor Para conexo com o banco de dados , quando o programa que estamos criando requer vrias consultas , para no ter que fica digitando todas vez o provedor e local do banco de dados , a melhor e mais prtica maneira criar uma classe. Vamos l. No editor do VBA v em inserir Mdulo Classe e renomei a para - ClasseConexo. Inserir esta cdigo :
Cdigo:

'################################### 'CLASSE PARA CONEXO COM BANCO DE 'DADOS ACCESS '################################### Public Conn As New ADODB.Connection 'DECLARAO DA VARIVEL DE CONEXO Public Sub Conectar() '***************************' 'VARIVEL STRING QUE INDICA ' 'PROVEDOR E LOCAL DO BANCO ' 'DE DADOS ACCESS ' '***************************' Dim nConectar As String nConectar = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Base.mdb" Conn.ConnectionString = nConectar Conn.Open 'CONEXO ABERTA End Sub Public Sub Desconectar() Conn.Close 'CONEXO FECHADA End Sub ' Ento toda vez que precisar se conectar basta chamar a classe. Vamos agora preparar nosso formulrio para inserir registro: 1 Vamos formatar o textbox de Admisso para receber valores no formato de data.

Inserir esse cdigo no textbox5:


Cdigo:

Private Sub TextBox5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If Len(Me.TextBox5) = 2 Or Len(Me.TextBox5) = 5 Then Me.TextBox5.Text = Me.TextBox5.Text & "/" SendKeys "{END}", True End If Me.TextBox5.MaxLength = 10 'DEFINE O NUMEROS DE CARACTERES NO TEXTBOX End Sub ' Com isso , quando for digitar , ir ficar com mscara de data , s precisa digitar os numeros. testem. Feita isso , vamos ao csdigo que inseri os novos registro. Preencham os dados. Inserir este cdigo no boto inserir.
Cdigo:

Private Sub CommandButton1_Click() 'CHAMANDO A CLASSE CONEXO Dim cx As New ClasseConexao 'VARIVEL DE ARMAZENAMENTO DOS DADOS DO BANCO Dim banco As ADODB.Recordset 'VARIVEL DE COMANDO PARA INSERIR OD DADOS Dim sql As String Set banco = New ADODB.Recordset 'DEFININDO INSTRUO A VARIVEL sql = " INSERT INTO Funcionario( Nome, Setor, Cargo, Salario, Admisso, Matricula )" sql = sql & " VALUES ( " sql = sql & " '" & Me.TextBox1.Text & "', " sql = sql & " '" & Me.TextBox2.Text & "', " sql = sql & " '" & Me.TextBox3.Text & "', " 'INSERT INTO , INSTRUO SQL PARA INSERIR DADOS sql = sql & " '" & Me.TextBox4.Text & "', " sql = sql & " '" & Me.TextBox5.Text & "', " sql = sql & " '" & Me.TextBox6.Text & "' ) " 'CONECTAR AO BANCO DE DADOS cx.Conectar 'EXECUTAR A SQL On Error Resume Next banco.Open sql, cx.Conn 'CONFIRMAO DE REGISTRO MsgBox "Funcionrio: " & Me.TextBox1.Text & " Cadastrado." 'DESCONECTAR PARA LIBERAR MEMRIA cx.Desconectar Me.TextBox1 = Empty Me.TextBox2 = Empty Me.TextBox3 = Empty 'LIMPA OS CAMPOS PARA NOVO REGISTRO Me.TextBox4 = Empty Me.TextBox5 = Empty Me.TextBox6 = Empty Me.TextBox1.SetFocus ' FOCO NA TEXTBOX NOME

End Sub ' Faam vrios cadastros para testar , se houver erros , favor postarem. At a proxima. abrao. Coloniz@ador, em tempo... Utilizando os anexos, sendo base salva em C:, quando mando inserir aparece o erro: O tipo definido pelo usurio nao foi definido cx As New ClasseConexao Tem alguma coisa haver com o name do modulo de classe Renomei ClasseConexo A declarao da varivel est ClasseConexao Alguma coisa haver? At
25-07-2010 por Jones_RB

Ops... como fao para colocar senha no banco de dados e qdo gravar, alterar, deletar e importar dados, funcione certinho?
26-07-2010 por Coloniz@dor Citao:

Postado Originalmente por Depoisteconto Coloniz@ador, em tempo... Utilizando os anexos, sendo base salva em C:, quando mando inserir aparece o erro: O tipo definido pelo usurio nao foi definido cx As New ClasseConexao Tem alguma coisa haver com o name do modulo de classe Renomei ClasseConexo A declarao da varivel est ClasseConexao Alguma coisa haver? At Tire o assento de conexo , deixe assim - ClasseConexao.

Você também pode gostar