AJUDA COM IDEIA DE COMO FAZER DAR CERTO

KURTGU 27/08/2015 13:39:46
#450569
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.


RODRIGOFERRO 27/08/2015 18:57:03
#450574
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
KURTGU 27/08/2015 19:40:15
#450577
Caraca Hein Zero Quanto Tempo cara...KKKK Cara ja quebrei a cabeca a tarde toda com isso ta osso kkkkkk
KERPLUNK 27/08/2015 19:46:56
#450578
Resposta escolhida
Veja aí uma idéia...
KERPLUNK 27/08/2015 20:08:34
#450582

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.
KURTGU 27/08/2015 20:13:35
#450583
Caraca hein kkkkk
KERPLUNK 27/08/2015 20:20:57
#450584
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.
KURTGU 27/08/2015 20:40:18
#450585
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)
KURTGU 27/08/2015 20:42:18
#450586
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
KERPLUNK 27/08/2015 22:53:58
#450588
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
KURTGU 27/08/2015 23:15:24
#450589
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
Página 1 de 3 [30 registro(s)]
Tópico encerrado , respostas não são mais permitidas