FastReport sem banco de dados

Delphi

11/09/2013

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

Curtidas 1

Melhor post

Marcos Oliveira

Marcos Oliveira

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
GOSTEI 1

Mais Respostas

Junior

Junior

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


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.
GOSTEI 1
Marcos Oliveira

Marcos Oliveira

11/09/2013

GOSTEI 1
Marcos Oliveira

Marcos Oliveira

11/09/2013

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
GOSTEI 1
Junior

Junior

11/09/2013

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.
GOSTEI 1
Marcos Oliveira

Marcos Oliveira

11/09/2013

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
GOSTEI 1
Junior

Junior

11/09/2013

Muito obrigado mesmo Marcos, perfeito.

Agradeço pela atenção.
Att,
Junior
GOSTEI 1
Marcos Oliveira

Marcos Oliveira

11/09/2013

Por nada! Abraço!
GOSTEI 1
Deivison Melo

Deivison Melo

11/09/2013

Finalizando o tópico!
GOSTEI 1
POSTAR