Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
birden fazla veritabanindan ayni verileri dataset de birlestirmek
#1
arkadaslar birden fazla veritabanindaki benzer tablodaki bilgileri alip stringgride atiyorum. isimi goruyor.

ama dbgrid kullanmak istiyorum.  

soyle birsey yapabiliyormuyuz.

once ilk veritabanina baglan bilgileri al datasete aktar sonra ikinci veritabanina baglan bilgileri al datasete aktar  
sonra datasetin icini dbgride aktar.

bu sekilde bir calismayi veya buna benzer bir calismayi nasil yapabilirim 
datset mi datatable mi kullanayim.

hangi baslik ile konuyu arastirayim.

saygilarimla
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla
#2
clientdataset ekleyip datalari ona atip dbgridde gosterebilirim sanirim
deneyecegim.
saygilar
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla
#3
iki db'den de veri alacağın tablo tamamen aynı mı
WWW
Cevapla
#4
Birden fazla dbden okunan veriler birleştirilerek tek bir dbgrid üzerinde gösterim mi isteniyor.
Cevapla
#5
Anladığım kadarıyla iki farklı databasede aynı sunucuda
böyle bir durumda ,Adoquery ve dataset ile bu işi çözebilirsiniz, Adoquery nin içinde databaseleride seçip sorguyu birleştirebilirsiniz.
Cevapla
#6
Firebird'de iki farklı veritabanını birleştirmek için EXECUTE STATEMENT veya EXTERNAL DATA SOURCE yöntemlerini kullanabilirsiniz. Ancak, Firebird 2.5.8'de bu özelliklerin kısıtlı olduğunu unutmayın. İki veritabanından veri çekmek ve birleştirmek için aşağıdaki gibi bir yöntem izleyebilirsiniz.
Örnek: EXECUTE STATEMENT ile Birleştirme
Farz edelim ki iki veritabanınız var:
  1. DB1:
    CUSTOMERS
  2. tablosu
  3. DB2:
    ORDERS
  4. tablosu
Aşağıdaki adımları izleyerek birleştirme yapabilirsiniz:
1. İlk olarak, bağlantı dizinlerini belirleyin
sql

-- DB1 bağlantı dizesi: 'C:\Databases\DB1.FDB'
-- DB2 bağlantı dizesi: 'C:\Databases\DB2.FDB'
2. SQL Örneği sql
-- DB1 üzerinde çalışıyorsunuz
SELECT
   C.CUSTOMER_ID,
   C.CUSTOMER_NAME,
   O.ORDER_ID,
   O.ORDER_DATE
FROM
   CUSTOMERS C
LEFT JOIN
   (
       SELECT
           O.ORDER_ID,
           O.CUSTOMER_ID,
           O.ORDER_DATE
       FROM
           EXTERNAL DATA SOURCE 'C:\Databases\DB2.FDB'
           AS O
   ) O
ON
   C.CUSTOMER_ID = O.CUSTOMER_ID;
Bu yöntem genellikle EXTERNAL DATA SOURCE özelliğini kullanır.

3. EXECUTE STATEMENT Örneği
EXECUTE STATEMENT ile iki veritabanına bağlanarak veriyi birleştirebilirsiniz. Bunun için:
sql
-- DB1 üzerinde çalışıyorsunuz
SELECT
   C.CUSTOMER_ID,
   C.CUSTOMER_NAME,
   O.ORDER_ID,
   O.ORDER_DATE
FROM
   CUSTOMERS C
LEFT JOIN
   (
       SELECT
           ORDER_ID,
           CUSTOMER_ID,
           ORDER_DATE
       FROM
           EXTERNAL DATA SOURCE 'C:\Databases\DB2.FDB'
   ) O
ON
   C.CUSTOMER_ID=ON
sql
-- DB1 üzerinde çalışıyorsunuz
SELECT
   C.CUSTOMER_ID,
   C.CUSTOMER_NAME,
   O.ORDER_ID,
   O.ORDER_DATE
FROM
   CUSTOMERS C
LEFT JOIN
   (
       EXECUTE STATEMENT 'SELECT ORDER_ID, CUSTOMER_ID, ORDER_DATE FROM ORDERS'
       ON EXTERNAL 'C:\Databases\DB2.FDB'
   ) O
ON
   C.CUSTOMER_ID = O.CUSTOMER_ID;
Bu örnek, EXECUTE STATEMENT kullanarak başka bir veritabanından veri çekme yöntemini gösterir.

