Delphi Can

Orjinalini görmek için tıklayınız: FastReport detail tablo gösterim sorunu
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2
Merhaba üstatlar,

SqLite  veritabanı ve Firedac bileşenleri kullanarak basit bir Cv programı kodluyorum. Alttaki ekran görüntüsündeki çerçeveli alan fastreport DetailData alanında gösterilen detail tablo verileri. Bu alanı okla gösterilen sol sütunda band kullanmadan bir Memo içinde gösterebilmem mümkün mü? Bir Memo alan kullandığımda son kayıt geliyor sadece.

cvekran.png
Selamlar,
Standart bir memo kullanacaksanız, preview işeminden önce, ilgili memoya, kayıtı pas edebilirsiniz.
(11-07-2023, Saat: 17:22)shooterman Adlı Kullanıcıdan Alıntı: [ -> ]Selamlar,
Standart bir memo kullanacaksanız, preview işeminden önce, ilgili memoya, kayıtı pas edebilirsiniz.

DetailData kullanmadığınızda Memo içinde tek bir kayıt görünüyor hocam. 4 adet kayıt var hepsini göstermem gerekiyor.
(11-07-2023, Saat: 13:58)Frrst Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba üstatlar,

SqLite  veritabanı ve Firedac bileşenleri kullanarak basit bir Cv programı kodluyorum. Alttaki ekran görüntüsündeki çerçeveli alan fastreport DetailData alanında gösterilen detail tablo verileri. Bu alanı okla gösterilen sol sütunda band kullanmadan bir Memo içinde gösterebilmem mümkün mü? Bir Memo alan kullandığımda son kayıt geliyor sadece.

cvekran.png

Merhabalar,

- SubReport kullanabilirsiniz.
- SQL ile verilerinizi birleştirip yazdırabilirsiniz.
- Memo içerisine 1. alanı, alt satıra geçip 2. alanı, alt satıra geçip 3. alanı ekleyebilirsiniz.


