Yorumları: 59
Konuları: 18
Kayıt Tarihi: 10-12-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 177 Başlangıç
arkadaşlar merhaba
programda raporlama olarak fast report kullanıyorum. Çok kullanıcılı sistemlerde ayrı ayrı şablon zor oluyor. O yüzden rapor şablonunu veritabanına kaydetmek ve buran çağırmak istiyorum. Bir çok döküman inceledim ama elle tutulur birşey bulamadım yada ben anlamadım. MYSQL veri tabanı kullanıyorum. Bununla ilgili örnek çalışma yapan varmıdır. yada elinde örnek proje olan varmıdır.
Yorumları: 61
Konuları: 4
Kayıt Tarihi: 23-04-2020
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 257 Acemi
02-01-2025, Saat: 20:16
(Son Düzenleme: 02-01-2025, Saat: 20:19, Düzenleyen: ugorkem.)
Daha önce kullanmıştım. Kodu kontrol etmeden ekledim. Büyük boyutlu resim eklemeyecekseniz güzel çalışıyor.
procedure TForm1.Btn_DbdenOkuClick(Sender: TObject);
var
New : boolean;
Mstream : TMemoryStream;
Bstream : TBlobStream;
begin
frxReport1.Clear;
New := False;
try
// if not(Table.State in [dsedit,dsinsert]) then
// Table.Edit;
Mstream := TMemoryStream.Create;
Bstream := TBlobStream.Create(Table.FieldByName('Rapor') as TBlobField, bmReadWrite);
Mstream.CopyFrom(Bstream,Bstream.Size);
Mstream.Position := 0;
if Mstream.Size > 0 then
frxReport1.LoadFromStream(Mstream)
else
New := True;
finally
Mstream.Free;
end;
frxReport1.DesignReport();
end;
function TForm1.frxDesigner1SaveReport(Report: TfrxReport;
SaveAs: Boolean): Boolean;
var
Mstream : TMemoryStream;
Bstream : TBlobStream;
begin
if Table.State in [dsBrowse] then begin
Table.Edit;
end;
try
Mstream := TMemoryStream.Create;
Bstream := TBlobStream.Create(Table.FieldByName('Rapor') as TBlobField, bmReadWrite);
frxReport1.SaveToStream(Mstream);
Mstream.Position := 0;
Bstream.CopyFrom(Mstream, Mstream.Size);
if Table.State in [dsInsert,dsEdit] then
Table.Post;
finally
Mstream.Free;
Bstream.Free;
end;
Result := True;
end;
Yorumları: 112
Konuları: 22
Kayıt Tarihi: 19-03-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 170 Başlangıç
(02-01-2025, Saat: 20:16)ugorkem Adlı Kullanıcıdan Alıntı: Daha önce kullanmıştım. Kodu kontrol etmeden ekledim. Büyük boyutlu resim eklemeyecekseniz güzel çalışıyor.
procedure TForm1.Btn_DbdenOkuClick(Sender: TObject);
var
New : boolean;
Mstream : TMemoryStream;
Bstream : TBlobStream;
begin
frxReport1.Clear;
New := False;
try
// if not(Table.State in [dsedit,dsinsert]) then
// Table.Edit;
Mstream := TMemoryStream.Create;
Bstream := TBlobStream.Create(Table.FieldByName('Rapor') as TBlobField, bmReadWrite);
Mstream.CopyFrom(Bstream,Bstream.Size);
Mstream.Position := 0;
if Mstream.Size > 0 then
frxReport1.LoadFromStream(Mstream)
else
New := True;
finally
Mstream.Free;
end;
frxReport1.DesignReport();
end;
function TForm1.frxDesigner1SaveReport(Report: TfrxReport;
SaveAs: Boolean): Boolean;
var
Mstream : TMemoryStream;
Bstream : TBlobStream;
begin
if Table.State in [dsBrowse] then begin
Table.Edit;
end;
try
Mstream := TMemoryStream.Create;
Bstream := TBlobStream.Create(Table.FieldByName('Rapor') as TBlobField, bmReadWrite);
frxReport1.SaveToStream(Mstream);
Mstream.Position := 0;
Bstream.CopyFrom(Mstream, Mstream.Size);
if Table.State in [dsInsert,dsEdit] then
Table.Post;
finally
Mstream.Free;
Bstream.Free;
end;
Result := True;
end;
Merhaba;
firebird 5 kullanıyorum.
veritabanına kayıt işlemini gerçekliştiremedim. çalışma anında raporu yüklüyor. düzenleme yapıp kaydediyorum. tekrar raporu yüklüyor. ilgili form veya programı kapatıp açınca raporu düzenleme için tekrar yüklemiyor. sayfa boş geliyor.
Yorumları: 2.151
Konuları: 259
Kayıt Tarihi: 09-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.644 Uzman
14-02-2025, Saat: 08:41
(Son Düzenleme: 14-02-2025, Saat: 08:41, Düzenleyen: yhackup.)
(14-02-2025, Saat: 06:07)akuyumcu63 Adlı Kullanıcıdan Alıntı: Merhaba;
firebird 5 kullanıyorum.
veritabanına kayıt işlemini gerçekliştiremedim. çalışma anında raporu yüklüyor. düzenleme yapıp kaydediyorum. tekrar raporu yüklüyor. ilgili form veya programı kapatıp açınca raporu düzenleme için tekrar yüklemiyor. sayfa boş geliyor.
Database'e kayıt yaptığın ve okuduğun kodu paylaşmazsan tahmin edemeyiz nerede yanlış yaptığını.
Yorumları: 112
Konuları: 22
Kayıt Tarihi: 19-03-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 170 Başlangıç
(14-02-2025, Saat: 08:41)yhackup Adlı Kullanıcıdan Alıntı: (14-02-2025, Saat: 06:07)akuyumcu63 Adlı Kullanıcıdan Alıntı: Merhaba;
firebird 5 kullanıyorum.
veritabanına kayıt işlemini gerçekliştiremedim. çalışma anında raporu yüklüyor. düzenleme yapıp kaydediyorum. tekrar raporu yüklüyor. ilgili form veya programı kapatıp açınca raporu düzenleme için tekrar yüklemiyor. sayfa boş geliyor.
Database'e kayıt yaptığın ve okuduğun kodu paylaşmazsan tahmin edemeyiz nerede yanlış yaptığını.
yukarıdaki kodun aynısını kullanmaya çalıştım. yine de gözden kaçan birşeyler olabilir. haklısınız.
Firebird 5.0 ı kullanıyorum. RAPOR alanı BLOB SUB TYPE BINARY olarak ayarlı,
okuma yaparken;
procedure TfrmTanimlar.btnDBdenOkuClick(Sender: TObject);
var
New : boolean;
Mstream : TMemoryStream;
Bstream : TBlobStream;
begin
frxReport1.Clear;
New := False;
try
if not(UniTable1.State in [dsedit,dsinsert]) then UniTable1.Edit;
Mstream := TMemoryStream.Create;
Bstream := TBlobStream.Create(UniTable1.FieldByName('RAPOR') as TBlobField, bmReadWrite);
Mstream.CopyFrom(Bstream,Bstream.Size);
Mstream.Position := 0;
if Mstream.Size > 0 then
frxReport1.LoadFromStream(Mstream) else New := True;
finally
Mstream.Free;
end;
frxReport1.DesignReport();
end;
yazma yaparken;
function TfrmTanimlar.frxDesigner1SaveReport(Report: TfrxReport;
SaveAs: Boolean): Boolean;
var
Mstream : TMemoryStream;
Bstream : TBlobStream;
begin
if UniTable1.State in [dsBrowse] then
begin
UniTable1.Edit;
end;
try
Mstream := TMemoryStream.Create;
Bstream := TBlobStream.Create(UniTable1.FieldByName('RAPOR') as TBlobField, bmReadWrite);
frxReport1.SaveToStream(Mstream);
Mstream.Position := 0;
Bstream.CopyFrom(Mstream, Mstream.Size);
if UniTable1.State in [dsInsert,dsEdit] then
Begin
UniTable1.Post;
End;
finally
Mstream.Free;
Bstream.Free;
end;
Result := True;
end;
Yorumları: 112
Konuları: 22
Kayıt Tarihi: 19-03-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 170 Başlangıç
Yukarıdaki kodlar MYSQL veri tabanında BLOB olarak tanımlanan alan için çalışıyor. herhangi bir problemle karşılaşmadım. FIREBIRD 5 te kaydetme işlemini neden yapmıyor. onu bulamadım.
Yorumları: 884
Konuları: 35
Kayıt Tarihi: 12-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.853 Uzman
Merhaba, firebird 2.5.9, ibx component seti kullanıyorum, aşağıdaki şekilde yapıyorum.
MemData := TMemoryStream.Create;
MemData.LoadFromFile(EXEKLASOR+'DATA\RAPOR\RAPOR.frf');
ANA.TDIZAYN.Active:=TRUE;
ANA.TDIZAYN.Locate('KOD',INTTOSTR(RAPORKODU),[]);
ANA.TDIZAYN.Edit;
TBlobField(ANA.TDIZAYN.FieldByName('ICERIK')).LoadFromStream(MemData);
ANA.TDIZAYN.Refresh;
ANA.TDIZAYN.Active:=FALSE;
MemData.Free;
ANA.TRANS_RAPOR.CommitRetaining;
Yorumları: 112
Konuları: 22
Kayıt Tarihi: 19-03-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 170 Başlangıç
14-02-2025, Saat: 15:47
(Son Düzenleme: 14-02-2025, Saat: 16:12, Düzenleyen: akuyumcu63.)
(14-02-2025, Saat: 13:15)esistem Adlı Kullanıcıdan Alıntı: Merhaba, firebird 2.5.9, ibx component seti kullanıyorum, aşağıdaki şekilde yapıyorum.
MemData := TMemoryStream.Create;
MemData.LoadFromFile(EXEKLASOR+'DATA\RAPOR\RAPOR.frf');
ANA.TDIZAYN.Active:=TRUE;
ANA.TDIZAYN.Locate('KOD',INTTOSTR(RAPORKODU),[]);
ANA.TDIZAYN.Edit;
TBlobField(ANA.TDIZAYN.FieldByName('ICERIK')).LoadFromStream(MemData);
ANA.TDIZAYN.Refresh;
ANA.TDIZAYN.Active:=FALSE;
MemData.Free;
ANA.TRANS_RAPOR.CommitRetaining;
merhaba;
CommitRetaining yapamadık sanırım sıkıntı burada. çünkü çalışma anında problem yok, işlemler oluyor. farklı kayıtlar seçildiğinde her kayıt kendi raporunu çağırıyor. programı kapatınca güncellemeler uçuyor.
sonunda oldu.
okuma için
procedure TfrmTanimlar.btnDBdenOkuClick(Sender: TObject);
var
New : boolean;
Mstream : TMemoryStream;
Bstream : TBlobStream;
begin
frxReport1.Clear;
New := False;
try
if DM.QryRaporlar.State in [dsBrowse] then
begin
DM.QryRaporlar.Edit;
end;
Mstream := TMemoryStream.Create;
Bstream := TBlobStream.Create(DM.QryRaporlar.FieldByName('RAPOR') as TBlobField, bmReadWrite);
Mstream.CopyFrom(Bstream,Bstream.Size);
Mstream.Position := 0;
if Mstream.Size > 0 then
frxReport1.LoadFromStream(Mstream) else New := True;
finally
Mstream.Free;
end;
frxReport1.DesignReport();
end;
yazma için;
function TfrmTanimlar.frxDesigner1SaveReport(Report: TfrxReport;
SaveAs: Boolean): Boolean;
var
Mstream : TMemoryStream;
Bstream : TBlobStream;
begin
if DM.QryRaporlar.State in [dsBrowse] then
begin
DM.QryRaporlar.Edit;
end;
try
Mstream := TMemoryStream.Create;
Bstream := TBlobStream.Create(DM.QryRaporlar.FieldByName('RAPOR') as TBlobField, bmReadWrite);
frxReport1.SaveToStream(Mstream);
Mstream.Position := 0;
Bstream.CopyFrom(Mstream, Mstream.Size);
if DM.QryRaporlar.State in [dsInsert,dsEdit] then
Begin
DM.QryRaporlar.Post;
DM.QryRaporlar.UpdateTransaction.CommitRetaining;
End;
finally
Mstream.Free;
Bstream.Free;
end;
Result := True;
end;
herkese teşekkür ederim.
Yorumları: 61
Konuları: 4
Kayıt Tarihi: 23-04-2020
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 257 Acemi
tablodan field okuma (btnDBdenOkuClick) sırasında edit etmene gerek yok. Eğer başka bir amacın yoksa düzeltme kodunu kaldırmalısın
if DM.QryRaporlar.State in [dsBrowse] then
begin
DM.QryRaporlar.Edit;
end;
Yorumları: 112
Konuları: 22
Kayıt Tarihi: 19-03-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 170 Başlangıç
(14-02-2025, Saat: 19:01)ugorkem Adlı Kullanıcıdan Alıntı: tablodan field okuma (btnDBdenOkuClick) sırasında edit etmene gerek yok. Eğer başka bir amacın yoksa düzeltme kodunu kaldırmalısın
if DM.QryRaporlar.State in [dsBrowse] then
begin
DM.QryRaporlar.Edit;
end;
merhaba;
bu kodu kaldırınca dataset edit yada insert modunda değil diye hata veriyor.
|