Report Builder Duvida.

Delphi

08/04/2014

Ola amigos.

Estou com uma duvida.

Estou com uma solicitação aqui para que o report builder dependendo do que for impresso em uma dbtext uma memo fique como visivel ou nao.

eu fiz da seguinte forma

procedure memo1OnPrint;

begin
if DBText94 = 09316105000129 then
memo1.Visible := True
else
memo1.Visible := False
end;

mas esta dando erro na hora de compliar :( alguem sabe me falar o porque ?
Célio Junior

Célio Junior

Curtidas 0

Melhor post

Cauê Nishijima

Cauê Nishijima

08/04/2014

Na verdade seria 'Text'e não 'Caption'. E dependendo de como é seu código completo talvez não tenho esse seu último 'end'

if DBText94.Text = '09316105000129' then
    memo1.Visible := True
else
    memo1.Visible := False;
GOSTEI 1

Mais Respostas

Romulo Silva

Romulo Silva

08/04/2014

Qual erro estar apresentando


não seria a falta do caption

if DBText94.Caption = '09316105000129' then
memo1.Visible := True
else
memo1.Visible := False
end;
GOSTEI 0
Célio Junior

Célio Junior

08/04/2014

Valeu galera estava com preça e coloque mais um dbtext mais simples com codigo de filial;


Agora

eu fiz assim :

so que tem o seguinte nao esta dando certo para as outras filials e nao estou conseguindo achar os tipos que o calc do report builder aceita:(

porque eu acho que o mais correto seria fazer um case:(

procedure MemFrioVix2OnPrint;

begin
if DBText96.FieldValue = '2' then
begin
MemFrioVix2.Visible := True;
end
else
begin
MemFrioVix2.Visible := False;
end;

if DBText96.FieldValue = '5' then
begin
MemFrioVix2.Visible := True;
end
else
begin
MemFrioVix2.Visible := False;
end;

if DBText96.FieldValue = '7' then
begin
MemFrioVix2.Visible := True;
end
else
begin
MemFrioVix2.Visible := False;
end;

if DBText96.FieldValue = '9' then
begin
MemFrioVix2.Visible := True;
end
else
begin
MemFrioVix2.Visible := False;
end;

if DBText96.FieldValue = '12' then
begin
MemFrioVix2.Visible := True;
end
else
begin
MemFrioVix2.Visible := False;
end;

if DBText96.FieldValue = '13' then
begin
MemFrioVix2.Visible := True;
end
else
begin
MemFrioVix2.Visible := False;
end;

if DBText96.FieldValue = '14' then
begin
MemFrioVix2.Visible := True;
end
else
begin
MemFrioVix2.Visible := False;
end;

end;
GOSTEI 0
Célio Junior

Célio Junior

08/04/2014

Resolvi com assim :



if ((DBText96.FieldValue = '2') or
(DBText96.FieldValue = '5') or
(DBText96.FieldValue = '7') or
(DBText96.FieldValue = '9') or
(DBText96.FieldValue = '12') or
(DBText96.FieldValue = '13') or
(DBText96.FieldValue = '14'))
then
MemFrioVix.Visible := True
else
MemFrioVix.Visible := False;
end;


erra erro meu mesmo kkk desculpa ai galera:)
GOSTEI 0
Cauê Nishijima

Cauê Nishijima

08/04/2014

Pra evitar essa IF gigante, você pode criar um função ou fazer um loop como o seguinte:

  for valor in [2,5,7,9,12,13,14] do
  begin
    if DBText96.FieldValue = IntToStr(valor) then
    begin
      MemFrioVix.Visible := True;
      Break;
    end
    else
      MemFrioVix.Visible := False;
  end;


onde 'valor' é uma variável do tipo Integer
O resultado é o mesmo, ai vai em questão de gosto!
GOSTEI 1
Célio Junior

Célio Junior

08/04/2014

mas do seu geito é bem mais pratico 1 ne velho :)
GOSTEI 0
POSTAR