Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
FastReport Dinamik Sayıya Göre Etiket Bastırma [ÇÖZÜLDÜ]
#1
Arkadaşlar merhaba delphi ile yazdığım programda  FastReport ile 5'li etiket çıktısı almaya çalışıyorum tasarımım hazır bilgiler ve tasarımın çalışmasında sorun yok ancak ben dbgridde barkod sayısı alanına girdiğim sayı kadar etiket bastırmak istiyorum tekli etikette sorun yok girdiğim sayı kadar copya yapıyorum barkod yazıcıdan sorunsuz çıktıyı alabiliyorum ancak 5'li etiket tasarımımda adedi kaç girersem gireyim ön izlemede çıktı 1 adet olarak görünüyor ve yazıcıdan da yan yana 5 adedi doldurup sonra aşağıya geçmesi gerekirken ilk sıradaki etiketleri alıp alt alta baskı yapıyor. Bu konuda yardımlarınızı bekliyorum. 

    benim tasarımım adet sayısını kaç girersem gireyim bu şekilde çıkıyor
---------------------------------------------------------------------------------------------------------------------
Yapmak istediğim tasarım

   
   
   
   
   
Cevapla
#2
Merhaba
Tek satırın (Kaydın) olduğu için tek etiket basıyor.
Tek alanlık geçici bir tablo oluştur. (Sadece bağlantı ID si olsun) Kaç adet etiket istiyorsan etiket sayısı kadar kayıt ekle ve bağlantı ID si olarak ekrandaki kaydın ID sini ver.
bu tabloyu açarak fast reportun masterdata bandının Datasetine bu geçici tabloyu seç. Yaptığın kayıt kadar etiket basacaktır.
Dizayn için de masterdata bandının genişliğini 5 etiket yan yana sığacak genişlikte (boşluklarla beraber) ayarla. masrerbandın column özelliğini 5 yap ve etiket aralarındaki boşluğu ColumnGap a yaz.
Cevapla
#3
procedure TForm4.Button1Click(Sender: TObject);
var
 i: Integer;
 TEmpList: TClientDataSet;
begin
 if Assigned(TempList) then
 begin
   TempList.EmptyDataSet;
 end
 else
 begin
   TempList := TClientDataSet.Create(nil);
   TempList.FieldDefs.Add('URUN_ADI', ftString, 100);
   TempList.FieldDefs.Add('KAREKOD', ftString, 100);
   TempList.FieldDefs.Add('SATIR1', ftString, 100);
   TempList.FieldDefs.Add('SATIR2', ftString, 100);
   TempList.FieldDefs.Add('SATIR3', ftString, 100);
   TempList.FieldDefs.Add('SATIR4', ftString, 100);
   TempList.FieldDefs.Add('SATIR5', ftString, 100);
   TempList.FieldDefs.Add('BARKOD_SAYISI', ftInteger);
   TempList.CreateDataSet;
 end;

 
 fdquery1.First;
 while not fdquery1.Eof do
 begin
   for i := 1 to fdquery1.FieldByName('BARKOD_SAYISI').AsInteger do
   begin
     TempList.Append;
     TempList.FieldByName('URUN_ADI').AsString := fdquery1.FieldByName('URUN_ADI').AsString;
     TempList.FieldByName('KAREKOD').AsString :=  fdquery1.FieldByName('KAREKOD').AsString;
     TempList.FieldByName('SATIR1').AsString := fdquery1.FieldByName('SATIR1').AsString;
     TempList.FieldByName('SATIR2').AsString := fdquery1.FieldByName('SATIR2').AsString;
     TempList.FieldByName('SATIR3').AsString := fdquery1.FieldByName('SATIR3').AsString;
     TempList.FieldByName('SATIR4').AsString := fdquery1.FieldByName('SATIR4').AsString;
     TempList.FieldByName('SATIR5').AsString := fdquery1.FieldByName('SATIR5').AsString;
     TempList.FieldByName('BARKOD_SAYISI').AsInteger := i;
     TempList.Post;
   end;
  fdquery1.Next;
 end;

FRXREPORT1.ShowReport;
 frxDBDataset1.DataSet := TempList;
end;

Arkadaşlar çok şükür sonunda doğru kodu oluşturabildim. Geçici tablo oluşturarak bu tabloya FDQUERY de bulunan BARKOD_SAYISI alanına girilen adet kadar veriyi çektim sonra fastreportün datasetine bu geçici tabloyu bağladım.Umarım sizlerinde işine yarar konu için çaba gösteren herkese teşekkürler.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Big Grin Fastreport Masterdata StartNewPage değerini değiştirme nevzatc 4 384 28-11-2025, Saat: 02:29
Son Yorum: nevzatc
  FastReport da sayfa uzunluğu mcuyan 1 395 22-09-2025, Saat: 08:50
Son Yorum: hi_selamlar
  fastreport şablonu database e kayıt ercanskose 11 2.248 18-02-2025, Saat: 17:10
Son Yorum: akuyumcu63
Question Dinamik butonlarda event tanımı mnk 11 1.532 31-01-2025, Saat: 09:16
Son Yorum: mrmarman
  Fastreport Barkod Tasarımı delphiX14 8 1.985 10-10-2024, Saat: 15:10
Son Yorum: ermanispir@gmail.com



Konuyu Okuyanlar: 1 Ziyaretçi