METODO INTERESSANTE NA WEB MAS NAO FUNCIONOU
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
Criar o método para Consultar por Nome
Criar o método para Consultar por Telefone
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 + [Ô]%[ô][Ô]);
}
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.
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.
Entendi, só que fiz a referência a DLL usim System.Windows.Forms; mas não aceita essa referência.
vc adicionou a referencia no solution explorer?
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
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?
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.
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.
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.
Entendi. Obrigado a todos.
Tópico encerrado , respostas não são mais permitidas