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.
[
attachment=2858] benim tasarımım adet sayısını kaç girersem gireyim bu şekilde çıkıyor
---------------------------------------------------------------------------------------------------------------------
Yapmak istediğim tasarım
[
attachment=2854]
[
attachment=2853]
[
attachment=2855]
[
attachment=2856]
[
attachment=2857]
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.
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.