CAMPO DATETIME COM ERRO NO REPORT VIEWER
Pessoal boa tarde, estou montando uma ficha de empregado e estou montando o report viewer pelo objeto, não quero fazer a conexão pelo odbc
Criei 2 datatable para preencher a ficha e todos os dados estão sendo impressos corretamente, só que quando é para exibir a data, ele apresenta apenas #erro , não tem erro em nenhuma parte, e tanto o objeto beneficiario quanto funcionario o datetime não exibe
Coloquei uma imagem com mais detalhes dos erros e de como estão os dados
Desde já agradeço a todos
Criei 2 datatable para preencher a ficha e todos os dados estão sendo impressos corretamente, só que quando é para exibir a data, ele apresenta apenas #erro , não tem erro em nenhuma parte, e tanto o objeto beneficiario quanto funcionario o datetime não exibe
Coloquei uma imagem com mais detalhes dos erros e de como estão os dados
Desde já agradeço a todos
Por acaso o valor está null?
Agradeço pelo retorno Kerplank
Até cheguei a colocar no print, no caso em questão nenhum dos campos estão null, até mesmo estou buscando ainda em pesquisas como farei essa visualização de todos os dados, pois terá data que estará null
Esqueci de colocar que estou com o Visual Studio 2019
Segue o trecho onde recebo as informações através dos datastables e mando para a ficha
public partial class FrmRelatFuncionario : Form
{
DataTable DtFunc = new DataTable();
DataTable DtBenefic = new DataTable();
public FrmRelatFuncionario(DataTable dtfunc, DataTable dtbenec)
{
InitializeComponent();
DtFunc = dtfunc;
DtBenefic = dtbenec;
}
private void FrmRelatFuncionario_Load(object sender, EventArgs e)
{
this.reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.DataSources.Add(
new Microsoft.Reporting.WinForms.ReportDataSource("DtFuncionario", DtFunc));
this.reportViewer1.LocalReport.DataSources.Add(
new Microsoft.Reporting.WinForms.ReportDataSource("DtBeneficiarios", DtBenefic));
this.reportViewer1.LocalReport.EnableExternalImages = true;
this.reportViewer1.LocalReport.SetParameters(
new Microsoft.Reporting.WinForms.ReportParameter("CaminhoFoto", Program.CaminhoRelatoriofotoFuncionario));
this.reportViewer1.RefreshReport();
}
}
Até cheguei a colocar no print, no caso em questão nenhum dos campos estão null, até mesmo estou buscando ainda em pesquisas como farei essa visualização de todos os dados, pois terá data que estará null
Esqueci de colocar que estou com o Visual Studio 2019
Segue o trecho onde recebo as informações através dos datastables e mando para a ficha
public partial class FrmRelatFuncionario : Form
{
DataTable DtFunc = new DataTable();
DataTable DtBenefic = new DataTable();
public FrmRelatFuncionario(DataTable dtfunc, DataTable dtbenec)
{
InitializeComponent();
DtFunc = dtfunc;
DtBenefic = dtbenec;
}
private void FrmRelatFuncionario_Load(object sender, EventArgs e)
{
this.reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.DataSources.Add(
new Microsoft.Reporting.WinForms.ReportDataSource("DtFuncionario", DtFunc));
this.reportViewer1.LocalReport.DataSources.Add(
new Microsoft.Reporting.WinForms.ReportDataSource("DtBeneficiarios", DtBenefic));
this.reportViewer1.LocalReport.EnableExternalImages = true;
this.reportViewer1.LocalReport.SetParameters(
new Microsoft.Reporting.WinForms.ReportParameter("CaminhoFoto", Program.CaminhoRelatoriofotoFuncionario));
this.reportViewer1.RefreshReport();
}
}
Não sei se esta certo ou não, más na parte da ficha onde tem as datas, eu estou colocando parametros e alimento com o dados do datatable e exibiu a data corretamente e não deu nenhum problema até mesmo quando a data é null, pois eu coloquei nos parametros que aceita null
foreach (DataRow registro in DtFunc.Rows)
{
this.reportViewer1.LocalReport.SetParameters(
new Microsoft.Reporting.WinForms.ReportParameter("DataAdmissaoFunc", Convert.ToDateTime(registro["DataAdmissao"]).ToString("dd/MM/yyyy")));
this.reportViewer1.LocalReport.SetParameters(
new Microsoft.Reporting.WinForms.ReportParameter("DataDemissao", !registro.IsNull("DataDemissao") ? Convert.ToDateTime(registro["DataDemissao"]).ToString("dd/MM/yyyy") : null));
}
Por enquanto não consegui fazer aparecer a data na parte dos beneficiários, que no caso eu inclui uma matriz , ja tentei com tabela também, e que esta sendo alimentado pelo
DtBeneficiarios
Se alguém ja passou por esse perrengue e puder me da uma luz agradeço
foreach (DataRow registro in DtFunc.Rows)
{
this.reportViewer1.LocalReport.SetParameters(
new Microsoft.Reporting.WinForms.ReportParameter("DataAdmissaoFunc", Convert.ToDateTime(registro["DataAdmissao"]).ToString("dd/MM/yyyy")));
this.reportViewer1.LocalReport.SetParameters(
new Microsoft.Reporting.WinForms.ReportParameter("DataDemissao", !registro.IsNull("DataDemissao") ? Convert.ToDateTime(registro["DataDemissao"]).ToString("dd/MM/yyyy") : null));
}
Por enquanto não consegui fazer aparecer a data na parte dos beneficiários, que no caso eu inclui uma matriz , ja tentei com tabela também, e que esta sendo alimentado pelo
DtBeneficiarios
Se alguém ja passou por esse perrengue e puder me da uma luz agradeço
foreach (DataRow registro in DtFunc.Rows)
{
this.reportViewer1.LocalReport.SetParameters(
new Microsoft.Reporting.WinForms.ReportParameter("DataAdmissaoFunc", Convert.ToDateTime(registro["DataAdmissao"]).ToString("dd/MM/yyyy")));
this.reportViewer1.LocalReport.SetParameters(
new Microsoft.Reporting.WinForms.ReportParameter("DataDemissao", registro["DataDemissao"] != DBNull.Value ? Convert.ToDateTime(registro["DataDemissao"]).ToString("dd/MM/yyyy") : null));
}
O que vc escreveu acabou não saindo, más tem algo de errado com o comando que coloquei para preencher os datas ?
Preencheu certinho, mesmo porque aceitou o null da data de demissão, já que a data de admissão é obrigatória e não pode ser null
Más o grande problema ainda é preencher os dados dos beneficiários que tem a data de nascimento e lá não estou conseguindo ajustar, nem pelos parametros
Preencheu certinho, mesmo porque aceitou o null da data de demissão, já que a data de admissão é obrigatória e não pode ser null
Más o grande problema ainda é preencher os dados dos beneficiários que tem a data de nascimento e lá não estou conseguindo ajustar, nem pelos parametros
O que quero dizer é que no retorno do banco, o valor no DataTable não é "null", mas sim "DBNull"
Todos os campos em teste que coloquei, nenhum estava null no banco de dados, exatamente para testar o retorno, e todos os dados no datatable estão preenchidos
A cláusula que coloquei foi depois que tive a idéia de criar um parametro com a data de demissão e admissão , para ver se elas exibiam corretamente e exibiram e ai sim coloquei a cláusula para verificar se o conteúdo era null ou não e não tive nenhum problema.
Para falar a verdade não tinha visto o comando aqui no site como que ficou, porque o comando não é dbnull, e agora entendi o que vc falou.
O comando certo é
this.reportViewer1.LocalReport.SetParameters(
new Microsoft.Reporting.WinForms.ReportParameter("DataDemissao", !registro. I s N u l l ("DataDemissao") ? Convert.ToDateTime(registro["DataDemissao"]).ToString("dd/MM/yyyy") : null));
Separei a palavra pois não sei se teve algum problema, más como comentei, não era para dar nenhum erro, pois todos os dados estavam preenchidos, agora como criei os parametros para 2 datas, ACHO que terei que criar para as outras, más o que esta ainda nos beneficiários, esse não consegui ajustar.
Estava pesquisando ontem e vi que teve gente que até debugou o XML para a achar a data errada, pois o sistema esta tentando analisar a data e não consegue e vi também que teve gente que excluiu e incluiu novamente o conjunto de dados e funcionou
Resumindo terei uma dor de cabeça legal rsrsrs
A cláusula que coloquei foi depois que tive a idéia de criar um parametro com a data de demissão e admissão , para ver se elas exibiam corretamente e exibiram e ai sim coloquei a cláusula para verificar se o conteúdo era null ou não e não tive nenhum problema.
Para falar a verdade não tinha visto o comando aqui no site como que ficou, porque o comando não é dbnull, e agora entendi o que vc falou.
O comando certo é
this.reportViewer1.LocalReport.SetParameters(
new Microsoft.Reporting.WinForms.ReportParameter("DataDemissao", !registro. I s N u l l ("DataDemissao") ? Convert.ToDateTime(registro["DataDemissao"]).ToString("dd/MM/yyyy") : null));
Separei a palavra pois não sei se teve algum problema, más como comentei, não era para dar nenhum erro, pois todos os dados estavam preenchidos, agora como criei os parametros para 2 datas, ACHO que terei que criar para as outras, más o que esta ainda nos beneficiários, esse não consegui ajustar.
Estava pesquisando ontem e vi que teve gente que até debugou o XML para a achar a data errada, pois o sistema esta tentando analisar a data e não consegue e vi também que teve gente que excluiu e incluiu novamente o conjunto de dados e funcionou
Resumindo terei uma dor de cabeça legal rsrsrs
Alguém ja passou por esse problema?
Não acho na net sobre isso, o que achei são coisas parciais e de forma que não quero fazer, que é utilizando o odbc
Não acho na net sobre isso, o que achei são coisas parciais e de forma que não quero fazer, que é utilizando o odbc
Tópico encerrado , respostas não são mais permitidas