GARANTIR DESCONTO

Fórum FastReport sem banco de dados #454906

11/09/2013

0

Caros amigos,

Estou precisando de uma ajuda com o FastReports e Delphi XE4, tenho um form onde não há banco de dados, somente dados em edit's...Preciso gerar um relatório com esses dados do form, mas não sei como fazer.

Achei varias coisas no forum, mas eram todas utilizando banco de dados. Que pro meu caso não serve.

Precisaria que um tuto pra começar, isto é, como chamo o Fast, como imprimo os dados de edit e radio button, e embutir o relatório no programa.

Obrigado.
Junior

Junior

Responder

Post mais votado

11/09/2013

Junior, porque você não cria um ClientDataSet pra armazenar esses dados, e vincula ele com o FastReport?
Eu faço isso, quando meu relatório também não utiliza banco de dados.

Att,

Marcos

Marcos Oliveira

Marcos Oliveira
Responder

Gostei + 1

Mais Posts

11/09/2013

Junior

Junior, porque você não cria um ClientDataSet pra armazenar esses dados, e vincula ele com o FastReport?
Eu faço isso, quando meu relatório também não utiliza banco de dados.

Att,

Marcos


Olá Marcos, vc poderia postar um código de exemplo de como faço a atribuição dos edits no cds? Sempre fiz com banco mesmo essa atribuição.
Responder

Gostei + 1

11/09/2013

Marcos Oliveira

Responder

Gostei + 1

11/09/2013

Marcos Oliveira

Junior, segue abaixo um exemplo com vários tipos de campos... Deu erro na página durante a postagem anterior, então estou enviando novamente.

ClientDataSet.Append; // ou ClientDataSet.Edit; Caso queira editar um registro que já existe.

ClientDataSet.FieldByName('Campo1').AsDateTime := Date;
ClientDataSet.FieldByName('Campo2').AsFloat := 2.22;
ClientDataSet.FieldByName('Campo3').AsInteger := 1;
ClientDataSet.FieldByName('Campo4').AsString := Edit1.Text;
ClientDataSet.FieldByName('Campo5').AsString := 'TESTE';
ClientDataSet.FieldByName('Campo6').AsInteger := ClientDataSet.FieldByName('Campo6).AsInteger  + 1;

ClientDataSet.Post;



Att,

Marcos
Responder

Gostei + 1

11/09/2013

Junior

Junior, segue abaixo um exemplo com vários tipos de campos.


Verdade dei bobeira agora....Não querendo se aproveitar mas seria possível criar uma rotina pra percorrer todos os componentes do meu form e criá-los no cds. Pra eu não ter que criar todos na mão, pois são uns 60 campos.

Tenho a procedure que percorre os componentes, só não sei como criá-los no CDS e já fazer a atribuição do text dos edits

procedure
var
  i: Integer;
begin
  for i := 0 to frmExemplo.ComponentCount - 1 do
    begin
      // Aqui eu teria que criar os campos no CDS certo?
    end;
end.
Responder

Gostei + 1

12/09/2013

Marcos Oliveira

Junior, segue abaixo um exemplo. Fiz o exemplo pra pegar somente os componentes TEdit.
Se tiver outros tipos de componentes, você vai ter que incluí-los.

procedure TForm1.Button1Click(Sender: TObject);
var
   i: Integer;
begin
     // Criação dos Campos no ClientDataSet;
     ClientDataSet1.FieldDefs.Clear;
     for i := 0 to Form1.ComponentCount - 1 do
     begin
          if Form1.Components[i].ClassType = TEdit then
             ClientDataSet1.FieldDefs.Add(Form1.Components[i].Name,ftString,20,False);
     end;

     ClientDataSet1.CreateDataSet;

     // Gravação dos dados no ClientDataSet
     ClientDataSet1.Append;
     for i := 0 to Form1.ComponentCount - 1 do
     begin
          if Form1.Components[i].ClassType = TEdit then
             ClientDataSet1.FieldByName(Form1.Components[i].Name).AsString := (Form1.Components[i] as TEdit).Text;
     end;

     ClientDataSet1.Post;
end;



Att,

Marcos
Responder

Gostei + 1

12/09/2013

Junior

Muito obrigado mesmo Marcos, perfeito.

Agradeço pela atenção.
Att,
Junior
Responder

Gostei + 1

12/09/2013

Marcos Oliveira

Por nada! Abraço!
Responder

Gostei + 1

12/09/2013

Deivison Melo

Finalizando o tópico!
Responder

Gostei + 1

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

Aceitar