Ajuda com a data dbGrid

Delphi

CRUD - Delphi

08/11/2021

Olá, estou tendo fazer um verificação se nao existir data na coluna do dbgrid entao pegar ada atual, mais nao estou conseguindo, como resolver?
var
datasaida, dataentrada, dataagora: TDate;
dData: string;
begin
pFrxReport.Variables.Clear;

datasaida := StrToDate(DBGrid1.Columns.Items[1].Field.Text);
dataentrada := StrToDate(DBGrid1.Columns.Items[2].Field.Text);
dataagora := StrToDate(DateToStr(now));

if (DBGrid1.Columns.Items[2].Field.Text.Empty = ' ') then
begin
dData := FloatToStr(DaysBetween(datasaida, dataentrada));
end
else
begin
dData := FloatToStr(DaysBetween(datasaida, dataagora));
end;
pFrxReport.Variables['NovaData'] := QuotedStr(dData);
end;
Upmilk

Upmilk

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

08/11/2021

pode tentar algo assim:
var
	datasaida, dataentrada: TDate;
	sData: string;
begin
	pFrxReport.Variables.Clear;

	// obtém a data de entrada. se estiver vazia, uso a data/hora atual
	if DBGrid1.Columns.Items[2].Field.IsEmpty then
		dataentrada := Now
	else
		dataentrada := DBGrid1.Columns.Items[2].Field.AsDateTime;

	// obtém a data de saída. se estiver vazia, uso a data/hora atual
	if DBGrid1.Columns.Items[1].Field.IsEmpty then
		datasaida := Now
	else
		datasaida := DBGrid1.Columns.Items[1].Field.AsDateTime;

	// obtém a diferença entre a data de entrada e a data de saída
	sData := FloatToStr(DaysBetween(datasaida, dataentrada));

	// passa o conteúdo para a 'variável'
	pFrxReport.Variables['NovaData'] := QuotedStr(sData);
end;

GOSTEI 0
Upmilk

Upmilk

08/11/2021

pode tentar algo assim:
var
	datasaida, dataentrada: TDate;
	sData: string;
begin
	pFrxReport.Variables.Clear;

	// obtém a data de entrada. se estiver vazia, uso a data/hora atual
	if DBGrid1.Columns.Items[2].Field.IsEmpty then
		dataentrada := Now
	else
		dataentrada := DBGrid1.Columns.Items[2].Field.AsDateTime;

	// obtém a data de saída. se estiver vazia, uso a data/hora atual
	if DBGrid1.Columns.Items[1].Field.IsEmpty then
		datasaida := Now
	else
		datasaida := DBGrid1.Columns.Items[1].Field.AsDateTime;

	// obtém a diferença entre a data de entrada e a data de saída
	sData := FloatToStr(DaysBetween(datasaida, dataentrada));

	// passa o conteúdo para a ''variável''
	pFrxReport.Variables[''NovaData''] := QuotedStr(sData);
end;



Aparece esse erro : is not a valid date.
Agora fique na duvida e erro e do Dgbrid ou FastReport nao esta recevendo Valor
quando o campo no dbgrid esta com data, funciona.
GOSTEI 0
Kauan Oliveira

Kauan Oliveira

08/11/2021

Tente algo assim

datasaida := (DBGrid1.DataSource.DataSet.FieldByName(''seu_campo_data'').AsDateTime);

e a mesma coisa para as outras situações
GOSTEI 0
POSTAR