istediğimiz kayıtları seçerek raporlama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
EdaNuR
Üye
Mesajlar: 20
Kayıt: 17 Ara 2003 10:43

istediğimiz kayıtları seçerek raporlama

Mesaj gönderen EdaNuR »

arkadaşlar dbgridte listelediğim kayıtları raporlama alırken dbgritte sadece işaretlediğim kayıtları listelesin böyle bir seçenek koymak istiyorum. dbgrid satırlarına listeleme aldığımızda checkbox eklenebilirmi yada buna benzer bişey.. dbgrid`te listelemede mesala checkbox ını işaretlediğim kayıtlar raporlanacak. forumu taradım ama bunla ilgili tam kod örnek çözüm bulamadım yardımcı olursanız sevinirim.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

tablona secili diye boolean bir alan ekle
tabloyu acarken bu alanı sıfırlarsın
sonra grid uzerinde cift clik yapınca aktif kaydı edit yapıp secili alanının tersini alırsın

Kod: Tümünü seç

tablo1.edit;
tablo1.FieldByName('secili').AsBoolean:=not tablo1.FieldByName('secili').AsBoolean;
tablo1.post;
rapor alırkende secili alana gore filtreleme yapabilirsin isini kolaylastırır

hatta gridin OnDrawColumn olayı ile secili alanının icerigine gore satırı renklendirirsin
checkbox kullanmana gerek yok bu sekilde

eger kullanmak istersen bir DbCheckBox ı for uzerine koy ve
Gridin OnDrawColumnCell olayını kullanarak grid uzeirne yapıstırabilirsin
ÜŞENME,ERTELEME,VAZGEÇME
EdaNuR
Üye
Mesajlar: 20
Kayıt: 17 Ara 2003 10:43

re

Mesaj gönderen EdaNuR »

teşekkürler sağolun.
bu arada tabloya secili diye boolean bir alan nasıl eklenir.sql kullanıyoruz.. ¿

boolean nedemek olduğunu araştırdım : pascal'da 1 byte yer kaplayan degi$ken tipi.. sadece true veya false degerleri alabilirmiş.

biz bu terimlere yabancıyız daha çok örnek kodlarla bi işi öğrenmeye çalışıyoruz.birazda hazırcılık oluyor ..ama kodların ne olduğunu ezberleyerek ne işe yaradığını buluyoruz galiba öğrenicez bu işi :oops:
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

tablonuzu runtime da olusturuyorsanız
table1.fielddefs.Add() fonk.ile alan ekleyebilirsiniz
(parametreleri icin helpe bknz.)

yok eger database desktop ta olusturuyorsanız
restructure dugmesine basıp yeni alanınızı ekliyorsubnuz
ÜŞENME,ERTELEME,VAZGEÇME
EdaNuR
Üye
Mesajlar: 20
Kayıt: 17 Ara 2003 10:43

re..

Mesaj gönderen EdaNuR »

Sayın @gkimirti tabloma gerekli alanı ekledim..

ilgili kodu nereye yazmam gerekiyor.. ¿
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

DbGrid in onDblClik olayına
yukarda da tarif ettigim gibi
ÜŞENME,ERTELEME,VAZGEÇME
EdaNuR
Üye
Mesajlar: 20
Kayıt: 17 Ara 2003 10:43

re

Mesaj gönderen EdaNuR »

tablo1.edit;
tablo1.FieldByName('secili').AsBoolean:=not tablo1.FieldByName('secili').AsBoolean;
tablo1.post;

bu kod olmadı :(
tablo1 i nasıl edit etsin zaten sql kullanıyoruz bu kodu ozaman

dm.Query1.edit;
dm.Query1.FieldByName('secili').AsBoolean:=not dm.Query1.FieldByName('secili').AsBoolean;
dm.Query1.post;

şeklinde değiştirmem lazım buda hata veriyor. :roll:

en eyisi checkbox yöntemi ile ilgili kod bulmak yardımlarınız için çok teşekkürler..
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

eğer karışık bir sorgu / query kullanmıyorsan (order by vs yoksa) Query nin RequestLive özelliğini True yaparak yapabilirsin.

Ama bu sorunun tam cevabı ise bookmarklar kullanmaktır. Bunun için Query1.GetBookmark ın helpine bakman lazım.

Helpten yapıştırdığım aşağıdaki örnekte seçili olanları bir string te toplayıp listbox a ekliyor. sen de benzer bir şey yapacaksın.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  i, j: Integer;
  s: string;
begin
  if DBGrid1.SelectedRows.Count>0 then
    with DBGrid1.DataSource.DataSet do
      for i:=0 to DBGrid1.SelectedRows.Count-1 do
      begin
        GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
        for j := 0 to FieldCount-1 do
        begin

          if (j>0) then s:=s+', ';
          s:=s+Fields[j].AsString;
        end;
        Listbox1.Items.Add(s);
        s:= '';
      end;
end;
EdaNuR
Üye
Mesajlar: 20
Kayıt: 17 Ara 2003 10:43

re

Mesaj gönderen EdaNuR »

çok teşekkürler..ListBox ta toplayıp o şekilde yaptım.. Bu kod işimi gördü tekrar teşekkürler. :D

Kod: Tümünü seç

procedure TFrmsecmen.BtnSbkEkleClick(Sender: TObject);
var
  i, j: Integer;
  s: string;
begin
  if DBGrid14.SelectedRows.Count>0 then
    with DBGrid14.DataSource.DataSet do
      for i:=0 to DBGrid14.SelectedRows.Count-1 do
      begin
        GotoBookmark(pointer(DBGrid14.SelectedRows.Items[i]));
        for j := 0 to FieldCount-1 do
        begin

          if (j>0) then s:=s+', ';
          s:=s+Fields[j].AsString;
        end;
        Listbox1.Items.Add(s);
        s:= ''; 
      end;
end;

end.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

rica ederim.
EdaNuR
Üye
Mesajlar: 20
Kayıt: 17 Ara 2003 10:43

re

Mesaj gönderen EdaNuR »

herşey tamam istediğim kayıtları ListBox ta topluyorum ama bunu raporlamaya nasıl atıcam :roll: yada direkt olarak listboxtan yazdırma olayı nasıl.teşekkürler
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Bence en kolayı; seçtiğin kayıtların primary key lerinden aralarında virgül koyup bir string oluşturursan { where pk in (23, 2321, 454, 565) } şeklinde kullanıp bir sorgu oluşturarak QR den raporlayabilirsin.

Ayrıca hangi raporlama aracını kullandığını yazmamışsın.
Kullanıcı avatarı
altunway
Üye
Mesajlar: 217
Kayıt: 11 Haz 2003 09:16
Konum: İstanbul
İletişim:

Merhaba

Mesaj gönderen altunway »

S.A

Öncelikle Herkese Kolay Gelsin..

EdaNur Arkadasım Ben Bu İşlemi Şu Şekilde Yapıyorum;

Diyelim ki Adres Kayıtlarımız Var..Farklı Bir isimle aynı Tablodan bir tane daha olusturuyorum..DbGrid'de kayıtın ustune çift tıklamada veya herhangi bir klavye tusuna basarak yeni olusturdugum tabloya bu kayıtı atıyorum..Ve Yazdırma işlemlerini o tablo uzerinden yapıyorum..İşlemler bitince tabloda ki butun verileri siliyorum..

Umarım anlatabilmişimdir. Kolay Gelsin.
EdaNuR
Üye
Mesajlar: 20
Kayıt: 17 Ara 2003 10:43

re.

Mesaj gönderen EdaNuR »

peki DbGrid'de kayıtın ustune çift tıklamada veya herhangi bir klavye tusuna basarak yeni olusturdugun tabloya bu kayıtı hangi kodla atıyor..

ben bu işin içinden çıkamadım birtürlü..herşey tamam burda takıldık...kafayı yemek üzereyim. :(

Sayın @rsimsek raporlama aracı olarak QR kullanıyorum

anlatımlarınız çok prof arkadaşlar biz zaten acemiyiz..

mesala örnek olarak şöyle olabilir..

///mesela kod şu

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.

//sonraki işlem


DBgrid in DblClick ine bunu yazın

///sonraki işlem vs vs vs .. gibi olabilir ..

yardımlarınız için çok sağolun
Cevapla