Yorumları: 20
Konuları: 4
Kayıt Tarihi: 08-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 20
Başlangıç
Data module de bulunan QGrAdBul (Query nin) SQL içeriği :
"
SELECT
GRUP_ISMI
FROM STOKGR
WHERE
GRUP_KOD = :GRUP_KOD
"
Function TDataModule1.StokGrupAdBul(GrKod:String):String;
Begin
QGrAdBul.Close;
QGrAdBul.Params[0].AsString := GrKod;
QGrAdBul.Open;
Result:= QGrAdBul.FieldByName('GRUP_ADI').AsString ;
end;
*****************************************
procedure TFAnaForm.Button1Click(Sender: TObject);
var
GrKod:String;
begin
GrKod:= edit1.text;
CAPTion:=DataModule1.StokGrupAdBul(GrKod);
end;
********************************************************
Ana form da uses kısmında datamodule yı tanımlaman gerekiyor (Bu kısımları bıldıgını dusunuyorum)..
Burda Data module de grup kodu verilen stok grubunun adını geri donduren bir fonksıyon yazdık...
ana formda da grup kodu girilerek grup ismini programa (ekrana ) aktarmış olduk...
burda datamodul de kullanılan SQL filtrelemelerı sen geliştirebilirsınn..
Bu arada Ana form dan Datamodule de bulunan SQL sorgulamalarını çekiyoruz...(procedure veya function larla )
Yorumları: 186
Konuları: 41
Kayıt Tarihi: 19-10-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 236
Acemi
Aslında yapmaya çalıştığım şey şu:
Form içinde CxGrid nesnem var. Bunun otomatik sayfalama özelliği (fetch) var. Ancak tablo ve kayıt sayısı çok olduğu için data modül içindeki query lerin hepsi başlangıçta Close durumda. İlgili query yi formun Create eventinde aktifleştiriyorum. Gerekli SQL kodlarını yazıyorum. Sonrasında form açıldığında CxGrid ile sayfalandırılmış şekilde kayıtları göstermek istiyorum.
Formun ilk açılışında, CxGrid in de sayfalama yapabileceği, ama belirli sayıda kaydın getirilebileceği bir yöntem arıyorum. LIMIT kullandığımda CxGrid bu limite göre işlem yapıyor ve sonraki kayıtları göstermiyor.
Yorumları: 1.499
Konuları: 83
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 12.314
Üstad
(02-12-2024, Saat: 11:53)nehirnnn Adlı Kullanıcıdan Alıntı: Aslında yapmaya çalıştığım şey şu:
Form içinde CxGrid nesnem var. Bunun otomatik sayfalama özelliği (fetch) var. Ancak tablo ve kayıt sayısı çok olduğu için data modül içindeki query lerin hepsi başlangıçta Close durumda. İlgili query yi formun Create eventinde aktifleştiriyorum. Gerekli SQL kodlarını yazıyorum. Sonrasında form açıldığında CxGrid ile sayfalandırılmış şekilde kayıtları göstermek istiyorum.
Formun ilk açılışında, CxGrid in de sayfalama yapabileceği, ama belirli sayıda kaydın getirilebileceği bir yöntem arıyorum. LIMIT kullandığımda CxGrid bu limite göre işlem yapıyor ve sonraki kayıtları göstermiyor.
Merhaba, öncelikle sorgularınızı stored procedure'ler içinde barındırmalısınız. Bunun bir çok faydasından istifade edebilirsiniz. Ardından veri getiren stored procedure'niz içinde sayfalama işlemi yaptırabileceğiniz bir mekanizma kurmalısınız. Her veritabanı dilinde bu tarz işler için bir kısım fonksiyonlar mevcuttur. Örneğin; SQL Server'da:
OFFSET 100 ROWS
FETCH NEXT 50 ROWS ONLY;
gibi. Ya da basitçe kendi mekanizmanızı da yazabilirsiniz. Örneğin 100 kayıt çektiniz, en son çektiğiniz kaydın ID'si 137 olsun. Sizin SELECT cümlenizin WHERE kısmında ID > @SonGondereceginizID gibi bir parametre kullanabilir ve @SonGondereceginizID parametrenizin değeri olarak da 137 geçebilirsiniz. Böylece uygulama tarafında her zaman istediğiniz sayıda kaydınız elinizde olur.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
Yorumları: 1.898
Konuları: 22
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 21.184
Üstad
uzun lafın kısası, mesajınızda belirttiğiniz SELECT cümlesi tüm kayıtları getir diyor.
Yapmanız gereken kod yazarak hazırladığınız yazılımın ilk önce ekran çözünürlüğü içerisinde ve grid font tipi büyüklüğüne göre kaç kayıt görüntülenebiliyorsa onun iki katı vb. adet kayıtla limitleri daha SELECT cümlesi aşamasında belirlemeniz ve öyle açmanız.
Kullanıcı eğer son kayıtlara veya ilerleme yönünde daha önceki kayıtlara yaklaşırsa -ki bunu veritabanı aktif kayıt numarası takibi ile gride bakmadan yapabilirsiniz - bu durumda..
1. Kullanıcının üzerinde bulunduğu son kayıt anahtarı bir değişkene alıp
2. Sonraki veya duruma göre önceki sayfayı içeren yeni bir SELECT cümlesi kurulmalı
3. Gelen kayıtlar içerisinde değişkende tutulan anahtarlı kayda konumlanmalı.
İşte bu arka plan işlemleri ile kullanıcı sanki tüm kayıtlar içerisinde dolaşıyor hissi alır.
Bu şekilde Dbgrid bile kullanmayıp herhangi bir listview ile dahi bu gösterim işlemleri yapılabilir.
İllüzyon burada.
Fetch count vb ile gelen veri sayısı limitleri belirlenebilir ancak kontrol sizde olmalı.
Saygılarımla
Muharrem ARMAN