SELECT NO DATASET OU DATATABLE
Galera eu carrego um dataset ou datatable comdados de um xml, e alimento um relatorio com esse dataset, gostaria de saber se tem como realizar um select no dataset ou datatable para poder filtar alguns dados.
Claro!
Tu pode utilizar LINQ. Já ouviu falar?
Tu pode utilizar LINQ. Já ouviu falar?
ASHKATCHUP, Fazer o filtro utilizando o LINQ eu ate tinha visto, e achei bem legal, mais como passar o resultado da consulta para o relatorio? tem como armazenar em um datatable ou dataset?
Tem como armazenar em dataset sim, mas se não me engano tu pode passar direito.
Tu não tem um projeto para postar aqui como exemplo? Para que a gente possa te ajudar melhor..
Tu não tem um projeto para postar aqui como exemplo? Para que a gente possa te ajudar melhor..
tenho um Xml com essa estrutura:
e estou alimentando o relatorio assim:
mas não esta me devolvendo nenhum valor
<PingLan>
<Maquina>
<IP>192.168.1.1</IP>
<Nome> </Nome>
<Dominio> </Dominio>
<Usuario> </Usuario>
<MAC>00-21-27-D5-AD-58</MAC>
<Resposta>Success - 21/01/2012 15:07:25</Resposta>
</Maquina>
<Maquina>
<IP>192.168.1.2</IP>
<Nome> </Nome>
<Dominio> </Dominio>
<Usuario> </Usuario>
<MAC> </MAC>
<Resposta>TimedOut - 21/01/2012 15:07:25</Resposta>
</Maquina>
</PingLan>
e estou alimentando o relatorio assim:
private void Filtrar()
{
ReportDocument Rpt = new ReportDocument();
Rpt.Load(Application.StartupPath + [Ô]\ptRelatorio.rpt[Ô]);
if (rdbLivres.Checked == true)
{
XElement xml = XElement.Load(Application.StartupPath + [Ô]\\IPs.xml[Ô]);
var Result = from rst in xml.Elements([Ô]PingLan[Ô]).Elements([Ô]Maquina[Ô])
where (string)xml.Element([Ô]MAC[Ô]) == string.Empty
select rst;
Rpt.SetDataSource(Result);
}
else if (rdbEmUso.Checked == true)
{
XElement xml = XElement.Load(Application.StartupPath + [Ô]\\IPs.xml[Ô]);
var Result = from rst in xml.Elements([Ô]PingLan[Ô]).Elements([Ô]Maquina[Ô])
where (string)xml.Element([Ô]MAC[Ô]) != string.Empty
select rst;
Rpt.SetDataSource(Result);
}
else
{
XElement xml = XElement.Load(Application.StartupPath + [Ô]\\IPs.xml[Ô]);
var Result = from rst in xml.Elements([Ô]PingLan[Ô]).Elements([Ô]Maquina[Ô])
select rst;
Rpt.SetDataSource(Result);
}
crRelatorio.ReportSource = Rpt;
}
mas não esta me devolvendo nenhum valor
Chegou a testar se o LINQ está retornando valores?
ASHKATCHUP, Debugando o projeto da pra ver que o linq esta retornando valores sim. mas parece que o crystal não reconhece.
Descobri que o crystal report só aceita DataTable, DataSet, DataReader, ou Inumerable, alguém sabe como posso converter o resultado dessa query em um dos tipos aceitos pelo crystal?
XElement xml = XElement.Load(Application.StartupPath + [Ô]\\IPs.xml[Ô]);
var Result = from rst in xml.Elements([Ô]PingLan[Ô]).Elements([Ô]Maquina[Ô])
select rst;
Rpt.SetDataSource((DataTable)Result);
Tópico encerrado , respostas não são mais permitidas