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ódigoNegocios.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