Sel.al arkadaşlar.dbgridimde ki seçili kayıtları raporlamak ve bbaşka bi tabloya kaydetmek için bi tbookmarklist tanımladım.şöyle bi sorun var.rapor ekranında görüntülemek için ayrı bi tuşum ve tabloya girmek için ayrı bi tuşum var.rapor tuşuna basılınca örneğin gridde 10 kayıt varsa seçilen kayıtlardan biri onlarca kez görüntüleniyor.bu sorun herzaman olmuyor.arada sırada oluyor.şimdi tanımladığım bookmarkı her kullanımdan önce yada kullanımdan sonra içeriğini nasıl temizlerim.bookmarkı şu şekilde kullanıyorum.ama farklı 2 tuş altında bookmarklarım tanımlı.kodlar şu şekilde.
procedure Tfkankabul.JvXPButton1Click(Sender: TObject);
var
secim: TBookMarkListeh;
i: integer;
Kayit: TBookMark;
begin
tetkiklistesi.DisableControls;
secim:=DBGrideh2.SelectedRows;
for i:=0 to secim.Count-1 do begin
Kayit:=TBookMark(secim.Items);
tetkiklistesi.GotoBookmark(Kayit);
tabloya kayıt girerken kullandığım ksıımda şu şekilde
procedure Tfkankabul.JvXPButton32Click(Sender: TObject);
var
secim: TBookMarkListeh;
i: integer;
Kayit: TBookMark;
begin
tetkiklistesi.First;
tetkiklistesi.DisableControls;
secim:=DBGrideh2.SelectedRows;
sanırım burda bookmarklarla ilgili bisorun var.örneğin rpor tşundaki bookmarkı kullandıktan sonra nasıl temizlerim.
bookmarkla ilgili.
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
Re: bookmarkla ilgili.
Aleyküm Selam.meron06 yazdı:dbgridimde ki seçili kayıtları raporlamak ve bbaşka bi tabloya kaydetmek için bi tbookmarklist tanımladım.
BookMark'ın kullanım amacı tam olarak bu değil.Kullanman gereken yöntem yazdırılmak istenen kayıtları (yani seçilenleri..) bir memory tableye atmak ve oradan raporlamak.
Kolay gele..
buradaki sorun tbookmark kullanmaktan kaynaklanıyor olabilir..
çünkü tbookmark kullandıktan sonra
queryx.FreeBookmark(yerimi);
şeklinde yok edilmesi gerekiyor..
tbookmar yerine tbookmarkstr kullanmayı dene.. delphi6 ve üzerinde geçerlidir..
örnek;
viewtopic.php?t=10168&highlight=tbookmarkstr
çünkü tbookmark kullandıktan sonra
queryx.FreeBookmark(yerimi);
şeklinde yok edilmesi gerekiyor..
tbookmar yerine tbookmarkstr kullanmayı dene.. delphi6 ve üzerinde geçerlidir..
örnek;
viewtopic.php?t=10168&highlight=tbookmarkstr
TBookmark bir pointer,
bm:=nil; seklinde icindeki adresi bosaltırsınız.
bu kodda secili kayıtlar arasında gezinip ne yapıyorsun,
kodun tamamını (asagıdaki icin de) gonderirsen daha acıklayıcı olur sanırım.
Ayrıca TBookMarkListeh veritipi senin olusturdugun bir tip sanırım, bunun yerine
seklinde bir yapı kullanabilirsin
bm:=nil; seklinde icindeki adresi bosaltırsınız.
secim:=DBGrideh2.SelectedRows;
for i:=0 to secim.Count-1 do begin
Kayit:=TBookMark(secim.Items);
tetkiklistesi.GotoBookmark(Kayit);
bu kodda secili kayıtlar arasında gezinip ne yapıyorsun,
kodun tamamını (asagıdaki icin de) gonderirsen daha acıklayıcı olur sanırım.
Ayrıca TBookMarkListeh veritipi senin olusturdugun bir tip sanırım, bunun yerine
Kod: Tümünü seç
var
i: Integer;
begin
if JvDBUltimGrid.SelectedRows.Count > 0 then
with DataSource.DataSet do
begin
for i := 0 to JvDBUltimGrid.SelectedRows.Count - 1 do
begin
GotoBookmark(Pointer(JvDBUltimGrid.SelectedRows.Items[i]));
Edit;
FieldByName('DEL').AsInteger := 1;
Post;
end;
RefreshRec;
end;
end;
ÜŞENME,ERTELEME,VAZGEÇME
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
Yazmayacaktım duramadım, senin yapmak istediğin şeyin BookMark'la ilgisi yok, MemoryTable kullanarak çözmen gereken bir durum.BookMark bir işaretçidir ve aktif kaydın numarasını tutar.Yaptığın işlem içerisinde eğer tablonun kayıt okuyucusu bir değişiklik yapıyorsa yani ileri, geri, ilk kayıt, son kayıt gibi aktif kaydı değiştiriyorsa ve sen işlem sonunda tekrar ilgili kaydı aktif etmek istiyorsan kullanılman gereken bir araçtır.Tabii seçim yine de senin
Kolay gele..
Kolay gele..