ATUALIZAR BD ACCESS VIA EXCEL SQL

MARXREIK 20/08/2013 08:12:55
#427824
Pessoal, criei um sistema que atualiza o access via sql macro nos formularios, mas nao consigo criar o codigo para alterar um ID especifico, creio que tenho que usar um Select e depois um Update?

Vejam meu código Insert e Delete que funciona: Eu carrego tudo em um form onde eu deveria criar a função sql para alterar, mas não consigo, alguém pode me ajudar baseando no códigos abaixo.

Obrigado

Dim banco As ADODB.Recordset
[ô]VARIÁVEL DE COMANDO PARA INSERIR OD DADOS
Dim sql As String
Set banco = New ADODB.Recordset
[ô]DEFININDO INSTRUÇÃO A VARIÁVEL
sql = [Ô] INSERT INTO Funcionario( Nome, Setor, Cargo, Salario, Admissão, Matricula )[Ô]
sql = sql & [Ô] VALUES ( [Ô]
sql = sql & [Ô] [ô][Ô] & Me.TextBox1.Text & [Ô][ô], [Ô]
sql = sql & [Ô] [ô][Ô] & Me.TextBox2.Text & [Ô][ô], [Ô]
sql = sql & [Ô] [ô][Ô] & Me.TextBox3.Text & [Ô][ô], [Ô] [ô]INSERT INTO , INSTRUÇÃO 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

[ô]CONFIRMAÇÃO DE REGISTRO
MsgBox [Ô]Funcionário: [Ô] & Me.TextBox1.Text & [Ô] Cadastrado.[Ô]
[ô]DESCONECTAR PARA LIBERAR MEMÓRIA
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 [ô]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Dim banco As ADODB.Recordset
[ô]VARIÁVEL DE COMANDO PARA INSERIR OD DADOS
Dim sql As String
Set banco = New ADODB.Recordset
[ô]DEFININDO INSTRUÇÃO A VARIÁVEL
sql = [Ô] DELETE FROM Funcionario [Ô] [ô]DELETE INSTRUÇÃO 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

[ô]CONFIRMAÇÃO DE EXCLUSÃO
MsgBox [Ô]Funcionário: [Ô] & Me.TextBox7.Text & [Ô] Alterado.[Ô]

[ô]DESCONECTAR PARA LIBERAR MEMÓRIA
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
FILMAN 22/08/2013 12:10:50
#427948
Resposta escolhida
Cara pelo que identifiquei creio que assim vai funcionar

Coloque a rotina dentro de um botão, mas lembre-se isso é somente um exmplo de +ou- como se faz uma alteração

Dim banco As ADODB.Recordset
[ô]VARIÁVEL DE COMANDO PARA ALTERAR OS DADOS
Dim sql As String
Set banco = New ADODB.Recordset
[ô]DEFININDO INSTRUÇÃO A VARIÁVEL
sql = [Ô] UPDATE Funcionario SET
sql = sql & [Ô]Nome=[ô][Ô] & Me.TextBox1.Text & [Ô][ô],[Ô]
sql = sql & [Ô]Setor=[ô][Ô] & Me.TextBox2.Text & [Ô][ô],[Ô]
sql = sql & [Ô]Cargo=[ô][Ô] & Me.TextBox3.Text & [Ô][ô],[Ô]
sql = sql & [Ô]Salario=[ô][Ô] & CDbl(Me.TextBox4.Text) & [Ô][ô],[Ô] [ô]Esse campo aqui deve ser varifica, pois não sei como esta o tipo dele na tabela
sql = sql & [Ô]Admissão=[ô]#[Ô] & Format(CDate(Me.TextBox5.Text), [Ô]dd/MM/yyyy[Ô]) & [Ô]#[ô] [Ô]
sql = sql & [Ô]WHERE Matricula = [Ô] & Me.TextBox6.Text


[ô]CONECTAR AO BANCO DE DADOS
cx.Conectar
[ô]EXECUTAR A SQL
On Error Resume Next
banco.Open sql, cx.Conn

[ô]CONFIRMAÇÃO DE REGISTRO
MsgBox [Ô]Dados Alterado com sucesso.[Ô]
[ô]DESCONECTAR PARA LIBERAR MEMÓRIA
cx.Desconectar
Me.TextBox1.SetFocus [ô] FOCO NA TEXTBOX NOME



Outra coisa é você pesquisar bastante sobre as função SQL, pois vai utiliza-la muito. Não basta pegar na Internet e tentar arrumar vai sempre ter trabalho para estudar a modela/estrutura de um sistema, pois cada programador pensa de uma maneira!

LEMBRE-SE ESTUDE BASTANTE

Estamos aqui para ajudar e não para entregar pronto a solução para os problemas #PenseNisso
MARXREIK 23/08/2013 21:13:24
#428044
Cara, realmente deu certo, e sua explicação sobre que cada programador pensa diferente realmente está correta.

Muito obrigado
Tópico encerrado , respostas não são mais permitidas