Array
(
)

Pesquisar dados na tabela de um banco e retornar resultado para um label ou liberação de botão, com Linq - C sharp

Otalicio Junior/
   - 26 jun 2013

Prezados,
sou iniciante e preciso, a titulo de aprendizado, pesquisar(sem ter a chave primaria) se existe a informação em uma tabela do banco.
A ação consiste em verificar se o formulario já foi lançado no sistema e se não foi, liberar um botão para fazer o lançamento.
O lançamento do formulario é diario, então na tabela existem varios lançamentos do mesmo codigo(formulario) porem com datas diferentes, entao buscando o codigo e a data, ao encontrar, o botao permanece bloqueado e o grid com os dados do formulario é carregado, não encontrando o botão é liberado para o lançamento do formulario.

A aplicação é em 3 camadas - Apresentacao, Negocios e Dados
Eu consigo apenas trazer os dados para um grid, porem nao consigo utilizar a checagem para liberar o botão.
desde já agradeço,

Joel Rodrigues
   - 26 jun 2013

Como você traz o resultado para o Grid?
Se for uma lista, é só verificar o count. Se for um DataReader, é só verificar se tem linhas no resultado.

0
|
0

Otalicio Junior/
   - 26 jun 2013

Joel,

Na camada de apresentação
#Código

        protected void btnListar_Click1(object sender, EventArgs e)
        {
            string plano = txtPlano.Text;
            string data = txtData.Text;

            this.RGridPessoal.DataSource = Negocios.GrPessoalNeg.SearchPlano(plano, data);
            this.RGridPessoal.DataBind();
        }


Na camada de negócios
#Código
        public static IEnumerable SearchPlano(string plano, string data)
        {
            return Dados.GrPessoalDad.SearchPlano(plano,data);
        }


Na camada de dados

#Código
 public static IEnumerable SearchPlano(string plano, string data)
        {
            WebDataDataContext dataClass = new WebDataDataContext();

            var dia = data;

            var pess = from v in dataClass.PESSOALs
                       join m in dataClass.CARGOs on v.Codcargo equals m.Cargo1
                       join an in dataClass.SITIOs on v.Codlocal equals an.Codlocal
                       join p in dataClass.PRODUCAOs on v.Chapa equals p.Chapa
                       where v.Codsubord == plano && Convert.ToDateTime(dia) == Convert.ToDateTime(p.Data)
                       select new
                       {
                           v.Chapa,
                           v.Nome,
                           m.Desccargo,
                           an.Desclocal,
                           p.Data,
                           p.Situacao,
                           p.Turno,
                           p.ID
                        
                       };

            IEnumerable pessoal = pess.AsEnumerable();

            return pessoal;
        }

0
|
0

Joel Rodrigues
   - 26 jun 2013

Como você está retornando uma coleção, basta verificar se já itens nesse resultado. Se tiver, não habilita o botão.

0
|
0

Otalicio Junior/
   - 26 jun 2013

Este é o meu problema, não sei como verificar se tem items na coleção para utilizar o IF.

0
|
0

Joel Rodrigues
   - 26 jun 2013

Experimente usar:#Código

Negocios.GrPessoalNeg.SearchPlano(plano, data).ToList().Count

0
|
0

Otalicio Junior/
   - 27 jun 2013

Obrigado pela ajuda!

Muito Obrigado pela dica,consegui o que pretendia, ficou assim:

Camada de dados
#Código

public static List<LANCADA> Pesqlan(string subdata)
        {
            WebDataDataContext dataClass = new WebDataDataContext();

            var lanc = from c in dataClass.LANCADAs
                       where c.SuborDta == subdata
                       select c;

            List<LANCADA> lancadas = lanc.ToList();

            return lancadas;
        }


Camada de Negócios

#Código
        public static List<LANCADA> PesqLan(string subdata)
        {
            return Dados.GrPessoalDad.Pesqlan(subdata);
        }


Camada de Apresentação

#Código

protected void Button1_Click(object sender, EventArgs e)
        {
            string subdata = txtPlano.Text + txtData.Text;

            this.txtTeste.Text = Convert.ToString((Negocios.GrPessoalNeg.PesqLan(subdata)).Count);  
        }

0
|
0

Joel Rodrigues
   - 27 jun 2013

Muito bom, utilizou a classe List, bacana.
Então vou marcar o tópico como Concluído.
Abraço.

0
|
0