Delphi Can

Orjinalini görmek için tıklayınız: Fast Report Preview ekranında Pdf butonuna tıklandıgında verdiği hata.
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Hayırlı akşamlar arkadaşlar.
Fast Report frxReport1 çalıştırdığımda Preview ekranında Pdf butonuna tıklandığında aşagıdaki hatayı veriyor.

 frxPDFExport1.ShowDialog:=True; iken bu hatayı veriyor.

 frxPDFExport1.ShowDialog:=False; yaptıgımda pdf butonuna tıklasamda hiç bir işlem yapmamaktadır.


Access violation at address 00737086 in module 'Project1.exe'. Read of address 00000000.



fakat. 

    frxReport1.LoadFromFile(ExtractFilePath(Application.ExeName)+data.DataModule1.spPASSWORD.FieldByName('frxReport1Location').AsString+'\'+data.DataModule1.spPASSWORD.FieldByName('KasafrxReport1u').AsString);

                             frxReport1.Variables.Variables['kasagider'] := QuotedStr(cxLabel71.Caption);
     frxReport1.Variables.Variables['kasagelir'] :=QuotedStr(cxLabel72.Caption);
    frxReport1.Variables.Variables['odemeler'] := QuotedStr(cxLabel95.Caption);
    frxReport1.Variables.Variables['tahsilatlar'] := QuotedStr(cxLabel96.Caption);
    frxReport1.Variables.Variables['alinancekler'] := QuotedStr(cxLabel99.Caption);
    frxReport1.Variables.Variables['verilencekler'] := QuotedStr(cxLabel100.Caption);
    frxReport1.Variables.Variables['gelirler'] := QuotedStr(cxLabel115.Caption);
    frxReport1.Variables.Variables['giderler'] := QuotedStr(cxLabel120.Caption);
    frxReport1.Variables.Variables['netkasa'] := QuotedStr(cxLabel97.Caption);
 
       SaveDialog1.Title := 'Kaydet';
 SaveDialog1.FileName :='Kasa_raporları_'+IntToStr(gun)+IntToStr(
   ay)+IntToStr(yil)+IntToStr(saat)+IntToStr(dakika)+IntToStr(saniye)+IntToStr(
   salise)+'.pdf';
 SaveDialog1.DefaultExt := 'pdf';
 SaveDialog1.FilterIndex := 1;
 SaveDialog1.InitialDir := GetCurrentDir;
 SaveDialog1.Filter := 'PDF document (*.pdf)|*.pdf';


 if SaveDialog1.Execute then
 begin
 
 frxPDFExport1.DefaultPath:=SaveDialog1.Filename;
frxPDFExport1.FileName:=SaveDialog1.Filename;
  
frxPDFExport1.ShowDialog:=False;
frxPDFExport1.OverwritePrompt := False;
frxPDFExport1.OpenAfterExport:=True;
// frxReport1.PrepareReport(False);
frxPDFExport1.ExportObject(frxReport1);

frxReport1.Export(frxPDFExport1);
  end;
        

Form üzerindeki button2 ozeliğine yukarıdaki kodu yazıp direkt pdf export etikten sonra eğer 
yeniden frxReport1 çalıştırdığımda Preview ekranında Pdf butonuna tıklandığında pdf olarak ekrana geliyor.

1. Neden ne olabilir.
2. Button2 ozellıgındekı kod ile pdfexport etığimde bir önceki pdf exportunun sayfasının içine bir sayfa daha ekleyip pdf açıyor.
normalde tek sayfa olması gekirken program çalıştıkca ne kadar export edersem o kadar raporu sayfa ekleyerek export ediyor.

yardımlarınız için şimdiden teşekkürler.
    if SaveDialog1.Execute then
    begin
        Form1.frxPDFExport1.FileName:=SaveDialog1.FileName;

        Form1.frxreport1.Export(form1.frxPDFExport1);
        Form1.frxreport1.preparereport(true);
    end;                

bu şekilde yaptığımda bende sorunsuz çalışyor.
2. Sorun bende de bir ara olmuştu tam hatırlamıyorum nasıl çözdüğümü uzun süre önceydi. Her çıktı aldıktan sonra raporu yeniliyormusun
(16-01-2017, Saat: 00:14)CaglarCoskun Adlı Kullanıcıdan Alıntı: [ -> ]
    if SaveDialog1.Execute then
    begin
        Form1.frxPDFExport1.FileName:=SaveDialog1.FileName;

        Form1.frxreport1.Export(form1.frxPDFExport1);
        Form1.frxreport1.preparereport(true);
    end;                

bu şekilde yaptığımda bende sorunsuz çalışyor.
2. Sorun bende de bir ara olmuştu tam hatırlamıyorum nasıl çözdüğümü uzun süre önceydi. Her çıktı aldıktan sonra raporu yeniliyormusun

ilginiz için teşekkürler.
1. sorumda kı neden 
  frxPDFExport1.DefaultPath:=ExtractFilePath(Application.ExeName)+data.DataModule1.spPASSWORD.FieldByName('RaporLocation').AsString+'\';
 frxPDFExport1.FileName:='Kasa_Raporları_'+IntToStr(gun)+IntToStr(
   ay)+IntToStr(yil)+IntToStr(saat)+IntToStr(dakika)+IntToStr(saniye)+IntToStr(
   salise)+'.pdf';

satırı ekleyınce duzeldi.
Aşağıdaki methoda parametre olarak False dediğinizde önceki raporları de ekleyip, sürekli raporu bütüyor.

   function PrepareReport(ClearLastReport: Boolean = True): Boolean;

Bir dokümana pei peşe başka şeyler eklemek için eklenmiş bir özellik, standart'ta True ya da False demediğinizde default değer True olduğu için zaten bu davranışı sergilemez.