dbgrid çift kayıt

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
doktoraltun
Üye
Mesajlar: 73
Kayıt: 06 Oca 2012 06:56

dbgrid çift kayıt

Mesaj gönderen doktoraltun »

selamun aleyküm arkadaşlar ufak bir problemim var bir turlu bulamadım

şöyleki sql den çekmiş olduğum veriyi dbgride yansıtıyorum sonra

Kod: Tümünü seç

with ADOQuery3 do
begin
  DisableControls;
  sql.Text:='SELECT kisi_adi FROM tbl_sonuc  GROUP BY kisi_adi HAVING COUNT(kisi_adi)>1 ';
  EnableControls;
  open;
end;
şeklinde çift kayıtları tespit etmeye çalışıyorum ama aramayı tekrardan sqlde gerçekleştirip butun db deki çift kayıtları ekrana yazdırıyor

ben ise arama yaparak dbgrid listesindeki filtrelemiş oldugum veriden çift kayıt aramak istiyorum ama bir turlu başaramadım.

bunu listboxtada denedim ve aradım ama bir turlu bulamadım ikiside olur birşekilde yardımcı olacak veya olmuyacak herkeze teşekkurlerimi sunuyorum :)
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: dbgrid çift kayıt

Mesaj gönderen mrmarman »

Merhaba.

- Bu yazdığınız SQL satırını filtre unsuru olarak kullanıp, aynı tablodan yeniden veri çekerseniz istediğinizi değerlendirdiğim şekilde çıktı alırsınız. Doğru anlamışsam :

Kod: Tümünü seç

Ali Ankara
Veli Kayseri
Ali İstanbul
Mustafa İstanbul
Muharrem İzmir
gibi bir listeden sadece

Kod: Tümünü seç

Ali Ankara
Ali İstanbul
çıktısını almak istiyorsunuz. Diğerleri tek olduğundan görünmeyecek ama birden fazla olanları fazlalıklarıyla birlikte görmek istiyorsunuz. Umarım doğru anlamışımdır.

Kod: Tümünü seç

  with ADOQuery3 do
  begin
    Active := False;
    SQL.Clear;
    SQL.Add('SELECT * FROM tbl_sonuc');
    SQL.Add('WHERE 1=1');
    SQL.Add('AND kisi_adi in ( SELECT kisi_adi FROM tbl_sonuc  GROUP BY kisi_adi HAVING COUNT(kisi_adi)>1 ) ');
    SQL.Add('ORDER BY kisi_adi ');
    Active := True;
  end;
Resim
Resim ....Resim
doktoraltun
Üye
Mesajlar: 73
Kayıt: 06 Oca 2012 06:56

Re: dbgrid çift kayıt

Mesaj gönderen doktoraltun »

hocam dediğinizi yaptım ama olmadı bu sefer butunkayıtları çekiyor nevar ne yok herşeyi tabloya dziiyor
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: dbgrid çift kayıt

Mesaj gönderen mrmarman »

Tam olarak istediğiniz benim anladığım ve örneklendirdiğim şekilde midir ? Onu söylerseniz nerede ayrıldığımızı anlarız. :idea:
Resim
Resim ....Resim
doktoraltun
Üye
Mesajlar: 73
Kayıt: 06 Oca 2012 06:56

Re: dbgrid çift kayıt

Mesaj gönderen doktoraltun »

hocam aynı dediğiniz şeyi yapmaya çalışıyorum 6 saatimi verdim gözlerime karasular indi resmen :S
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: dbgrid çift kayıt

Mesaj gönderen mrmarman »

- O zaman size verdiğim kod doğru.

- Tüm tabloyu döküyor dediğiniz çıktının gelen içeriğini incelerseniz kisi_adi (1)'den fazla olanlardır. Aksi ise ekran resmiyle örnekleyerek anlatın. :idea:

- Şimdi çıktı üzerinden şunu da istemiyorum dediklerini olacaktır. Bunları tespit edip bu sorguyu özelleştirin.
Resim
Resim ....Resim
doktoraltun
Üye
Mesajlar: 73
Kayıt: 06 Oca 2012 06:56

Re: dbgrid çift kayıt

Mesaj gönderen doktoraltun »

Kod: Tümünü seç

with ADOQuery3 do
begin
  close;
  sql.Clear;
  sql.Text:='select * from tbl_sonuc where ozellik_adi like ''gezmeyisever'' or ozellik_adi like ''kayserili''';
 open;
end;
bu şekilde eleme yaptıktan sonra sadece kişi listesindeki aynı isimleri bulmaya çalışıyorum
doktoraltun
Üye
Mesajlar: 73
Kayıt: 06 Oca 2012 06:56

Re: dbgrid çift kayıt

Mesaj gönderen doktoraltun »

evet doğru verdiğiniz kod ama bu kod direk dbgridte filtrelenmiş olanlar uzerinde arama yapmıyor gibime geldi kisi_adi tablosunu gösteriyor gibi
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: dbgrid çift kayıt

Mesaj gönderen mrmarman »

A-ha...
- DBGrid'de filtrelenmiş olanlar dediniz.. Zil çaldı...

- DBGrid'de filtrelemeyi de bu SQL'e yıkmalısınız. :idea:
Resim
Resim ....Resim
doktoraltun
Üye
Mesajlar: 73
Kayıt: 06 Oca 2012 06:56

Re: dbgrid çift kayıt

Mesaj gönderen doktoraltun »

işte hocam onu bir türlü başaramıyorum
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: dbgrid çift kayıt

Mesaj gönderen mrmarman »

Hocam, bu başlıktaki diyaloğa sanki üçüncü bir üye gözüyle bakar mısınız ?
- Soru sorarken herhangi veri sunmazsanız neye cevap vermemizi talep ediyorsunuz ? Olmaması gereken şekilde bir sohbet içeriğine dönüyor.

