İki farklı Firebird dosyasından sorgu yapma

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
sen
Üye
Mesajlar: 34
Kayıt: 04 Tem 2003 01:33
Konum: Ankara

İki farklı Firebird dosyasından sorgu yapma

Mesaj gönderen sen »

Selem arkadaşlar. Hayarılı bayramlar.
Yapı olarak (table ve alanalar) her şeyi ile aynı fakat içindeki bilgi olarak farklı olan iki ayarı Firebird dosyasına bağlanarak sorgu yapmam gerekiyor.
Bunu Role ile yapılabileceğini biliyorum ancak nasıl yapıldığına dair bir örnek lazım.
Veya role nin dışında bir yol da olabilir. Paradox kullanırken Alias kullanarak farklı table lerden sorgu yapabiliyorduk.
Bu konuda yardım edebilcek arkadaş varmı. Teşekkürler........
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7588
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

seçim yapma işi nasıl olacak, o noktayı biraz açar mısın.

TIBDatabase nesnesinin parametrelerini değiştirerek, istediğin veritabanına bağlanabilirsin. Mesela A ve B şirketleri için ayrı veritabanları yaptın diyelim, ilk açılışta kullanıcıya firma seçimi yaptırırsın, kullanıcı seçimine görede TIBDatabase'in parametrelerini koddan verip, o database'e bağlanırsın.

Kolay gelsin.
sen
Üye
Mesajlar: 34
Kayıt: 04 Tem 2003 01:33
Konum: Ankara

Mesaj gönderen sen »

merhaba,
seçim yapma işini bir örnekle açayım.
bir program yaptım diyelim. bu programın birini İstanbula birini de Ankaraya verdim. (program ve ***. GDB aynı)
1 ay boyunca veriler girildi. 1 ay sonra ben bu üç dosyayı alıp bilgisayara kopyaladım.
Şimdi ben bu üç dosyaya aynı anda bağlanıp tek bir sorgu yapmam gerekli.
Mesela:
SEECT * FROM SIRKET A1 (bu Ankaranın), SIRKET A2 (buda İstanbulun)
where A1.GIRIS_TARIHI=A2.GIRIS_TARIHI
..............
.............

Kusura bakmayın anlatım biraz bozuk oldu. kodu rasgele yazdım.
Teşekkurüler
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Query'nizi su sekilde yapabilirsiniz....

Kod: Tümünü seç

SELECT * 
FROM ":DB_ANKARA:SIRKET" A1 , ":DB_ISTANBUL:SIRKET" A2 
where A1.GIRIS_TARIHI=A2.GIRIS_TARIHI 
Burada DB_ANKARA ve DB_ISTANBUL ayri iki GDB dosyasini gosteren iki adet TDatabase nesnesinin DatabaseName'leridir....

Bu mantik ile tamamen farkli veritabanlarını da ayni query icinde birlestirebilirsiniz. Mesela ben Sybase ile interbase uzerindeki farkli veritabanlarindan tek bir query ile bilgi cekmeyi test ettim. Tabi bunun dezavantaji sorgu server tarafinda degil client tarafinda yurutulecektir.

Kolay gelsin.....
sen
Üye
Mesajlar: 34
Kayıt: 04 Tem 2003 01:33
Konum: Ankara

Mesaj gönderen sen »

fahrettin abi sağosalasın.....
evet TDatabase nesneleriyle oluyor. Ancak ben şimdiye kadar hep IB objelerini kullandım. ve IB ile bitmiş bir proje var.
acaba IB objeleri ile böyle bir sorguyu nasıl yaparız. (veya yapılabilirmi)
Birde IBDatabase ile bağlanırken kullanıcı, şifre ile birlikte birde Role bölümü var. Bu role ne işe yarıyor acaba, bu konu ile bir alakası varmı.... Teşekkürler
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Emin olamamakla birlikte bendeki Delphi5'ten bakip anladigim kadari ile bu is IB nesneleri ile yapilamiyor... TIBDatabase'e DatabaseName verilemedigi icin query icinden bir alias olarak cagirmak mumkun olmayabilir.

TQuery ile de calisirken TDatabase kullanmaniz sart degil dogrudan BDE alias'larini da cagirabilirsiniz ama sonucta BDE sart oluyor tabi ki....


TQuery'nin ustune sag klik yapinca cikan SQL Builder ile farkli database'lerden gelen datalari tek bir cumlede taoplayabileceginizi farkli databaseler icinden farkli tablolari secerek yapılabildigi gorulebiliyor. Bendeki IBQuery'den boyle bir ozellik de olmadigi icin bunu da anlamak zor. Yeni versiyonlarda bir degisiklik yok ise desteklenmedigi sonucunu cikartabiliriz saniyorum.

Projenizin diger kısımlarindan bagimsiz olarak sadece bu is icin TDatabase ve Tquery kullanmak sanirim sizi cok da yormaz. Bu sekilde kullanın derim alternatif bulunamazsa....
Cevapla