Dbgrid + AdoQuery + bookmark
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- sarp_halit
- Üye
- Mesajlar: 241
- Kayıt: 17 Ara 2003 04:30
- Konum: Cennet Fethiye
- İletişim:
Dbgrid + AdoQuery + bookmark
Merhaba arkadaşlar,
bir prosedür yardımı ile timer bileşeni üzerinden istediğim kayıtları ado query ile her 2 dakikada bir listeletiyorum. ancak; listeleme her yapıldığında grid üzerindeki ilkkayda gidiyor. ben grid üzerinde en son bulunduğum kayıtta olmak istiyorum. yani her listelemede ben en son hangi kayıt üzerindeysem yine o kayıt üzerinde olmak istiyorum. bunun için bookmark kullanayım dedim ama o da bookmarkta her seferinde gridteki ilk kaydı baz alıyor.
bu konuda bana yardımcı olabilir misiniz lütfen?
teşekkür ederim.
bir prosedür yardımı ile timer bileşeni üzerinden istediğim kayıtları ado query ile her 2 dakikada bir listeletiyorum. ancak; listeleme her yapıldığında grid üzerindeki ilkkayda gidiyor. ben grid üzerinde en son bulunduğum kayıtta olmak istiyorum. yani her listelemede ben en son hangi kayıt üzerindeysem yine o kayıt üzerinde olmak istiyorum. bunun için bookmark kullanayım dedim ama o da bookmarkta her seferinde gridteki ilk kaydı baz alıyor.
bu konuda bana yardımcı olabilir misiniz lütfen?
teşekkür ederim.
Fethiye den herkese sevgiler ...
X))@:>
X))@:>
Re: Dbgrid + AdoQuery + bookmark
s.a.
getbookmark
gotobookmark
kolay gelsin.
getbookmark
gotobookmark
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
- sarp_halit
- Üye
- Mesajlar: 241
- Kayıt: 17 Ara 2003 04:30
- Konum: Cennet Fethiye
- İletişim:
Re: Dbgrid + AdoQuery + bookmark
şimdi ben soruyu yeniden okudum da anlatmak istediğimi tam anlatamamışım. benim sıkıntım bookmarka almak istediğim kayıt her seferinde tablonun ilk kaydı oluyor. değeri label'a yazdırdım. her seferinde gridin hangi hücresine tıklarsam tıklayayım hep aynı değer, ilk kaydın değeri çıkıyor. dolayısıyla da bookmark olarak hep ilk kaydı işaretliyor.
yani sorunun özü grdin seçilen hücre değerini bulmakta.
formlar arasında gridlerden bilgi alış verişi yapabiliyorum. normal şartlarda ile de istediğim değeri alabiliyorum. ama bu formda olmuyor. prosedür ise şu şekilde.
yani sorunun özü grdin seçilen hücre değerini bulmakta.
formlar arasında gridlerden bilgi alış verişi yapabiliyorum. normal şartlarda
Kod: Tümünü seç
dbgrid.datasource.dataset.fieldbyname('alan').asstring
Kod: Tümünü seç
procedure TfrmDispanel_calisan.RandevuGoster(doktor, servis,
tarih: string);
begin
with sorguHastalar do
begin
Close;
SQL.Clear;
SQL.Add('SELECT (TABLO.HASTAADI+'+CHR(39)+' '+CHR(39)+'+TABLO.HASTASOYADI) AS RANHASTA, Randevu.Saat, SERVISLER.SLT AS RSERVIS, doktor.SLT AS RDOKTOR, Randevu.ranDURUM, Randevu.ranID FROM Randevu');
SQL.Add(' LEFT JOIN TABLO ON Randevu.Hasta=TABLO.TCKIMLIKNO LEFT JOIN SERVISLER ON Randevu.Servis = SERVISLER.SLB LEFT JOIN doktor ON Randevu.Doktor = doktor.SLB');
SQL.Add(' WHERE (Convert(varchar(10),Randevu.Tarih,104) = '+chr(39)+tarih+chr(39)+') AND (Randevu.Servis='+chr(39)+servis+chr(39)+') AND (Randevu.Doktor='+chr(39)+doktor+chr(39)+') ORDER BY Randevu.ranID');
If Active = false then Active:=true;
Open;
end;
end;
Fethiye den herkese sevgiler ...
X))@:>
X))@:>
Re: Dbgrid + AdoQuery + bookmark
kodu şu şekilde denedinizmi?
Kod: Tümünü seç
procedure TfrmDispanel_calisan.RandevuGoster(doktor, servis,
tarih: string);
var bk:TBookmark;
begin
with sorguHastalar do
begin
bk:=getbookmark;
Close;
SQL.Clear;
...........
If Active = false then Active:=true;
Open;
gotobookmark(bk);
end;
end;
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
- sarp_halit
- Üye
- Mesajlar: 241
- Kayıt: 17 Ara 2003 04:30
- Konum: Cennet Fethiye
- İletişim:
Re: Dbgrid + AdoQuery + bookmark
yanıt biraz geç oldu ama maalesef bu da olmadı.
bir de kendimce şu şekilde bir mantık yürütüp onu denedim:
bk adında globak bir TBookmark değişkeni tanımladım. dbgrid'in cellclick olayında tıklanan değeri bookmark ettim. sonra prosedüre sorgudan sonra bookmarka git dedim yine yapmadı. şimdi bir de prosedür çalıştıktan sonra gotobookmark deniyorum o da olmadı. ama şöyle bir sorun farkettim.
ben burada iki ayrı form kullanıyorum birinci form kullanıcı ekranında ikinci form ise dışarıda yani ikinci ekranda gösteriliyor. kullanıcı kendi ekranındaki dbgride tıkladığından dış ekranda labelda tıklanılan hücredeki istenilen veri gösteriliyor.
kontrol için iç ekrana da bir label koydum. burada dediğimde sadece ilk tıklama gösteriyor diğerleri göstermiyor. ama dış ekran için ise olarak yazıyorum bu normal çalışıyor.
peki ben burada datasource.dataset.fieldbyname('alanadi').Asstingi bookmarka nasıl atayabilirim?
bir de kendimce şu şekilde bir mantık yürütüp onu denedim:
bk adında globak bir TBookmark değişkeni tanımladım. dbgrid'in cellclick olayında tıklanan değeri bookmark ettim. sonra prosedüre sorgudan sonra bookmarka git dedim yine yapmadı. şimdi bir de prosedür çalıştıktan sonra gotobookmark deniyorum o da olmadı. ama şöyle bir sorun farkettim.
ben burada iki ayrı form kullanıyorum birinci form kullanıcı ekranında ikinci form ise dışarıda yani ikinci ekranda gösteriliyor. kullanıcı kendi ekranındaki dbgride tıkladığından dış ekranda labelda tıklanılan hücredeki istenilen veri gösteriliyor.
kontrol için iç ekrana da bir label koydum. burada
Kod: Tümünü seç
label1.caption:=sorguHastalar.FieldValues['RANHASTA']
Kod: Tümünü seç
dbgrid1.DataSource.dataset.fieldbyName('RANHASTA').AsString;
peki ben burada datasource.dataset.fieldbyname('alanadi').Asstingi bookmarka nasıl atayabilirim?
Fethiye den herkese sevgiler ...
X))@:>
X))@:>
Re: Dbgrid + AdoQuery + bookmark
timer kodunu aşağıdaki gibi değiştir..belirtiğim alana işlem yapan kodlarını yaz.
Kod: Tümünü seç
var
Satir:TBookmark;
begin
if Query.Active and not Query.isEmpty then begin
try
Satir:=Query.BookMark;
// Buraya kodlarını yaz
if Satir<>nil then
Query.BookMark:=Satir;
except
Query.Last;
end;
end;
- sarp_halit
- Üye
- Mesajlar: 241
- Kayıt: 17 Ara 2003 04:30
- Konum: Cennet Fethiye
- İletişim:
Re: Dbgrid + AdoQuery + bookmark
teşekkür ederim ama query.bookmark bende hata veriyor. ( Adoquery'de bookmark diye kullanabilecğeim bir şey yok). ben biraz daha kurcalıyorum bakalım bir şeyler olursa yine haber veririm ...
Fethiye den herkese sevgiler ...
X))@:>
X))@:>
Re: Dbgrid + AdoQuery + bookmark
sarp_halit bookmark yok ise başka birşey vardır ama aklıma başka bir yöntem geldi. Mutlaka tekil bir ID alanın vardır AdoQuey de( Olması lazım ) Şimdi sana gönderdiğim kodda bookmark yerine bu ID değerini integer değişkene aktar sonra işlem bittikten sonra Locate ile istenilen kayda konumlan....bu sefer oldu galiba
Re: Dbgrid + AdoQuery + bookmark
Kod: Tümünü seç
var
Bookmark: TBookmarkStr;
Total: Double;
begin
Bookmark := Cds.Bookmark;
try
cds.DisableControls;
Total := 0;
try
cds.First;
while not cds.EOF do
begin
Total := Total + cdsSalary.Value;
cds.Next;
end;
finally
cds.EnableControls;
end
finally
cds.Bookmark := Bookmark;
end;
MessageDlg ('Total ' +
Format ('%m', [Total]), mtInformation, [mbOK], 0);
end;
Bir kelimenin anlamını öğretsen bile yeter..
Re: Dbgrid + AdoQuery + bookmark
s.a.
bana kalırsa sıkıntı bookmarklarda değil.
@sarp_halit arkadaşımızın kodlama tekniğinde.
query ile seçtiği kayıtları hangi bileşen(ler)de nasıl gösteriyor. soruda eksik kalan bişeyler var gibi geliyor.
bana kalırsa sıkıntı bookmarklarda değil.
@sarp_halit arkadaşımızın kodlama tekniğinde.
query ile seçtiği kayıtları hangi bileşen(ler)de nasıl gösteriyor. soruda eksik kalan bişeyler var gibi geliyor.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
- sarp_halit
- Üye
- Mesajlar: 241
- Kayıt: 17 Ara 2003 04:30
- Konum: Cennet Fethiye
- İletişim:
Re: Dbgrid + AdoQuery + bookmark
@conari öncelikle mesajın için teşekkür ederim ancak; kullandığım veritabanı işyerinde olduğundan şimdi deneme şansım yok. ama yarın dener sonucunu paylaşırım.
@aslangeri: proje bir randevu sistemi ile ilgili. internetten ya da programdan girilen kayıtlar hem doktor ekranında hem de dış ekranda gösteriliyor. sorgu bir prosedüre bağlı ve her ikisi de dbgrid üzerinde gösteriliyor. timer nesnesi her 60 sn de bir prosedürü çağırıyor. tabi prosedür çalışınca doğal olarak ilk kayda gidiyor. benim amacım ise: timer her tetiklediğinde en son hangi hastada isem cursorun yine o hasta üzerinde kalması. ama senin dediğin gibi sanırım benim kodlama mantığımda bir sıkıntı var; çünkü dbgrid'in oncellclick olayında ranID değerini göstermek istiyorum ama ulaşamıyorum. sanırım bookmark etmemesinin de sebebi bu olsa gerek.
ben yarın bu prosedürü bir kez daha gözden geçireyim ama kayıtların listelenmesinde herhangi bir sorun yok gibi geliyor. otokontrolde her zaman fayda vardır değil mi?
paylaşımınızdan ve yardımlarınızdan dolayı hepinize teşekkür ederim.
@aslangeri: proje bir randevu sistemi ile ilgili. internetten ya da programdan girilen kayıtlar hem doktor ekranında hem de dış ekranda gösteriliyor. sorgu bir prosedüre bağlı ve her ikisi de dbgrid üzerinde gösteriliyor. timer nesnesi her 60 sn de bir prosedürü çağırıyor. tabi prosedür çalışınca doğal olarak ilk kayda gidiyor. benim amacım ise: timer her tetiklediğinde en son hangi hastada isem cursorun yine o hasta üzerinde kalması. ama senin dediğin gibi sanırım benim kodlama mantığımda bir sıkıntı var; çünkü dbgrid'in oncellclick olayında ranID değerini göstermek istiyorum ama ulaşamıyorum. sanırım bookmark etmemesinin de sebebi bu olsa gerek.
ben yarın bu prosedürü bir kez daha gözden geçireyim ama kayıtların listelenmesinde herhangi bir sorun yok gibi geliyor. otokontrolde her zaman fayda vardır değil mi?
paylaşımınızdan ve yardımlarınızdan dolayı hepinize teşekkür ederim.
Fethiye den herkese sevgiler ...
X))@:>
X))@:>
Re: Dbgrid + AdoQuery + bookmark
bookmark işlemlerini kayıtları güncellediğiniz yerde yapmanız lazım.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: Dbgrid + AdoQuery + bookmark
aktif satırın id sini alıp daha sonra da o satıra locate ettireceksiniz. Hangi gridi kullanıyorsunuz bilmiyorum ama bazılarının istenen satıra gitme özelliği var.
- sarp_halit
- Üye
- Mesajlar: 241
- Kayıt: 17 Ara 2003 04:30
- Konum: Cennet Fethiye
- İletişim:
Re: Dbgrid + AdoQuery + bookmark
daha önce de dediğim gibi aktif satırın idsini label a yazdırmak istediğimde sadece ilk satırınkini alıyor. o yüzden de bookmark olarak da ilk satırı görüyor. sorun da buradan kaynaklanıyor zaten. normal dbgrid kullanıyorum. ( delphi ile gelen )
aynı projede belki 20 tane dbgrid ile işlem yaptım ama bu sorun sadece bu formda oldu. neden bu şekilde bir işlem yaptı anlamadı
prosedürün kodu yukarıda var ama inceleme için bir kez daha vereyimÇ
timer her bir dakikada bir bu prosedürü çağırıyor. ama benim esas sorunum bookmarktan ziyade id alanını alamamaktan kaynaklanıyormuş; çünkü her seferinde ilk satırın id numarasını alabiliyorum.
aynı projede belki 20 tane dbgrid ile işlem yaptım ama bu sorun sadece bu formda oldu. neden bu şekilde bir işlem yaptı anlamadı
prosedürün kodu yukarıda var ama inceleme için bir kez daha vereyimÇ
Kod: Tümünü seç
procedure TfrmDispanel_calisan.RandevuGoster(doktor, servis,
tarih: string);
begin
with sorguHastalar do
begin
Close;
SQL.Clear;
SQL.Add('SELECT webRANDEVU.ranID, webRANDEVU.ranDURUM, webRANDEVU.drDURUM, webRANDEVU.Saat, (ADRES.HASTAADI+'+CHR(39)+' '+CHR(39)+'+ADRES.HASTASOYADI) AS RANHASTA, SERVISLER.SLT AS RSERVIS, doktor.SLT AS RDOKTOR FROM webRANDEVU');
SQL.Add(' LEFT JOIN ADRES ON webRANDEVU.Hasta=ADRES.TCKIMLIKNO LEFT JOIN SERVISLER ON webRANDEVU.Servis = SERVISLER.SLB LEFT JOIN doktor ON webRANDEVU.Doktor = doktor.SLB');
SQL.Add(' WHERE (Convert(varchar(10),webRANDEVU.Tarih,104) = '+chr(39)+tarih+chr(39)+') AND (webRANDEVU.Servis='+chr(39)+servis+chr(39)+') AND (webRANDEVU.Doktor='+chr(39)+doktor+chr(39)+') ORDER BY webRANDEVU.ranID');
If Active = false then Active:=true;
end;
end;
Fethiye den herkese sevgiler ...
X))@:>
X))@:>
Re: Dbgrid + AdoQuery + bookmark
Verdiğin procedure içinde şunu yap dediğimiz bir kod bulunmuyor...Aşağıdakini dene
Kod: Tümünü seç
procedure TfrmDispanel_calisan.RandevuGoster(doktor, servis,
tarih: string);
var
ID:integer;
begin
ID:=sorguHastalar.FieldbyName('ID').Asinteger;
with sorguHastalar do
begin
Close;
SQL.Clear;
SQL.Add('SELECT webRANDEVU.ranID, webRANDEVU.ranDURUM, webRANDEVU.drDURUM, webRANDEVU.Saat, (ADRES.HASTAADI+'+CHR(39)+' '+CHR(39)+'+ADRES.HASTASOYADI) AS RANHASTA, SERVISLER.SLT AS RSERVIS, doktor.SLT AS RDOKTOR FROM webRANDEVU');
SQL.Add(' LEFT JOIN ADRES ON webRANDEVU.Hasta=ADRES.TCKIMLIKNO LEFT JOIN SERVISLER ON webRANDEVU.Servis = SERVISLER.SLB LEFT JOIN doktor ON webRANDEVU.Doktor = doktor.SLB');
SQL.Add(' WHERE (Convert(varchar(10),webRANDEVU.Tarih,104) = '+chr(39)+tarih+chr(39)+') AND (webRANDEVU.Servis='+chr(39)+servis+chr(39)+') AND (webRANDEVU.Doktor='+chr(39)+doktor+chr(39)+') ORDER BY webRANDEVU.ranID');
Open;
end;
sorguHastalar.Locate('ID',ID,[]);
end;