Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Db Lookup Alan
#1
Örneğin şöyle tablolarım var diyelim. 

ŞEHİRLER
id
sehirAdi


İLÇELER
id
sehirID (int)
ilceAdi

MAHALLELER
id
sehirID (int)
ilceID (int)
mahalleAdi

Ve bir DATAGRID componentim var. Bu DATAGRID mahalleler tablosunu gösteriyor diyelim
ID  ----  ŞEHİR ADI ----- İLÇE ADI ----- MAHALLE ADI

Bu gösterimi pratik şekilde nasıl yapabilirim? Dataset içinde yeni LOOKUP-String alan oluşturup isimleri gösterebiliyorum. Ama onlarca tablom var ve bu tablolarda bu şekilde onlarca başvuru var. Yani bir tabloda 10 tane bu şekilde alan varsa, 10 tane daha yeni LOOKUP alan eklemem gerekiyor.

Kullandığınız pratik bir yöntem var mı?
Cevapla
#2
(04-01-2018, Saat: 02:13)nehirnnn Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlÖrneğin şöyle tablolarım var diyelim. 

ŞEHİRLER
id
sehirAdi


İLÇELER
id
sehirID (int)
ilceAdi

MAHALLELER
id
sehirID (int)
ilceID (int)
mahalleAdi

Ve bir DATAGRID componentim var. Bu DATAGRID mahalleler tablosunu gösteriyor diyelim
ID  ----  ŞEHİR ADI ----- İLÇE ADI ----- MAHALLE ADI

Bu gösterimi pratik şekilde nasıl yapabilirim? Dataset içinde yeni LOOKUP-String alan oluşturup isimleri gösterebiliyorum. Ama onlarca tablom var ve bu tablolarda bu şekilde onlarca başvuru var. Yani bir tabloda 10 tane bu şekilde alan varsa, 10 tane daha yeni LOOKUP alan eklemem gerekiyor.

Kullandığınız pratik bir yöntem var mı?

Joinlemekten mi bahsediyorsunuz
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla
#3
Merhaba Veritabanın MySQL ise Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#4
Merhaba,

Bahsettiğiniz şey il ve ilçe seçimine göre datagrid üzerinde seçilen değerlerin olduğu mahalle listesini getirmekse harici 2 komponent üzerinde il ve ilçe bilgisini doldurun. Tag yada başka bir alanda ID bilgisini muhafaza edin. (Eğer kendinize ait komponent varsa problem yok) İl seçildiği zaman ona ait ilçeleri 2. komponente doldurun. İkinci de seçildiğinde aktif IDlerin ikisi de elinizde olacak. Bu ID'leri 3. tablonuza WHERE koşulunu ekleyip ek bir hamle yapmadan ekrana çıktı üretebilirsiniz.
{ talk is cheap show me the code. }
Cevapla
#5
Select ile mahalleleri çekip, şehir ve ilçeleri join ile gösterebilirsiniz.

select M.ID, M.SEHIRID, M.ILCEID, M.MAHALLEADI,
S.SEHIRADI, I.ILCEADI
from MAHALLELER M
Left join SEHIRLER on S.ID=M.SEHIRID
Left join ILCELER on I.ID=M.ILCEID
order by ....
gibi.
Bunun içersinde de S.SEHIRADI = '....' gibi arama yapabilirsiniz.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#6
LOCATION
-------------
id
parent_locaction_id
name

Sonrası: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Biraz da hayal gücü  Wink Bu şekilde neredeyse sonsuz/sınırsız bir hiyerarşi oluşturabilirsiniz.
Cevapla
#7
Önerilere bakılırsa, Sql siz bir çözüm görünmüyor. O zaman query componenti içinde yeni bir lookup alan oluşturup parametre girmek daha pratik bir yol olacak. Yani zaten kullanmakta olduğum yöntem. Arama ve filtrelerde sql sürekli değiştiği için sql komutlarını sürekli yeniden yazmak gerekecek.
Aynı tabloda 10 tane bu şekilde Integer alan var diyelim. KategoriID, olusturanUyeID, bransID, grupID.... gibi. Epey bir karışacak sql....
Cevapla
#8
(04-01-2018, Saat: 02:13)nehirnnn Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlÖrneğin şöyle tablolarım var diyelim. 

ŞEHİRLER
id
sehirAdi


İLÇELER
id
sehirID (int)
ilceAdi

MAHALLELER
id
sehirID (int)
ilceID (int)
mahalleAdi

Ve bir DATAGRID componentim var. Bu DATAGRID mahalleler tablosunu gösteriyor diyelim
ID  ----  ŞEHİR ADI ----- İLÇE ADI ----- MAHALLE ADI

Bu gösterimi pratik şekilde nasıl yapabilirim? Dataset içinde yeni LOOKUP-String alan oluşturup isimleri gösterebiliyorum. Ama onlarca tablom var ve bu tablolarda bu şekilde onlarca başvuru var. Yani bir tabloda 10 tane bu şekilde alan varsa, 10 tane daha yeni LOOKUP alan eklemem gerekiyor.

Kullandığınız pratik bir yöntem var mı?


