AJUDA COM IDEIA DE COMO FAZER DAR CERTO
Pessoal Preciso de uma ideia de o que posso fazer pra isso da certo...
Tenho a tela abaixo... A planilha da onde vem estas informacoes tem no total de 14 pra mais ou pra menos de Sheet. Tentei de todas as formas agrupar e jogar estas informacoes na listview de baixo mais nao conseguir...
As informacoes de cima sao jogadas dentro de uma datatable desta forma...
Dim MyDataAdapter As New OleDbDataAdapter([Ô]Select * from [[Ô] & ([Ô]Sheet[Ô] & DomainUpDown1.Text) & [Ô]$][Ô], conn)
MyDataAdapter.Fill(dt)
Como Posso pegar a ultima coluna da Listview1 que sao as horas apontdas e ir jogando na listview2 abaixo isso sem usar o DomainUpDown1 numerico do canto...Pois vou mudando a numeracao e ele vai mudando a sheet.
Tenho a tela abaixo... A planilha da onde vem estas informacoes tem no total de 14 pra mais ou pra menos de Sheet. Tentei de todas as formas agrupar e jogar estas informacoes na listview de baixo mais nao conseguir...
As informacoes de cima sao jogadas dentro de uma datatable desta forma...
Dim MyDataAdapter As New OleDbDataAdapter([Ô]Select * from [[Ô] & ([Ô]Sheet[Ô] & DomainUpDown1.Text) & [Ô]$][Ô], conn)
MyDataAdapter.Fill(dt)
Como Posso pegar a ultima coluna da Listview1 que sao as horas apontdas e ir jogando na listview2 abaixo isso sem usar o DomainUpDown1 numerico do canto...Pois vou mudando a numeracao e ele vai mudando a sheet.
Fala meu brother tudo bom ? quanto tempo... me adiciona no skype =]
então posso te ajudar com a lógica mas tem anos que não programa em vb.net, voce sabe programar em C# ?
Aqui tem um exemplo de código pra você estudar, mas ele so esta lendo uma sheet, acredito que um foreach resolveria...
Best /Fastest way to read an Excel Sheet into a DataTable?
Abraços
então posso te ajudar com a lógica mas tem anos que não programa em vb.net, voce sabe programar em C# ?
Aqui tem um exemplo de código pra você estudar, mas ele so esta lendo uma sheet, acredito que um foreach resolveria...
Best /Fastest way to read an Excel Sheet into a DataTable?
Abraços
Caraca Hein Zero Quanto Tempo cara...KKKK Cara ja quebrei a cabeca a tarde toda com isso ta osso kkkkkk
Veja aà uma idéia...
Dim ubs As UBS = New UBS().GetUbs(j)
Bem no inÃcio. Onde [Ô]j[Ô] é o Ãndice da planilha a ser buscada. Ali, ele busca dados da UBS e os apontamentos referentes à ela. Rode o código passo a passo usando o F8 que você vai ver isso.
Só estou buscando pelo nome da unidade, mas poderia buscar de qualquer coisa que conste no cabeçalho, bastando inserir novas propriedades na classe UBS e preenchê-las na function [Ô]GetUbs[Ô], que como mencionei no código, necessita do tratamento de erros, para nulls ou outro erro qualquer.
Ela traz dados da UBS referente ao Ãndice, portanto você pode usar essa mesma função para preencher os dados do grid de cima, se quiser.
Caraca hein kkkkk
Ora, uso bem simplificado de OOP. E bem simplificado mesmo, não usei nada além de entidades simples e listas de objeto.
Notei pelo seu código que você apenas adaptou o que conhecia de VB6 e está usando a mesma metodologia no .NET, o que é um erro abissal. Por isso, isso que eu fiz parece algo bem avançado, mas garanto que não é. O caso é que esse método que usei, é muito diferente do que se usa em VB6, por isso você estranha tanto. Se você quiser expandir seus conhecimentos, você vai ter que esquecer esse método de programar que você está usando e remodelar tudo, desde o inÃcio.
Notei pelo seu código que você apenas adaptou o que conhecia de VB6 e está usando a mesma metodologia no .NET, o que é um erro abissal. Por isso, isso que eu fiz parece algo bem avançado, mas garanto que não é. O caso é que esse método que usei, é muito diferente do que se usa em VB6, por isso você estranha tanto. Se você quiser expandir seus conhecimentos, você vai ter que esquecer esse método de programar que você está usando e remodelar tudo, desde o inÃcio.
Vlw KeerpLuck um ultima pergunta se me permite sei que alguns cargos nao aparece em todas as sheets percebi que aqui voce chama os cargos e que desejo pegar na planilha como faco esse tratamento para cargo que nao esta naquela sheet?
[ô]o mesmo que essas duas linas para cada cargo que queira no list
Dim agente As Apontamento = DirectCast(unidade.Apontamentos.FirstOrDefault(Function(x) x.Cargo = [Ô]AGENTE COMUNITÃRIO DE SAÚDE[Ô]), Apontamento)
un.SubItems.Add(agente.TotalHorasApontadas)
Dim Auxiliar As Apontamento = DirectCast(unidade.Apontamentos.FirstOrDefault(Function(x) x.Cargo = [Ô]AUXILIAR DE SAÚDE BUCAL[Ô]), Apontamento)
un.SubItems.Add(Auxiliar.TotalHorasApontadas)
Dim dentista As Apontamento = DirectCast(unidade.Apontamentos.FirstOrDefault(Function(x) x.Cargo = [Ô]DENTISTA[Ô]), Apontamento)
un.SubItems.Add(dentista.TotalHorasApontadas)
Dim Enfermeiro As Apontamento = DirectCast(unidade.Apontamentos.FirstOrDefault(Function(x) x.Cargo = [Ô]ENFERMEIRO[Ô]), Apontamento)
un.SubItems.Add(Enfermeiro.TotalHorasApontadas)
Dim Medico As Apontamento = DirectCast(unidade.Apontamentos.FirstOrDefault(Function(x) x.Cargo = [Ô]MéDICO GENERALISTA[Ô]), Apontamento)
un.SubItems.Add(Medico.TotalHorasApontadas)
[ô]o mesmo que essas duas linas para cada cargo que queira no list
Dim agente As Apontamento = DirectCast(unidade.Apontamentos.FirstOrDefault(Function(x) x.Cargo = [Ô]AGENTE COMUNITÃRIO DE SAÚDE[Ô]), Apontamento)
un.SubItems.Add(agente.TotalHorasApontadas)
Dim Auxiliar As Apontamento = DirectCast(unidade.Apontamentos.FirstOrDefault(Function(x) x.Cargo = [Ô]AUXILIAR DE SAÚDE BUCAL[Ô]), Apontamento)
un.SubItems.Add(Auxiliar.TotalHorasApontadas)
Dim dentista As Apontamento = DirectCast(unidade.Apontamentos.FirstOrDefault(Function(x) x.Cargo = [Ô]DENTISTA[Ô]), Apontamento)
un.SubItems.Add(dentista.TotalHorasApontadas)
Dim Enfermeiro As Apontamento = DirectCast(unidade.Apontamentos.FirstOrDefault(Function(x) x.Cargo = [Ô]ENFERMEIRO[Ô]), Apontamento)
un.SubItems.Add(Enfermeiro.TotalHorasApontadas)
Dim Medico As Apontamento = DirectCast(unidade.Apontamentos.FirstOrDefault(Function(x) x.Cargo = [Ô]MéDICO GENERALISTA[Ô]), Apontamento)
un.SubItems.Add(Medico.TotalHorasApontadas)
Quando o cargo nao existir naquela sheet adicionar 0 na listview
Private _cargo As String
Public Property Cargo() As String
Get
Return _cargo
End Get
Set(ByVal value As String)
_cargo = value
End Set
End Property
Private _cargo As String
Public Property Cargo() As String
Get
Return _cargo
End Get
Set(ByVal value As String)
_cargo = value
End Set
End Property
Tem três opções:
1 - Quando procurar pela função [Ô]FirstOrDefault[Ô] e não for encontrado nenhum valor pelos critérios da expressão lambda, a variável deve ser null, nesse caso, o cargo não existe. Mas isso só funcionaria se não houvesse o DirectCast
2 - Fazer a procura antes, sem o DirectCast, e só fazer algo se for encontrado o valor.
3 - Essa é mais difÃcil, mas a mais correta. Percorrer os apontamentos para cada UBS e adicionar no listview somente os que existirem. Para isso, seria necessário uma terceira classe, chamada [Ô]Totalizadores[Ô] por exemplo, em que constariam os valores já totalizados para cada UBS
1 - Quando procurar pela função [Ô]FirstOrDefault[Ô] e não for encontrado nenhum valor pelos critérios da expressão lambda, a variável deve ser null, nesse caso, o cargo não existe. Mas isso só funcionaria se não houvesse o DirectCast
2 - Fazer a procura antes, sem o DirectCast, e só fazer algo se for encontrado o valor.
3 - Essa é mais difÃcil, mas a mais correta. Percorrer os apontamentos para cada UBS e adicionar no listview somente os que existirem. Para isso, seria necessário uma terceira classe, chamada [Ô]Totalizadores[Ô] por exemplo, em que constariam os valores já totalizados para cada UBS
KERPLUNK to lendo e pesquisando sobre OOP como nao conhecia nao sei nem por onde comecar dessas 3 opcoes pena...pois ficou da forma que precisa, mais vou continuar lendo pra ver se consigo chegar em algo...
http://www.codeproject.com/Articles/8825/Object-Oriented-Programming-In-VB-NET
http://www.codeproject.com/Articles/8825/Object-Oriented-Programming-In-VB-NET
Tópico encerrado , respostas não são mais permitidas