CAMPO DATETIME COM ERRO NO REPORT VIEWER

ALVAROVB2009 18/07/2022 15:15:39
#500228
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
KERPLUNK 18/07/2022 15:25:02
#500229
Por acaso o valor está null?
ALVAROVB2009 18/07/2022 15:39:17
#500230
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();
}
}
ALVAROVB2009 18/07/2022 17:57:39
#500231
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
KERPLUNK 18/07/2022 20:58:29
#500232

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));
}
ALVAROVB2009 18/07/2022 21:16:57
#500233
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
KERPLUNK 18/07/2022 23:42:18
#500234
O que quero dizer é que no retorno do banco, o valor no DataTable não é "null", mas sim "DBNull"
ALVAROVB2009 19/07/2022 08:53:47
#500235
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
ALVAROVB2009 19/07/2022 19:44:07
#500236
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

Tópico encerrado , respostas não são mais permitidas