Logo Hardware.com.br
BrunoEvans
BrunoEvans Novo Membro Registrado
40 Mensagens 2 Curtidas

[Resolvido] VBA - Planilha para controle de Funcionários

#1 Por BrunoEvans 08/04/2015 - 11:51
Pessoal, mais uma vez recorro ao fórum!
Tenho um arquivo, em excel (com userform) onde eu faço o cadastro de exclusão de funcionarios da empresa. (creditos: Coloniz@dor)
O formulário (VBA) tem ligação com o banco de dados do Access (.mdb) ... O que eu preciso é "atualizar" estas informações.
Tenho pouco conhecimento em VBA ainda ... Se alguem puder me ajudar ... obrigado! wink.png

Anexos

BrunoEvans
BrunoEvans Novo Membro Registrado
40 Mensagens 2 Curtidas
#3 Por BrunoEvans
08/04/2015 - 13:08
Por exemplo, eu tenho o formulario. Ai eu faço a pesquisa de um funcionario, então eu quero alterar o salario. Não consigo fazer com que esta alteração do salario, passe para o banco (Base.mdb).

O código que tenho:


'CHAMANDO A CLASSE CONEXÃO
Dim nConectar As New ClasseConexao
'VARIÁVEL DE ARMAZENAMENTO DOS DADOS DO BANCO
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 = " UPDATE Nome, Setor, Cargo, Salario, Admissão, Matricula FROM Funcionario "
sql = sql & " WHERE idFuncionario = " & Me.TextBox13.Text

'CONECTAR AO BANCO DE DADOS
nConectar.Conectar

'EXECUTAR A SQL
On Error Resume Next
banco.Open sql, nConectar.Conn
'VARIÁVEIS DO BANCO DE DADOS
Dim nNome As String
Dim nSetor As String
Dim nCargo As String
Dim nSalario As String
Dim nAdmissão As String
Dim nMatricula As String

