Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Acumular dados para um mesmo cliente [RESOLVIDO]
Acumular dados para um mesmo cliente [RESOLVIDO]
Boa Tarde a todos..
Como é difícil ser novo no assunto mas vamos tentando evoluir...rsrs!!!
Estou com um problema na verdade de raciocinio...rsrs!!!
Como faço para acumular vários dados para um mesmo cliente. Ex:
Chamo um Paciente e tenho duas TextBox uma (data) e uma (Descrição) e uma ListBox(relatorio), quando escrevo algo sobre aquele paciente clico em um botão ok, assim a ListBox recebera os dados daquele dia e assim vai acontecer sempre.
Quando eu chamar novamente esse Paciente então ele teria que carregar todo o relatório do mesmo.
não consegui pensar me nada, Alguém teria uma solução?
Agradeço desde já
Como é difícil ser novo no assunto mas vamos tentando evoluir...rsrs!!!
Estou com um problema na verdade de raciocinio...rsrs!!!
Como faço para acumular vários dados para um mesmo cliente. Ex:
Chamo um Paciente e tenho duas TextBox uma (data) e uma (Descrição) e uma ListBox(relatorio), quando escrevo algo sobre aquele paciente clico em um botão ok, assim a ListBox recebera os dados daquele dia e assim vai acontecer sempre.
Quando eu chamar novamente esse Paciente então ele teria que carregar todo o relatório do mesmo.
não consegui pensar me nada, Alguém teria uma solução?
Agradeço desde já
- Anexos
-
- erro_1.jpg (284.27 KiB) Exibido 6053 vezes
Editado pela última vez por jrlins em Seg Fev 06, 2017 8:37 pm, em um total de 1 vez.
-
- Acabou de chegar
- Mensagens: 3
- Registrado em: Ter Jan 31, 2017 11:02 am
-
- Manda bem
- Mensagens: 168
- Registrado em: Sáb Set 24, 2016 4:48 pm
Re: Acumular dados para um mesmo cliente
Realmente, sem a planilha fica um pouco mais complicado, mas se você tentar usar um comando "SE"
Re: Acumular dados para um mesmo cliente
Boa noite, Jr. Lins
Sem a planilha fica difícil, ver abaixo se te ajuda.
Primeiro criar uma variável tipo "busca registro" , segue um exemplo abaixo
Sub busca_regitros()
'Adiciona os dados a listbox
Dim linha As Integer
Dim codigo As String
Dim coluna As Integer
Dim LinLBox As Integer
Dim ContRegs As Integer
Set guia = ThisWorkbook.Worksheets("bancodedados")
LinLBox = 0
codigo = txt_codigo
linha = 2
ContRegs = 0
ListBox1.Clear
guia.Select
Do Until Sheets("bancodedados").Cells(linha, 1) = ""
If Sheets("bancodedaodos").Cells(linha, 1) = codigo Then
With ListBox1
.AddItem
.List(LinLBox, 0) = Cells(linha, 1) 'Data
.List(LinLBox, 1) = Cells(linha, 2) 'Descrição
End With
LinLBox = LinLBox + 1
ContRegs = ContRegs + 1
End If
linha = linha + 1
Loop
lbl_registros = "Total de Ocorrencia: " & ContRegs ' Conta registro de paciente
End Sub
Depois de criar a variavel acima coloque esta variavel dentro do botão do código para chamar o registro de ocorrência do mesmo paciente.
Grato
avgsantos
Sem a planilha fica difícil, ver abaixo se te ajuda.
Primeiro criar uma variável tipo "busca registro" , segue um exemplo abaixo
Sub busca_regitros()
'Adiciona os dados a listbox
Dim linha As Integer
Dim codigo As String
Dim coluna As Integer
Dim LinLBox As Integer
Dim ContRegs As Integer
Set guia = ThisWorkbook.Worksheets("bancodedados")
LinLBox = 0
codigo = txt_codigo
linha = 2
ContRegs = 0
ListBox1.Clear
guia.Select
Do Until Sheets("bancodedados").Cells(linha, 1) = ""
If Sheets("bancodedaodos").Cells(linha, 1) = codigo Then
With ListBox1
.AddItem
.List(LinLBox, 0) = Cells(linha, 1) 'Data
.List(LinLBox, 1) = Cells(linha, 2) 'Descrição
End With
LinLBox = LinLBox + 1
ContRegs = ContRegs + 1
End If
linha = linha + 1
Loop
lbl_registros = "Total de Ocorrencia: " & ContRegs ' Conta registro de paciente
End Sub
Depois de criar a variavel acima coloque esta variavel dentro do botão do código para chamar o registro de ocorrência do mesmo paciente.
Grato
avgsantos
Re: Acumular dados para um mesmo cliente
Boa Tarde a todos, desculpe-me pela demora em responder mas eu tive vários contra-tempos aqui.
Agradeço desde já a todos que tentam me ajudar, e digo que já resolvi boa parte aqui quebrando a cabeça, mas ainda não esta 100%.
So preciso agora carregar apenas o Relatório do mesmo cliente na listbox conforme imagem. anexo também linha de código do botão que que grava uma nova descrição e o preenchimento de lista.
Botão "ok"
Preenchimento de Lista
agradeço desde já.
Junior Lins
Agradeço desde já a todos que tentam me ajudar, e digo que já resolvi boa parte aqui quebrando a cabeça, mas ainda não esta 100%.
So preciso agora carregar apenas o Relatório do mesmo cliente na listbox conforme imagem. anexo também linha de código do botão que que grava uma nova descrição e o preenchimento de lista.
Botão "ok"
Código: Selecionar todos
Private Sub CmdOkRelat_Click()
Worksheets("Relatorios").Activate
Plan3.Range("A2").Select
If Trim(Me.TextDescPac.Value) = "" Then
Me.TextDescPac.SetFocus
MsgBox "Por favor insira uma descrição", vbInformation, "Cadastro de Paciêntes"
Exit Sub
End If
Do
If Not (IsEmpty(ActiveCell)) Then
ActiveCell.Offset(1, 0).Select
End If
Loop Until IsEmpty(ActiveCell) = True
EnumeraContatos
ActiveCell.Offset(0, 1).Value = TextCodigo.Text
ActiveCell.Offset(0, 2).Value = TextNome.Text
ActiveCell.Offset(0, 3).Value = TextDtDescPac.Text
ActiveCell.Offset(0, 4).Value = TextDescPac.Text
TextDtDescPac.Text = ""
TextDescPac = ""
ActiveWorkbook.Save
MsgBox "Relatório salvo com sucesso", vbInformation, "Cadastro de Paciêntes"
PreencherListBox
End Sub
Código: Selecionar todos
Sub PreencherListBox()
Dim lastRow As Long
Dim i As Integer
lst_DescPaci.Clear
With lst_DescPaci
'define nº colunas
.ColumnCount = 3
End With
' Verifica qual a ultima linha preenchida
lastRow = Plan3.Range("A65000").End(xlUp).Row
'adiciona dados
For i = 2 To lastRow
Me.lst_DescPaci.AddItem Plan3.Range("B" & i)
Me.lst_DescPaci.List(Me.lst_DescPaci.ListCount - 1, 1) = Plan3.Range("D" & i)
Me.lst_DescPaci.List(Me.lst_DescPaci.ListCount - 1, 2) = Plan3.Range("E" & i)
Next
End Sub
Junior Lins
- Anexos
-
- duvida.jpg (269.27 KiB) Exibido 5975 vezes
Re: Acumular dados para um mesmo cliente
jrlins,
Creio que o que está ocorrendo seja o seguinte :
No código postado que preenche o relatório, não há uma verificação baseada no paciente.
Seu código :
Código com a verificação de dados:
Experimente e retorne ok?
Abs
End Sub
Creio que o que está ocorrendo seja o seguinte :
No código postado que preenche o relatório, não há uma verificação baseada no paciente.
Seu código :
Código: Selecionar todos
Sub PreencherListBox()
Dim lastRow As Long
Dim i As Integer
lst_DescPaci.Clear
With lst_DescPaci
'define nº colunas
.ColumnCount = 3
End With
' Verifica qual a ultima linha preenchida
lastRow = Plan3.Range("A65000").End(xlUp).Row
'adiciona dados
For i = 2 To lastRow
Me.lst_DescPaci.AddItem Plan3.Range("B" & i)
Me.lst_DescPaci.List(Me.lst_DescPaci.ListCount - 1, 1) = Plan3.Range("D" & i)
Me.lst_DescPaci.List(Me.lst_DescPaci.ListCount - 1, 2) = Plan3.Range("E" & i)
Next
End Sub
Código: Selecionar todos
Sub PreencherListBox()
Dim lastRow As Long
Dim i As Integer
lst_DescPaci.Clear
With lst_DescPaci
'define nº colunas
.ColumnCount = 3
End With
' Verifica qual a ultima linha preenchida
lastRow = Plan3.Range("A65000").End(xlUp).Row
'adiciona dados
For i = 2 To lastRow
'Aqui checamos se a linha atual tem o valor igual ao ID do paciente
If Cells(i,"A")=campoIDPaciente Then 'Insira o nome do campo onde está o ID do Paciente
Me.lst_DescPaci.AddItem Plan3.Range("B" & i)
Me.lst_DescPaci.List(Me.lst_DescPaci.ListCount - 1, 1) = Plan3.Range("D" & i)
Me.lst_DescPaci.List(Me.lst_DescPaci.ListCount - 1, 2) = Plan3.Range("E" & i)
End If
Next
Abs
End Sub
Re: Acumular dados para um mesmo cliente
Obrigado pela pronta resposta srobles, ele sumiu não carregou mais nada... mas acho que onde tenho que trocar o campo campoIDPaciente ele teria que comparar na PLAN1 de onde ele realmente se origina. será que é isso? mas nao sei como fazer isso.Código com a verificação de dados:Experimente e retorne ok?Código: Selecionar todos
Sub PreencherListBox() Dim lastRow As Long Dim i As Integer lst_DescPaci.Clear With lst_DescPaci 'define nº colunas .ColumnCount = 3 End With ' Verifica qual a ultima linha preenchida lastRow = Plan3.Range("A65000").End(xlUp).Row 'adiciona dados For i = 2 To lastRow 'Aqui checamos se a linha atual tem o valor igual ao ID do paciente If Cells(i,"A")=campoIDPaciente Then 'Insira o nome do campo onde está o ID do Paciente Me.lst_DescPaci.AddItem Plan3.Range("B" & i) Me.lst_DescPaci.List(Me.lst_DescPaci.ListCount - 1, 1) = Plan3.Range("D" & i) Me.lst_DescPaci.List(Me.lst_DescPaci.ListCount - 1, 2) = Plan3.Range("E" & i) End If Next End Sub
Abs
Re: Acumular dados para um mesmo cliente
Acho que nesta imagem vai da pra entender o que eu realmente preciso
Segue o codigo que carrega a lista.
Essa lista esta sendo carregada a partir da Plan3("Relatorios") o Código do Paciente esta em Plan1 ("CadPaciente").
Agradeço desde já..
Junior Lins
Segue o codigo que carrega a lista.
Essa lista esta sendo carregada a partir da Plan3("Relatorios") o Código do Paciente esta em Plan1 ("CadPaciente").
Código: Selecionar todos
Sub PreencherListBox()
Dim lastRow As Long
Dim i As Integer
lst_DescPaci.Clear
With lst_DescPaci
'define nº colunas
.ColumnCount = 3
End With
' Verifica qual a ultima linha preenchida
lastRow = Plan3.Range("A65000").End(xlUp).Row
'adiciona dados
For i = 2 To lastRow
Me.lst_DescPaci.AddItem Plan3.Range("B" & i)
Me.lst_DescPaci.List(Me.lst_DescPaci.ListCount - 1, 1) = Plan3.Range("D" & i)
Me.lst_DescPaci.List(Me.lst_DescPaci.ListCount - 1, 2) = Plan3.Range("E" & i)
Next
End Sub
Agradeço desde já..
Junior Lins
- Anexos
-
- duvida2.jpg (254.94 KiB) Exibido 5945 vezes
Re: Acumular dados para um mesmo cliente
jrlins,
Os demais campos devem ter seus valores obtidos na planilha CadPaciente normalmente. Isso permanece inalterado.
Os dados obtidos da planilha Relatórios, preenchem o ListBox, correto?
Caso positivo, tente o que segue abaixo :
Aguardo retorno.
Abs
Os demais campos devem ter seus valores obtidos na planilha CadPaciente normalmente. Isso permanece inalterado.
Os dados obtidos da planilha Relatórios, preenchem o ListBox, correto?
Caso positivo, tente o que segue abaixo :
Código: Selecionar todos
Sub PreencherListBox()
Dim lastRow As Long
Dim i As Integer
lst_DescPaci.Clear
With lst_DescPaci
'define nº colunas
.ColumnCount = 3
End With
' Verifica qual a ultima linha preenchida
lastRow = Plan3.Range("A65000").End(xlUp).Row
'Desabilitamos a atualização de tela
Application.ScreenUpdating = False
'adiciona dados
'Selecionamos a planilha Relatórios
With ThisWorkBook.Sheets("Relatórios")
'Ativamos a planilha
.Activate
'Selecionamos a célula A2
Cells(2,"A").Select
'Com o laço For => Next, verificamos o valor da célula atual
For i = 2 To lastRow
'Para que não tenhamos de percorrer todas as 65000 linhas
'Caso a célula atual for igual nulo / branco, saimos do laço
If Cells(i,"A") = "" Then Exit For
'Caso o valor da célula atual for igual ao valor do ID do paciente, adicionamos esta linha ao ListBox
If Cells(i,"A") = TextBox_ID_Paciente Then
Me.lst_DescPaci.AddItem Cells(i, "B")
Me.lst_DescPaci.List(Me.lst_DescPaci.ListCount - 1, 1) = Cells(i, "D")
Me.lst_DescPaci.List(Me.lst_DescPaci.ListCount - 1, 2) = Cells(i, "E")
End If
Next
End With
'Selecionamos a planilha de cadastro de pacientes
ThisWorkBook.Sheets("CadPaciente").Activate
'Habilitamos a atualização de tela
Application.ScreeUpdating = True
End Sub
Abs