Ajuda com a data dbGrid

08/11/2021

0

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

Responder

Posts

08/11/2021

Emerson Nascimento

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;

Responder

08/11/2021

Upmilk

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.
Responder

24/11/2021

Kauan Oliveira

Tente algo assim

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

e a mesma coisa para as outras situações
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar