Dışardan Access Dosyasına Erişim (Çözüldü)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Dışardan Access Dosyasına Erişim (Çözüldü)

Mesaj gönderen adelphiforumz »

S.A.

Elimde 2 adet mdb dosyası var
program içerisindeki ADOConnection A.mdb dosyasına bağlı
fakat bazen B.mdb dosyasından bilgi okumam ve B.mdb dosyası içerisindeki kayıtları
A.mdb içerisine yazmam gerekiyor okumak için
aşağıdaki gibi Sorgu cümlerini denedim sadece birinci stırdaki yol bilgisi olmayan çalışıyor

ADOQuery1.Sql.Text := Select * FROM B.mdb.T1 //doğru çalışıyor

Fakat dosyanın yolunu belirterek bir türlü bağlantı kuramadım
ADOQuery1.Sql.Text := Select * FROM C:\Test\B.mdb.T1 // çalışmıyor
yada
ADOQuery1.Sql.Text := Select * FROM "C:\Test\B.mdb.T1" // çalışmıyor
yada
ADOQuery1.Sql.Text := Select * FROM 'C:\Test\B.mdb.T1' // çalışmıyor
yada
ADOQuery1.Sql.Text := Select * FROM [C:\Test\B.mdb].T1 // çalışmıyor

yardımcı olabilirmisiniz
Teşekkürler
En son adelphiforumz tarafından 18 Ara 2009 01:30 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
pasa_yasar
Üye
Mesajlar: 570
Kayıt: 07 Haz 2004 12:35

Re: Dışardan Access Dosyasına Erişim

Mesaj gönderen pasa_yasar »

Bildiğim kadarıyla o şekilde çalıştıramazsın. İki tane adoconnection yaparsın tabloları aktarırsın birbirine. yaptığın sql kodları ayrıca çalışmaz. select ile tabloyu seçebilirsin bunun içinde örnek tablomuz müşteriler veritabanı b olsun. "select * from b.musteriler" şeklinde çalıştırabilirsin
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Dışardan Access Dosyasına Erişim

Mesaj gönderen sabanakman »

Bir yaşıma daha girdim. Böyle bir çalışma şeklinin olduğundan bile haberim yoktu. İlginç bir bilgi ama yol kısmı için bir yöntem buldum sanırım.
adelphiforumz yazdı:...
aşağıdaki gibi Sorgu cümlerini denedim sadece birinci stırdaki yol bilgisi olmayan çalışıyor

ADOQuery1.Sql.Text := Select * FROM B.mdb.T1 //doğru çalışıyor

Fakat dosyanın yolunu belirterek bir türlü bağlantı kuramadım
ADOQuery1.Sql.Text := Select * FROM C:\Test\B.mdb.T1 // çalışmıyor...
Burada programın çalışma yoluna bakarak çalışma yaptığını farkettim ve önce ChDir ile çalışma yolunu oradaki yola ayarlayıp sorguyu o şekilde yazınca çalıştı.

Kod: Tümünü seç

ChDir('c:\test');
ADOQuery1.Sql.Text := 'Select * FROM B.mdb.T1'
ADOQuery1.Open;
Kodu ile 'c:\test' klasöründeki B.mdb dosyası açılabiliyor.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: Dışardan Access Dosyasına Erişim (Çözüldü)

Mesaj gönderen adelphiforumz »

S.A.

Şaban Akman'ın verdiği tiyodan yola çıkarak aşağıdaki kodları denedim ve çalıştı
işlemlerden önce aşağıdaki komutun çalıştırıyorum

ChDir(ExtractFilePath(Application.ExeName));

sonra komutları çalıştırıyorum böylelikle aynı dizin içindeki dosyalar için sorun kalmıyor
fakat eğer dizinler farklı ise ozaman sorun oluyor en azından şimdilik bulabildiklerim bunlar
Birde araştırma sırasında dosya yolunu göstermek için şöyle bir iki örnek buldum fakat tam anlayıp çalıştıramadım
belki buradan yola çıkarak başkalarıda birşeyler bulup bizimle paylaşırsa memnun olurum.

Select * From [;DATABASE=C:\Test\A.mdb].T1

//A, B Dosya isimleri
//T1, T2 Tablo isimleri

Select için
Select * FROM B.T1

Insert İcin
INSERT INTO T1 SELECT * From B.T1WHERE T1_A = 14

Delete için
DELETE T1_A FROM B.T1 WHERE T1_A = 14
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Cevapla