Firebird 2.58'de EXTERNAL TABLE kullanımı bazı durumlarda sınırlıdır.

GPT emmiden alıntıdır.
__________________________
From Now I will only Reading.
Cevapla
#7
Merhaba, nasıl bir veri çekiceksiniz bilemiyorum ama, mesela bir veritabanındaki cari hesap koduna ait başka bir veritabanındaki ünvanı almak isterseniz aşağıdaki gibi bir kod kullanabilirsiniz.

execute block
returns (
  KOD INTEGER,
  UNVAN varchar(100))
as
begin
  for SELECT KOD, UNVAN
  FROM BARKOD_CARI
  into :KOD, :UNVAN do begin

     execute statement 'select UNVAN from CARI where KOD=' || :KOD
     on external '127.0.0.1/3050:C:\ETICARI\IMALAT\DATA\IML_DB.fdb' as user 'SYSDBA' password 'masterkey'
     into :UNVAN;

     suspend;
  end
end
WWW
Cevapla
#8
(29-12-2024, Saat: 15:18)sadikacar60 Adlı Kullanıcıdan Alıntı: arkadaslar birden fazla veritabanindaki benzer tablodaki bilgileri alip stringgride atiyorum. isimi goruyor.

ama dbgrid kullanmak istiyorum.  

soyle birsey yapabiliyormuyuz.

once ilk veritabanina baglan bilgileri al datasete aktar sonra ikinci veritabanina baglan bilgileri al datasete aktar  
sonra datasetin icini dbgride aktar.

bu sekilde bir calismayi veya buna benzer bir calismayi nasil yapabilirim 
datset mi datatable mi kullanayim.

hangi baslik ile konuyu arastirayim.

saygilarimla


bu iş için memdata kullansan daha iyi olur. gride bağlı datasource u memdataya bağla. ilk tablondan while ile çek. döngü bittikten sonra ikinci while ile diğer tablondan veri çek ve bunları memdataya yazdır. hepsini gride yazdıracaktır.
Cevapla
#9
DMvt.SQLQueryL.Open;

DMvt.DataSourceL.DataSet:=DMvt.SQLQueryL;  // normalde dasete bu sekilde bilgileri aktariyordum
DMvt.MemDataset1 :=DMvt.SQLQueryL;   //bu sekilde denedim calismiyor
DMvt.MemDataset1 :=DMvt.DataSourceL.DataSet;  //bu sekildede denedim olmadi
internetden birsey bulamadim memdatasete pratik sekilde data aktaramiyormuyuz.
while ile bilgileri tek tek mi kaydetmeliyiz.

saygilarimla
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla
#10
(03-01-2025, Saat: 21:41)sadikacar60 Adlı Kullanıcıdan Alıntı:
DMvt.SQLQueryL.Open;

DMvt.DataSourceL.DataSet:=DMvt.SQLQueryL;  // normalde dasete bu sekilde bilgileri aktariyordum
DMvt.MemDataset1 :=DMvt.SQLQueryL;   //bu sekilde denedim calismiyor
DMvt.MemDataset1 :=DMvt.DataSourceL.DataSet;  //bu sekildede denedim olmadi
internetden birsey bulamadim memdatasete pratik sekilde data aktaramiyormuyuz.
while ile bilgileri tek tek mi kaydetmeliyiz.

saygilarimla

Merhabalar,

ClientDataSet.AppendData(Query1, True);
ClientDataSet.AppendData(Query2, True);
işinize yarayabilir mi?

https://docwiki.embarcadero.com/Librarie...AppendData

Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  ayni ay icindeki kayitlari dbgride almak sadikacar60 8 1.486 25-11-2024, Saat: 10:32
Son Yorum: yhackup
  Excel'den ADODataSete Aktarılan Verileri Kaydetme sunbeki 1 867 18-03-2023, Saat: 18:05
Son Yorum: sabanakman
  Aynı anda iki Cursor ile çalışma anemos 0 1.073 24-04-2021, Saat: 01:37
Son Yorum: anemos
  2 farklı pc deki aynı tabloları eşitlemek sadikacar60 3 1.957 29-03-2021, Saat: 20:06
Son Yorum: isocan
  Firebird 2.5 ile 3.0 ı aynı anda çalıştırma MuhammedYasir 8 5.983 12-03-2021, Saat: 10:30
Son Yorum: ozcanm



Konuyu Okuyanlar: 1 Ziyaretçi