AJUDA COM CAMADAS!

PHOENIX209E 04/04/2012 14:20:16
#399102
Pessoas boa tarde,
espero que alguem possa me ajudar,o problema é um tanto complicadinho de entender.

é o seguinte,
eu tenho uma UI (User Interface),DTO(Data Transfer Objects),BLL(Business Layer Logic),DAL(Data Acess Layer)
muito bem,quem ja conhece camda fica mais facil.

Na UI tenho um treeView que vai ser preenchida com o Departamento e os IP[ô]s dos computadores que estao configurados para tal.

Na minha camada DTO tenho:

Namespace DTO_Estacao
Public Class ClasseDTO_Estacao
Dim _grupo As String
Dim _ipMaq As New ArrayList
Dim _keyWords As New ArrayList
[ô]São as palavras chaves que vou enviar a um Servidor TCP onde ele retornará uma resposta
Sub New()
_keyWords.Add([Ô]Healt$[Ô])
_keyWords.Add([Ô]Logado$[Ô])
_keyWords.Add([Ô]Registro$[Ô])
End Sub

Public Property pr_ipMaq As ArrayList
Get
Return _ipMaq
End Get
Set(ByVal value As ArrayList)
_ipMaq = value
End Set
End Property

Public ReadOnly Property pr_Keys As ArrayList
Get
Return _keyWords
End Get
End Property

Public Property pr_grupo As String
Get
Return _grupo
End Get
Set(ByVal value As String)
_grupo = value
End Set
End Property

End Class
End Namespace


Na camada DAL tenho:

  Using comando As New SqlCommand([Ô]SELECT A.IP,B.NOME_DEPT FROM TBMAQUINA A [Ô] _
& [Ô]INNER JOIN TBDEPT B ON [Ô] _
& [Ô]A.COD_DEPT = B.COD_DEPT [Ô] _
& [Ô]ORDER BY B.NOME_DEPT[Ô], oCon)
Using dr As SqlDataReader = comando.ExecuteReader
If (dr.HasRows) Then
While dr.Read
If Not dr.IsDBNull(0) Or Not dr.IsDBNull(1) Then
pObjeto.pr_ipMaq.Add(dr.GetString(0) & [Ô];[Ô] & dr.GetString(1))
End If
End While
End If
End Using
End Using


Neste codigo eu DEVO listar MAQUINAS e seus determinados GRUPOS para eu mostrar na treeview mas acontece que eu nao estou conseguindo ligar as informaçoes,o select funciona normalmente porem o nome do DEPARTAMENTO ou GRUPO vao se repetindo,entao eu concatenei apenas pra visualização.
na TreeView eu preciso que mostra desta forma:

+RECEPÇÃO
--192.168.0.100
--192.168.0.101
+MARKETING
--192.168.1.100
--192.168.1.101

Mas desta forma que estou fazendo vai mostrar assim:

+RECEPÇÃO
--192.168.0.100
+RECEPÇAO
--192.168.0.101

...............

Como exemplo.
Estou usando conceito de camadas e coleçoes.

Se alguem puder me ajudar pelo amor de deus isso é pra ontem:S
KERPLUNK 04/04/2012 14:44:23
#399105
Resposta escolhida
Bem, como diria Jack, o estripador, vamos por partes...
1 - Excelente você estar trabalhando com camadas, parabéns!
2 - A sua dúvida é bem comum. O que você chama de DTO, na verdade é uma entidade, mas tudo bem.
Bom, nessa entidade, você precisa de Departamento e uma lista de todos os computadores que estão nele, correto? Se for o caso, você deve fazer uma entidade(DTO) que vai conter as seguintes propriedades:
Departamento as string
ListaCompuadores as List(Of string)

Na camada DAL, você vai ter de executar dois selects, um para preencher uma lista de objetos [Ô]Departamento[Ô], com todos os departamentos que você quiser listar. E depois, fazer um for...each para cada departamento encontrado, e fazer um select com um [Ô]where[Ô], onde vai conter o necessário para listar os computadores de cada departamento. Ao fazer esse select, você vai preencher a lista de computadores do departamento corrente do for. Com isso tudo você vai ter uma lista assim:

Recepção
192.168.0.100
192.168.0.101
Marketing
192.168.0.102
192.168.0.103

Daí sim você vai ter o que precisa para preencher o treeview conforme você precisa...
PHOENIX209E 04/04/2012 14:48:40
#399108
EXATAMENTE KERPLUNK!!!!!.
Ja tentei usar o ListOF de outra forma,mas vendo desta dimensão que voce esta dizendo,irá funcionar.nao pensei nisso!..
cara,desde as 5 da manha programando,o sono e a fome estão me matando!..

VALEU Brother..
Vou testar esse modo e jaja posto VALEU! ++
PHOENIX209E 04/04/2012 16:38:21
#399125
Valeuu KERP!..
Ja descobri o problema...
Falta de atençao ¬¬!!
Abraços!!
KERPLUNK 04/04/2012 16:41:30
#399126
No DTO você cria uma classe que vai ter uma propriedade string e uma lista de ip[ô]s:
public class DTO_DepartamentoComputadores
string Departamento {get; set;}
List<string> Computador {get; set;}

Então, na camada DAL, crie um método que vai retornar uma lista de DTO_DepartamentoComputadores:
public List<DTO_DepartamentoComputadores> Busca()
{
List<DTO_DepartamentoComputadores> _return = null;
List<Departamento> departamentos = new List<Departamento>();
departamentos = GetAllDepartamentos(); //Faça o método GetAllDepartamentos, retornar uma lista de departamentos
if (departamentos.Count >0)
_return = new List<DTO_DepartamentoComputadores>();
foreach(Departamento item in departamentos)
{
DTO_DepartamentoComputadores depart = new DTO_DepartamentoComputadores();
depart.Departamento = item.Nome; //Supondo que a classe [Ô]Departamento[Ô] tenha a propriedade nome
depart.Comnputador = GetComputadoresDepartamento(item.Departamento); //Faça esse método retornar uma lista de computadores de acordo com o departamento
_return.Add(depart)
}
return _return;
}

Algo mais ou menos assim...
Tópico encerrado , respostas não são mais permitidas