- DBGrid'de filtreli diyorsunuz ya, nasıl bir uygulama içerisindesiniz bunu bari yazın da SQL'e nasıl dahil edeceğiniz tarif edelim. :roll:
Resim
Resim ....Resim
doktoraltun
Üye
Mesajlar: 73
Kayıt: 06 Oca 2012 06:56

Re: dbgrid çift kayıt

Mesaj gönderen doktoraltun »

hocam sizin kodu çalıştırdıgımda
Resim

şeklinde oluyor

arama yaptıgım kod

Kod: Tümünü seç

with ADOQuery3 do
begin
  close; //Listbox3.items[listbox3.itemindex]
  sql.Clear;
  sql.Text:='select * from tbl_sonuc where ozellik_adi like ''gezmeyisever'' or ozellik_adi like ''evli''';
 open;
end;
normalde bu kod ile

id özellik kişi
---------------------------------
1 gezmeyi seviyor ali
2 evli ali
3 gezmeyi seviyor mehmet

şeklinde sonuç alıoyorum


bu dbgrid teki son sonucu vermiş oldugunuz kod ile elemeye kalktıgımda

id özellik kişi
---------------------------------
1 gezmeyi seviyor ali
2 evli ali

busonucu vermesi gerekirken aksi bir durum olup resimdeki şekilde oluyor
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: dbgrid çift kayıt

Mesaj gönderen mrmarman »

Tamam da hocam, tablolarınız ve ilişkilerini vermemişsiniz. Şimdi kod yazmak istesem neyi referans alıcam ?! Ekran görüntülerinden kaç tane tablo birbiri ile ilişkili anlamakta zorlanıyorum.

Tahmin yürütmek istemiyorum, tahminim iki tablo var. Birisinde isimle diğerinde özellikler. Ama özelliklere bakıyorum herhangi bir sınıflandırma yok. Evli olması ile Kebap seviyor olması aynı tabloda mı ? Mantık yürütürsem farklı oluyor, gördüğümü tekil değerlendirirsem farklı oluyor.

Mesela soru :
Kişiler tablosunda iki adet "Ali KAVAK" kaydı varsa bunların iki farklı kişi olduğunu hangi alan ile anlıyoruz. Bu alan KayNo alanı gibi bişey olmalı. Neden soruyorum, özellikler tablosunda hangi kişiyle ilişkili bir özellik olduğunu direkt isme atayamazsınız çünkü doğru olmaz. İsimleri benzer iki kişi demek kaos demek. şöyle olur

"Ali KAVAK" - Evli
"Ali KAVAK" - Bekar
hem evli hem bekar olmayacağına göre bu kişilerin farklı birer birey olduğunu anlatacak kodlamanız nasıl ?
Resim
Resim ....Resim
doktoraltun
Üye
Mesajlar: 73
Kayıt: 06 Oca 2012 06:56

Re: dbgrid çift kayıt

Mesaj gönderen doktoraltun »

Aynı isimler olsunda bekar veya evli fark etmiyor hocam sadece programı hazırlamaya çalışırken geçici bir db hazırlamaya çalıştım işin gerçeği hazırlamayı dusundugum db şu şekilde olacak

b_id -----------Bulgu_adi-----
1---------------baş ağrısı-----
2---------------baş dönmesi---
3---------------kulak çınlaması---

t_id-----------tani_adi----
1--------------vertigo----
2--------------sinüzit----
3--------------migren---

s_id----------bulgu_adi--------------tani_adi---
1-------------baş dönmesi-----------vertigo----
2-------------baş ağrısı--------------sinuzit----
3-------------baş ağrısı--------------migren---
4-------------baş dönmesi-----------migren---


kısacası tanı tedavi amaçlı bir db hazırlamayı dusunuyorum bunun içinde baya uzun bir zaman sadece tanı ve bulgu kendi işlerimde kolaylık sağlaması için

programda okadar ayrıntı kod yok bi bulguya göre filtreleme var bide muhtemel tanıyı koyma kodu ikisinide yazdım yukarda gerisi adoquery ve datasource
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: dbgrid çift kayıt

Mesaj gönderen mrmarman »

Hocam bir konuda anlaşamadık...

- Sorunuzu mevcut veritabanınıza göre cevaplamak için cımbızla veri almaya çalışıyorum, halen düşünmekte olduğunuz, henüz hayatta olmayan bir fikrinizi paylaşıyorsunuz. Sabır ile başa dönelim.

- Size bir şey önereyim. Kafanız oldukça karışmış olduğunu buradan okuyabiliyorum. Programı kodlama işini şimdilik durdurun. Doktor titriniz var sanırım. Muayenehane, okul vs. nerede iseniz tanı / tedavi amaçlı dosyalama sistemini bir kağıda çizin. Deyin ki

Resim

Bu şekilde bir kurgu değerlendiriyorum. Böylece (3) adet tablo işimi görür. Sonra açın MS*Excel'i üç tane sayfa açın.
(1). Sayfaya başına sıra no vererek kişileri girin.
(2). Sayfaya başına sıra no vererek özellikleri girin.
(3). Sayfaya sadece rakamlar gireceksiniz, (1) nci sayfadaki kişinin sıra nosununun yanına (2).sayfadaki özellikleri yazarak liste oluşturun.

Sonra bunları Excel filtrelemesi yapın.
Sonuca ulaşıyorsanız bunu Delphi ile yazılıma dönüştürme aşamasına gelmişsinizdir demektir. :idea: Hemen projeye kolları sıvamak insanı erken yaşlandırır, unutmayın... :o
Resim
Resim ....Resim
Cevapla