'ASSOCIANDO AS VARIÁVEIS AS COLUNAS DO BANCO DE DADOS
nNome = banco.Fields("Nome&quot
nSetor = banco.Fields("Setor&quot
nCargo = banco.Fields("Cargo&quot
nSalario = banco.Fields("Salario&quot
nAdmissão = banco.Fields("Admissão&quot
nMatricula = banco.Fields("Matricula&quot

'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 = nAdmissão
Me.TextBox12.Text = nMatricula

'DESCONECTAR PARA LIBERAR MEMÓRIA
nConectar.Desconectar
BrunoEvans
BrunoEvans Novo Membro Registrado
40 Mensagens 2 Curtidas
#5 Por BrunoEvans
10/04/2015 - 16:59
Basole,
estou com um problema. não estou conseguindo atualizar os dados. Aparece o erro "Erro em tempo de execução '-2147217904" (80040e10)': Nenhum valor foi fornecido para um ou mais parâmetros necessários."

Private Sub btnATUALIZAR_Click()
'-----------------------------------------------------------------------------------------------
' ATUALIZA O CADASTRO QUE FOI PESQUISADO
'-----------------------------------------------------------------------------------------------
Dim nConectar As New ClasseConexao
Dim banco As ADODB.Recordset
Dim sql As String

'ALTERA OS DADOS DO REGISTRO QUE CONTEM A MATRÍCULA
sql = "UPDATE TURMAS" & _
" SET TP_TREINAMENTO = '" & Me.txtTIPOTREINA.Text & "'" & _
", NM_OPERACAO = '" & Me.txtOPERACAO.Text & "'" & _
", N_TURMA = '" & Me.txtNUMTURMA.Text & "'" & _
", DT_INICIO = '" & Me.txtINICIO.Text & "'" & _
", DT_ENTREGA = '" & Me.txtENTREGA.Text & "'" & _
", HR_TREINA = '" & Me.txtHORATREINA.Text & "'" & _
", SL_TREINA = '" & Me.txtSALA.Text & "'" & _
", NM_SOLICITANTE = '" & Me.txtSOLICITANTE.Text & "'" & _
", NM_INSTRUTOR = '" & Me.txtINSTRUTOR.Text & "'" & _
", TL_TREINA = '" & Me.txtDIASTREINA.Text & "'" & _
" WHERE IDTURMA = " & Me.txtCODIGO.Text

Set banco = New ADODB.Recordset

'CONECTAR AO BANCO DE DADOS
nConectar.Conectar

'EXECUTAR A SQL
'On Error Resume Next
banco.Open sql, nConectar.Conn

MsgBox "Dados Alterados com sucesso!"

Me.txtOPERACAO = Empty
Me.txtTIPOTREINA = Empty
Me.txtNUMTURMA = Empty 'LIMPA OS CAMPOS PARA NOVO REGISTRO
Me.txtINICIO = Empty
Me.txtENTREGA = Empty
Me.txtHORATREINA = Empty
Me.txtSALA = Empty
Me.txtSOLICITANTE = Empty
Me.txtDIASTREINA = Empty
Me.txtINSTRUTOR = Empty

nConectar.Desconectar
Set banco = Nothing
Exit Sub
End Sub
Basole
Basole Geek Registrado
945 Mensagens 596 Curtidas
#6 Por Basole
13/04/2015 - 18:09
Em cima do exemplo, voce acrescentou controles, alterou o nome dos textbox no entanto nao consegui perceber nenhuma anormalidade no codigo.
O ideal seria se pudesse compartilhar seu exemplo e bd, alterando os dados confidenciais para fiticios, para podermos testa-lo e detectar alguma coisa que não esteja visivel aos sóios

abx.
Click em Curtir se a resposta foi útil. boa.gif Dê retorno por favor. Se resolveu, atencao_regras.gif Altere o Titulo como [ Resolvido ] comemorando.gif
BrunoEvans
BrunoEvans Novo Membro Registrado
40 Mensagens 2 Curtidas
#7 Por BrunoEvans
13/04/2015 - 18:53
Basole, em anexo o arquivo.
No primeiro exemplo que te mandei, funciona perfeita mente. Porem, quando fui recplicar para este outro arquivo ... parou de funcionar... fica dando o erro "Erro em tempo de execução '-2147217904" (80040e10)': Nenhum valor foi fornecido para um ou mais parâmetros necessários."

O form que estou aplicando estes comando é o frmNOVATURMA ...
Outra coisa ... eu tenho muitas txtbox no formulario e, utilizando o codigo que você me enviou, acaba dando erro, como "excesso de quebra de linha" temoutra forma de fazer esta relação, sem utilizar a quebra de linha?

mais uma vez ... vlw pela ajuda! smile.png

Anexos

Basole
Basole Geek Registrado
945 Mensagens 596 Curtidas
#8 Por Basole
14/04/2015 - 14:57
O erro causado é pelo motivo de tentar inseri um valor no formato de texto ( código IdTurma, é composto por numeros e letras )
Então eu inseri as aspas simples. Altere esta linha: " WHERE IDTURMA = " & Me.txtCODIGO.Text por esta:
" WHERE IDTURMA = '" & Me.txtCODIGO.Text  & "'"


Outra coisa ... eu tenho muitas txtbox no formulario e, utilizando o codigo que você me enviou, acaba dando erro, como "excesso de quebra de linha" temoutra forma de fazer esta relação, sem utilizar a quebra de linha?

Não entendi a qual userform voce esta se referindo...
Click em Curtir se a resposta foi útil. boa.gif Dê retorno por favor. Se resolveu, atencao_regras.gif Altere o Titulo como [ Resolvido ] comemorando.gif
BrunoEvans
BrunoEvans Novo Membro Registrado
40 Mensagens 2 Curtidas
#9 Por BrunoEvans
14/04/2015 - 18:06
Basole, me refiro ao código abaixo. Pois, tenho 36 textbox e combobox no formulario.
Porem, não estou conseguindo incluir mais que 24 textbox no código. pois o VBA acusa "número excessivo de continuações de linhas"
Tem um outro jeito de fazer?

Private Sub btnATUALIZAR_Click()
'-----------------------------------------------------------------------------------------------
' ATUALIZA O CADASTRO QUE FOI PESQUISADO
'-----------------------------------------------------------------------------------------------
Dim nConectar As New ClasseConexao
Dim banco As ADODB.Recordset
Dim sql As String

'ALTERA OS DADOS DO REGISTRO QUE CONTEM A MATRÍCULA
sql = "UPDATE TURMAS" & _
" SET TP_TREINAMENTO = '" & Me.txtTIPOTREINA.Text & "'" & _
", NM_OPERACAO = '" & Me.txtOPERACAO.Text & "'" & _
", N_TURMA = '" & Me.txtNUMTURMA.Text & "'" & _
", DT_INICIO = '" & Me.txtINICIO.Text & "'" & _
", DT_ENTREGA = '" & Me.txtENTREGA.Text & "'" & _
", ADMISSAO = '" & Me.txtADMISSAO.Text & "'" & _
", HR_TREINA = '" & Me.txtHORATREINA.Text & "'" & _
", SL_TREINA = '" & Me.txtSALA.Text & "'" & _
", NM_SOLICITANTE = '" & Me.txtSOLICITANTE.Text & "'" & _
", TL_TREINA = '" & Me.txtDIASTREINA.Text & "'" & _
", NM_INSTRUTOR = '" & Me.txtINSTRUTOR.Text & "'" & _
", ST_TREINA = '" & Me.txtSTATUS.Text & "'" & _
", HR_TRABLHO_1 = '" & Me.txtHRTRAB1.Text & "'" & _
", QT_SOLICITADO_1 = '" & Me.txtQTSOLI1.Text & "'" & _
", QT_RECRUTADO_1 = '" & Me.txtQTREC1.Text & "'" & _
", CRG_HORARIA_1 = '" & Me.TXTCRGHR1.Text & "'" & _
", HR_TRABLHO_2 = '" & Me.txtHRTRAB2.Text & "'" & _
", QT_SOLICITADO_2 = '" & Me.txtQTSOLI2.Text & "'" & _
", QT_RECRUTADO_2 = '" & Me.txtQTREC2.Text & "'" & _
", CRG_HORARIA_2 = '" & Me.TXTCRGHR2.Text & "'" & _
", HR_TRABLHO_3 = '" & Me.txtHRTRAB3.Text & "'" & _
", QT_SOLICITADO_3 = '" & Me.txtQTSOLI3.Text & "'" & _
", QT_RECRUTADO_3 = '" & Me.txtQTREC3.Text & "'" & _
" WHERE IDTURMA LIKE '" & Me.txtCODTURMA.Text & "%' "

Set banco = New ADODB.Recordset

'CONECTAR AO BANCO DE DADOS
nConectar.Conectar

'EXECUTAR A SQL
On Error Resume Next
banco.Open sql, nConectar.Conn

MsgBox "Dados Alterados com sucesso!"

Me.txtOPERACAO = Empty
Me.txtTIPOTREINA = Empty
Me.txtNUMTURMA = Empty 'LIMPA OS CAMPOS PARA NOVO REGISTRO
Me.txtINICIO = Empty
Me.txtENTREGA = Empty
Me.txtHORATREINA = Empty
Me.txtSALA = Empty
Me.txtSOLICITANTE = Empty
Me.txtDIASTREINA = Empty
Me.txtINSTRUTOR = Empty

nConectar.Desconectar
Set banco = Nothing
Exit Sub
End Sub
BrunoEvans
BrunoEvans Novo Membro Registrado
40 Mensagens 2 Curtidas
#11 Por BrunoEvans
17/04/2015 - 15:27
Iiiii ai!
Cara, consegui resolver meu problema rsrs
Não era como eu queria mãããããs ... tirei as quebras de linha e consegui inserir mais textbox.

Agora, estou com uma duvida sobre o ACCESS rsrsrs Vou perguntar aqui mesmo ... [HASHTAG]#desculpasefizerrado[/HASHTAG]

Quero fazer um "CONT.SE" (sei que essa função pertence apenas ao Excel mas sei também que há algo parecido no ACCESS)
Por exemplo.
Tenho uma tabela com 10 colunas. Na coluna 1 tenho o "nome" e nas demais colunas tenho a numeração de 1 a 9 (títulos das colunas). Quero fazer uma contagem na horizontal, (Exatamente como a formula do CONT.SE "=CONT.SE(B1:J1;"P")"
Alguem sabe como fazer isso? Ah, outra coisa ... não entendo muito o "sql" então, se puderem me falar a formula que eu possa inserir no "designe de consulta" seria bem legal! ^^,
BrunoEvans
BrunoEvans Novo Membro Registrado
40 Mensagens 2 Curtidas
#12 Por BrunoEvans
06/05/2015 - 14:19
iiiii ai pessoal! tudo bem?
Então, sei que faz quase 1 mes desde a minha ultima postagem mas, ainda sobre o assunto do topico.
Quero criar uma "consulta" com um combobox, como a imagem abaixo mostra tenho duas opções "REGISTRO" e "IDMONITORIA".
Anexo do post
Ambos são números. Estes nomes são os mesmos nomes da tabela no Access. o problema é que ue nao sei como trabalhar com isso.
Tentei criar uma variavel e incluir ela dentro do codigo, será que alguem saberia me ajudar? smile.png
Obs.: o "txtTIPO" é o combobox e "txtBUSCAID" é o campo ao lado para preencher.

 Dim nConectar As New ClasseConexao
Dim banco As ADODB.Recordset
Dim sql As String
Dim sTipo As String

sTipo = Me.txtTIPO.Text

Set banco = New ADODB.Recordset
sql = " SELECT MT_Monitor, NM_Monitor, Periodo, Matricula, Operador, DAC, Admissao, NM_Supervisor, Status, IDMONITORIA, Nota, DataLigacao, HoraLigacao, DataMonitoria, TipoMonitoria, SistemaOp, LoginOp, TabulacaoOp1, DataAplicado, DataFeedback, BO, PLURIS_NCG1, PLURIS_NCG2, PLURIS_NCG3, PLURIS_NCG4, PLURIS_NCG5, PLURIS_NCG6, PLURIS_NCG7, PLURIS_NCG8, PLURIS_NCG9, Memorando, MotivoDesconto, ParecerPluris, SiteMonitor, REGISTRO FROM MONITORIAS "
sql = sql & " WHERE " & sTipo & " = " & Me.txtBUSCAID.Text

nConectar.Conectar

Anexos

© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal