fast report dosyaları veritabanına

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
mustafasoy
Üye
Mesajlar: 154
Kayıt: 02 Ağu 2013 05:00
Konum: istanbul
İletişim:

fast report dosyaları veritabanına

Mesaj gönderen mustafasoy »

arkadaşlar kullanmakta olduğumuz programdaki raporların path olarak tutmakta ve buradan kullanmaktayız ancak veri tabanı içerisinde tutulması için araştırma yapıyorum
sebep olarak
dosya yollarının değişmesi
ağ üzerinden kullanım
yedek alınırken bu dosyaların unutulması
yetki problemleri (okuma , yazma vs.)
çok can sıkıcı olmaya başladı..
fr3 uzantılı dosyalarımı veri tabanında tutsam sonra buradan okusam ve kullanıcıya göstersem daha önce böyle bir çalışması olan var mı ?



örneği ek olarak yükledim başka arkadaşlara örnek olabilir.
Dosya ekleri
fast_Report_blob.rar
örnek dosya ektedir
(14.56 KiB) 144 kere indirildi
En son mustafasoy tarafından 19 Tem 2014 11:57 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
Kullanıcı avatarı
warder
Üye
Mesajlar: 255
Kayıt: 10 Mar 2004 04:59

Re: fast report dosyaları veritabanına

Mesaj gönderen warder »

Böyle bir çalışmam yok ancak sizin mesajınızı okuyunca baktım. İçeriği bir metin dosyası. Veri tabanında içeriği kolayca saklanıp gerektiğinde yeniden dosya olarak kaydedilebilir.
Ancak saklamak için Resource olarak exe içerisine gömülebilir.
Gerektiğinde çıkartıp işi bitince silinebilir...
Başlangıçta kontrol edilip olmayanlar tekrar çıkartılabilir ve silinmeyebilir. vs.
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: fast report dosyaları veritabanına

Mesaj gönderen m_ekici »

Merhaba
Örnek için teşekkürler. Bir sorum olacak;
Rapor dizaynı kullanıcı tarafından değiştirildiğinde DB ye tekrar nasıl kaydediyorsun?
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: fast report dosyaları veritabanına

Mesaj gönderen csunguray »

Bu konuda daha önce vermiş olduğum örnekler var. Bu kodları uzun yıllardır güvenle kullanıyorum.

Kod: Tümünü seç

function TForm1.SaveReportToBlobField(Field1: TBlobField; var Report1: TfrxReport): Boolean;
var
  DesignStream: TADOBlobStream;
begin
  Result := False;
  if not (Field1.DataSet.State in [dsInsert, dsEdit]) then Exit;
  DesignStream := TADOBlobStream.Create(Field1, bmWrite);
  try
    Report1.SaveToStream(DesignStream);
    Result := True;
  finally
    DesignStream.Free;
  end;
end;

Kod: Tümünü seç

function TForm1.LoadReportFromBlobField(Field1: TBlobField; var Report1: TfrxReport): Boolean;
var
  DesignStream: TADOBlobStream;
begin
  Result := False;
  if CompareText(Copy(Field1.AsString, 1, 5), '<?xml') <> 0 then Exit;
  DesignStream := TADOBlobStream.Create(Field1, bmRead);
  try
    Report1.LoadFromStream(DesignStream);
    Result := True;
  finally
    DesignStream.Free;
  end;
end;
KULLANIM:

Kod: Tümünü seç

procedure TForm1.ActionTasarlaExecute(Sender: TObject);
var
  Q1: TADOQuery;
begin
  Q1 := TADOQuery.Create(Self);
  try
    Q1.Connection := Blabla;
    Q1.SQL.Text := 'select * from tbl_raporlar';
    Q1.Open;
    Q1.Locate('RAPOR_KODU', 1234, []);
    LoadReportFromBlobField(Q1.FieldByName('DESIGN') as TBlobField, frxReport1);
    frxReport1.DesignReport; // Tasarıma gir

    if MessageDlg('Rapor kaydedilsin mi?',
                 mtConfirmation, [mbYes, mbNo], 0) = mrYes then
    begin
      Q1.Edit;
      SaveReportToBlobField(Q1.FieldByName('DESIGN') as TBlobField, frxReport1);
      Q1.Post;
    end;
  finally
    Q1.Free;
  end;
end;

En son csunguray tarafından 04 Ağu 2014 02:30 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: fast report dosyaları veritabanına

Mesaj gönderen m_ekici »

Tşk Cemil

Dizayn içerisinde SAVE butonuna basıldığında OnSaveReport eventi varmış. Orada DB ye kaydı yaptırıyorum.

İyi Çalışmalar
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: fast report dosyaları veritabanına

Mesaj gönderen csunguray »

Şuna dikkat etmelisin. Diyelim design tuşuna basıp bir raporu tasarım moduna geçirdin. Sonra File > Open diyerek bir fr3 dosyası yükledin. Bu durumda raporun Changed (yani değiştirilmiş) flag ı false olacağı için kaydet düğmesi disable olacaktır. Çıkarken de kaydedeyim mi diye sormayacaktır. Bilgin olsun...
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Cevapla