METODO INTERESSANTE NA WEB MAS NAO FUNCIONOU

LUIS.HERRERA 05/03/2013 15:48:53
#419950
Pesquisando encontrei um tutorial com alguns métodos interessantes para uso com 3 camadas, porém ao tentar implementar parece que isso não funciona.
A classe DAL recebia como parâmetro um DataGridView e uma instrução SQL, com isso ela fazia a pesquisa no banco e já preenchia o grid do parâmetro direto no formulário.

O problema é que na classe DAL (uma DLL) não consegui incluir o parâmetro do Grid como no exemplo. Isso é possível ? Uso o VS 2008 Pro, mas o exemplo foi no VS Express 2010. Será que só a partir do 2010 isso é possível?

Criar o método para Consultar por Código

public void ConsultarCodigo(DataGridView dgv)
{
dal.Consultar(dgv, [Ô]SELECT * FROM tbContato WHERE codigo=[Ô] + Codigo + [Ô][Ô]);
}


Criar o método para Consultar por Nome

public void ConsultarNome(DataGridView dgv)
{
dal.Consultar(dgv, [Ô]SELECT * FROM tbContato WHERE Nome like [ô]%[Ô] + Nome + [Ô]%[ô][Ô]);
}


Criar o método para Consultar por Telefone


public void ConsultarTelefone(DataGridView dgv)
{
dal.Consultar(dgv, [Ô]SELECT * FROM tbContato WHERE telefone like [ô]%[Ô] + Telefone + [Ô]%[ô][Ô]);
}

OCELOT 05/03/2013 17:20:30
#419966
Resposta escolhida
Provavelmente falta a referencia da dll System.Windows.Forms.dll, porém isso dai é muito errado na separação das camadas pois a camada que acessa os dados não deveria nem saber que existe uma interface gráfica exibindo os dados.
FOXMAN 05/03/2013 17:54:38
#419969
Citação:

:
Provavelmente falta a referencia da dll System.Windows.Forms.dll, porém isso dai é muito errado na separação das camadas pois a camada que acessa os dados não deveria nem saber que existe uma interface gráfica exibindo os dados.



Até porque é justamente esse o ponto onde a reutilização dessa camada poderá servir para qualquer outro projeto. Se fizer dessa forma, talvez um outro projeto vc não esteja enviando um datagridview como parametro.

Mas é perfeitamente possível vc fazer dessa forma.

LUIS.HERRERA 06/03/2013 08:11:48
#419984
Entendi, só que fiz a referência a DLL usim System.Windows.Forms; mas não aceita essa referência.

LITTLEBOY 06/03/2013 08:45:42
#419987
vc adicionou a referencia no solution explorer?
OCELOT 06/03/2013 10:39:52
#420000
Não adianta apenas colocar o [Ô]using System.Windows.Forms[Ô], com isso você apenas está importando o namespace no código, tem que referenciar a Dll no Solution Explorer, tem tipo uma [Ô]pasta[Ô] chamada References no projeto, se o System.Windows.Forms não estiver lá então você precisa adicionar a referencia ali
KERPLUNK 06/03/2013 10:52:35
#420003
O problema aqui, não é de referências, é de compreensão do que está sendo feito. Suponho que o que você quer fazer é em um ambiente de 3 camadas, executar uma consulta e passar os resultados desa consulta para um datagrid, certo?
LUIS.HERRERA 06/03/2013 11:36:32
#420011
Eu não sabia que tinha de incluir a referência do forms dentro da DLL.

Sim Kerplunk, o exemplo que vi foi exatamente isso, passava o grid do form para as camadas e a camada DAL já populava o grid correto. Assim independia qual form chamou a classe DAL, o grid seria preenchido. Neste conceito, além de grid se poderia preencher Combox, ListViews, etc... dessa forma, usando o mesmo método, tudo dependeria de que objeto foi passado e da consulta feita.
KERPLUNK 06/03/2013 11:39:07
#420012
Bem, essa não é uma boa prática, péssima aliás. Usando a arquitetura de multi camadas é justamente para não se usar esse tipo de técnica. Em arquiteturas multi camadas, você cria métodos especializados para fazer o que você quer e não métodos genéricos de execução de SQL.
LUIS.HERRERA 06/03/2013 11:52:06
#420014
Entendi. Obrigado a todos.
Tópico encerrado , respostas não são mais permitidas