Gerek Delphi ile gelen gerekse de 3. parti bileşen paketleriyle gelen TDBLookupComboBox tasarım açısından çok uğraştırıcı... Bu bileşeni kullanmak için en az 2 bileşene daha (Datasource ve dataset'e) ihtiyaç oluyor. Misal, bir formda 10 tane TDBLookupComboBox varsa toplamda bunun maliyeti 30 bileşen olmuş oluyor. Her biri için ayrı SQL cümleleri kurmak ve master detay gibi bağlantılar da yapmak gerekebiliyor. Çok uğraştırıcı.

Bunları yapmak yerine size tavsiyem kendi lookup combo'nuzu yazmanız yönünde olurdu veya (pek sevmesem de) LiveBinding kullanabilirsiniz...
Peyami Safa: "Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır". 
Can Yücel: "Toprak gibi olmalısın! Ezildikçe sertleşmelisin! Seni ezenler sana muhtaç kalmalı! Hayatı sende bulmalı."
Cevapla
#9
function SelfLookup(ConnectionString1, Sorgu: String;
 DonecekAlan: String; Sart: String = ''): String;
var
 QSorgu: TADOQuery;
begin
 QSorgu := TADOQuery.Create(nil);
 QSorgu.ConnectionString := ConnectionString1;
 Try
   with QSorgu do
   begin
     Close;
     SQL.Text := Sorgu;
     if Sart <> '' then
       SQL.Add(' WHERE ' + Sart);
     Open;
     if RecordCount > 0 then
       Result := FieldByName(DonecekAlan).AsString
     else
       Result := '';
     Close;
   end;
 Finally
   QSorgu.Close;
   QSorgu.Free;
 End;
end;

Lookup işlemlerinde ben bunu kullanıyorum
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla
#10
(05-01-2018, Saat: 00:30)narkotik Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olfunction SelfLookup(ConnectionString1, Sorgu: String;
 DonecekAlan: String; Sart: String = ''): String;
var
 QSorgu: TADOQuery;
begin
 QSorgu := TADOQuery.Create(nil);
 QSorgu.ConnectionString := ConnectionString1;
 Try
   with QSorgu do
   begin
     Close;
     SQL.Text := Sorgu;
     if Sart <> '' then
       SQL.Add(' WHERE ' + Sart);
     Open;
     if RecordCount > 0 then
       Result := FieldByName(DonecekAlan).AsString
     else
       Result := '';
     Close;
   end;
 Finally
   QSorgu.Close;
   QSorgu.Free;
 End;
end;

Lookup işlemlerinde ben bunu kullanıyorum

Farklı bir bakış açısı. Ama bu yöntem DbGrid içinde nasıl kullanılacak?

(05-01-2018, Saat: 00:14)uparlayan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(04-01-2018, Saat: 02:13)nehirnnn Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlÖrneğin şöyle tablolarım var diyelim. 

ŞEHİRLER
id
sehirAdi


İLÇELER
id
sehirID (int)
ilceAdi

MAHALLELER
id
sehirID (int)
ilceID (int)
mahalleAdi

Ve bir DATAGRID componentim var. Bu DATAGRID mahalleler tablosunu gösteriyor diyelim
ID  ----  ŞEHİR ADI ----- İLÇE ADI ----- MAHALLE ADI

Bu gösterimi pratik şekilde nasıl yapabilirim? Dataset içinde yeni LOOKUP-String alan oluşturup isimleri gösterebiliyorum. Ama onlarca tablom var ve bu tablolarda bu şekilde onlarca başvuru var. Yani bir tabloda 10 tane bu şekilde alan varsa, 10 tane daha yeni LOOKUP alan eklemem gerekiyor.

Kullandığınız pratik bir yöntem var mı?


Gerek Delphi ile gelen gerekse de 3. parti bileşen paketleriyle gelen TDBLookupComboBox tasarım açısından çok uğraştırıcı... Bu bileşeni kullanmak için en az 2 bileşene daha (Datasource ve dataset'e) ihtiyaç oluyor. Misal, bir formda 10 tane TDBLookupComboBox varsa toplamda bunun maliyeti 30 bileşen olmuş oluyor. Her biri için ayrı SQL cümleleri kurmak ve master detay gibi bağlantılar da yapmak gerekebiliyor. Çok uğraştırıcı.

Bunları yapmak yerine size tavsiyem kendi lookup combo'nuzu yazmanız yönünde olurdu veya (pek sevmesem de) LiveBinding kullanabilirsiniz...

Aslında bahsettiğiniz kadar bileşen kullanmıyorum ben. Çünkü, o tabloların düzenlenebilmesi ve yeni kayıtlar girilebilmesi için zaten onların olması gerekiyor. Yani ben mahalleID nin ait olduğu Mahalle ismini bir Query ya da tablodan alıyorum, ama bu tablo ya da query zaten benim tanımlamalar bölümüm için gerekli. Tek yükü DataSet üzerinde bu şekilde kaç tane alan varsa, hepsinin karşılığı olarak o kadar yeni Lookup alan oluşturmak gerekiyor. (mahalleID için mahalleIDIsim gibi.)

Önerilerinize göre, en azından benim yapabileceğim en pratik yol yine bu görünüyor...
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  [ÇÖZÜLDÜ]-cxDBPivotGrid Seçili Satır Alan Değeri Alma hi_selamlar 2 215 21-06-2018, Saat: 10:40
Son Yorum: hi_selamlar
  DevExpress Alan Seçici Özelliği Halil Han Badem 2 499 03-08-2017, Saat: 23:50
Son Yorum: Halil Han Badem
  Alan boş ise değer ataması Derbeder 6 959 07-07-2017, Saat: 15:30
Son Yorum: witalihakko



Konuyu Okuyanlar: 1 Ziyaretçi