Kolay gelsin.
(13-07-2023, Saat: 00:15)hi_selamlar Adlı Kullanıcıdan Alıntı: [ -> ]- SubReport kullanabilirsiniz.
- SQL ile verilerinizi birleştirip yazdırabilirsiniz.
- Memo içerisine 1. alanı, alt satıra geçip 2. alanı, alt satıra geçip 3. alanı ekleyebilirsiniz.
Cevap için teşekkürler sayın hocam.
Mevcut bilgimle tek tek uğraştım ama yapamadım :-(
Sql ile kayıt sayısını bulup ona göre detay tablodaki verileri Memo için nasıl yazdırabileceğim konusunda yardımcı olabilir misiniz? Sanırım en kestirme yol bu gibi ama emin değilim.


Şöyle yapmaya çalıştım ama "Object [ID] is not found." hatası aldım.

var
 sorgu: string;
begin
   sorgu := 'SELECT seviye FROM yetenek';
   FDQuery1.SQL.Clear;
   FDQuery1.SQL.Add(sorgu);
   FDQuery1.Open;
   while not FDQuery1.Eof do
   begin
     TfrxMemoView(frxReport1.FindObject('Memo1')).Lines.Add(FDQuery1.FieldByName('seviye').AsString);
     FDQuery1.Next;
   end;
(13-07-2023, Saat: 01:25)Frrst Adlı Kullanıcıdan Alıntı: [ -> ]
(13-07-2023, Saat: 00:15)hi_selamlar Adlı Kullanıcıdan Alıntı: [ -> ]- SubReport kullanabilirsiniz.
- SQL ile verilerinizi birleştirip yazdırabilirsiniz.
- Memo içerisine 1. alanı, alt satıra geçip 2. alanı, alt satıra geçip 3. alanı ekleyebilirsiniz.
Cevap için teşekkürler sayın hocam.
Mevcut bilgimle tek tek uğraştım ama yapamadım :-(
Sql ile kayıt sayısını bulup ona göre detay tablodaki verileri Memo için nasıl yazdırabileceğim konusunda yardımcı olabilir misiniz? Sanırım en kestirme yol bu gibi ama emin değilim.


Şöyle yapmaya çalıştım ama "Object [ID] is not found." hatası aldım.

var
 sorgu: string;
begin
   sorgu := 'SELECT seviye FROM yetenek';
   FDQuery1.SQL.Clear;
   FDQuery1.SQL.Add(sorgu);
   FDQuery1.Open;
   while not FDQuery1.Eof do
   begin
     TfrxMemoView(frxReport1.FindObject('Memo1')).Lines.Add(FDQuery1.FieldByName('seviye').AsString);
     FDQuery1.Next;
   end;

Merhabalar,

Öncelikle sorgunuzun döngüsünü bitirip en son aşamada sonucu göndermeniz gerekli.


procedure TForm1.Button1Click(Sender: TObject);
var
 sorgu: string;
begin
    sorgu:='• Delphi 7'+#13+#10+
           '• Delphi XE'+#13+#10+
           '• Delphi XE3'+#13+#10+
           '• Delphi XE5'+#13+#10+
           '• Delphi XE7'+#13+#10+
           '• Delphi XE11'+#13+#10+
           '* DelphiCan.com';

    TfrxMemoView(frxReport1.FindObject('Memo1')).Memo.Text:=sorgu;

    frxReport1.ShowReport(True);
end;

[attachment=2382]

Kolay gelsin.
Aslında tam olarak yapmak istediğim de bu idi. cv lerde olduğu şekilde madde imleri şeklinde.

Dediğiniz gibi Memo1 içinde kayıtlar harika şekilde gösteriliyor. Ama ben veritabanındaki verileri buna uyarlayamadım hocam. Tablo adı "yetenek" alan adı "seviye". Bahsettiğiniz şekilde veritabanındaki verileri bu şekilde çekmeyi başarırsam harika olacak. Eğer yapamazsam sağ taraftaki alanda DetadilData içinde göstereceğim.
(13-07-2023, Saat: 09:48)Frrst Adlı Kullanıcıdan Alıntı: [ -> ]Aslında tam olarak yapmak istediğim de bu idi.  cv lerde olduğu şekilde madde imleri şeklinde.

Dediğiniz gibi Memo1 içinde kayıtlar harika şekilde gösteriliyor. Ama ben veritabanındaki verileri buna uyarlayamadım hocam. Tablo adı "yetenek" alan adı "seviye". Bahsettiğiniz şekilde veritabanındaki verileri bu şekilde çekmeyi başarırsam harika olacak. Eğer yapamazsam sağ taraftaki alanda DetadilData içinde göstereceğim.

Merhabalar,

Hangi DB kullandığınızı belirtmemişsiniz.

SQL komutlarını araştırabilirsiniz.

LIST
STRING_AGG
CONCAT

Kolay gelsin.
İlk mesajda belirttiğim için gerek olmaz diye düşünmüştüm hocam. Sqlite ile birlikte firedac bileşenlerini kullanıyorum. Tablo adı yetenek ve alan adı seviye şeklinde.

Söylediğimiz yöntemleri araştıracağım ama benim düzeyimle üstesinden gelmek zor olacak.

------ Ekleme ----

Hocam şurada bulduğum kod ile ilk sütunu gösterebildim. Kodlarda hata var mı değerlendirirseniz sevinirim.

var
 names: TStringList;
 i: Integer;
 currentField: TField;
 currentLine: string;
begin
 With DataM do
 begin
   if not FDQuery1.IsEmpty then
   begin
     FDQuery1.First;
     names := TStringList.Create;
     try
       FDQuery1.GetFieldNames(names);
       while not FDQuery1.Eof do
       begin
         currentLine := '';
         // for i := 0 to names.Count - 1 do
         for i := 1 to names.Count - 3 do
         begin
           currentField := FDQuery1.FieldByName(names[i]);
           currentLine := '• ' + currentLine + ' ' + currentField.AsString;
         end;
         TfrxMemoView(frxReport1.FindObject('Memo1')).Lines.Add(currentLine).MaxValue;
         FDQuery1.Next;
       end;
     finally
       names.Free;
     end;
     frxReport1.ShowReport();
   end;
 end;
end;

Başarı ile ilgili sütunu da aynı şekilde kodları tekrar değiştirerek başlangıç ise: * ... uzman ise: ***** gibi bir görünümle göstermek istiyorum.
(13-07-2023, Saat: 14:54)Frrst Adlı Kullanıcıdan Alıntı: [ -> ]İlk mesajda belirttiğim için gerek olmaz diye düşünmüştüm hocam. Sqlite ile birlikte firedac bileşenlerini kullanıyorum. Tablo adı yetenek ve alan adı seviye şeklinde.

Söylediğimiz yöntemleri araştıracağım ama benim düzeyimle üstesinden gelmek zor olacak.

------ Ekleme ----

Hocam şurada bulduğum kod ile ilk sütunu gösterebildim. Kodlarda hata var mı değerlendirirseniz sevinirim.

var
 names: TStringList;
 i: Integer;
 currentField: TField;
 currentLine: string;
begin
 With DataM do
 begin
   if not FDQuery1.IsEmpty then
   begin
     FDQuery1.First;
     names := TStringList.Create;
     try
       FDQuery1.GetFieldNames(names);
       while not FDQuery1.Eof do
       begin
         currentLine := '';
         // for i := 0 to names.Count - 1 do
         for i := 1 to names.Count - 3 do
         begin
           currentField := FDQuery1.FieldByName(names[i]);
           currentLine := '• ' + currentLine + ' ' + currentField.AsString;
         end;
         TfrxMemoView(frxReport1.FindObject('Memo1')).Lines.Add(currentLine).MaxValue;
         FDQuery1.Next;
       end;
     finally
       names.Free;
     end;
     frxReport1.ShowReport();
   end;
 end;
end;

Başarı ile ilgili sütunu da aynı şekilde kodları tekrar değiştirerek başlangıç ise: * ... uzman ise: ***** gibi bir görünümle göstermek istiyorum.

Merhabalar,

Dosyayı inceleyin lüfen.
[attachment=2383]

Kolay gelsin.
Sayfalar: 1 2