tabloları bağlayacağım, ama çok uzaktan

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Merhabalar;
Ben deneyemiyorum ama yapılabiliyor diye biliyorum eğer doğru anladıysam;

Kod:
Sub CreateLinkedAccessTable(strDBLinkFrom As String, _
                            strDBLinkTo As String, _
                            strLinkTbl As String, _
                            strLinkTblAs As String)

   Dim catDB As ADOX.Catalog
   Dim tblLink As ADOX.Table

   Set catDB = New ADOX.Catalog
   ' Open a Catalog on the database in which to create the link.
   catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" _
      & "Data Source=" & strDBLinkFrom

   Set tblLink = New ADOX.Table
   With tblLink
      ' Name the new Table and set its ParentCatalog 
      ' property to the open Catalog to allow access 
      ' to the Properties collection.
      .Name = strLinkTblAs
      Set .ParentCatalog = catDB

      ' Set the properties to create the link.
      .Properties("Jet OLEDB:Create Link") = True
      .Properties("Jet OLEDB:[COLOR="Red"]Link Datasource[/COLOR]") = strDBLinkTo
      .Properties("Jet OLEDB:[COLOR="red"]Remote Table Name[/COLOR]") = strLinkTbl
   End With

   ' Append the table to the Tables collection.
   catDB.Tables.Append tblLink

   Set catDB = Nothing
End Sub
Kırmızı renkte olanları kendinize göre düzenlemeniz gerekiyor.. Eğer "link datasource" kısmında sorun yaşarsanız aşağıdaki "connection string" ile bağlantıyı kurmayı da deneyebilirsiniz..

Kod:
'declare the variable that will hold the connection string
Dim ConnectionString 
'define connection string, specify database driver and location of the database 
ConnectionString="Provider=MS Remote; Remote Server=http://your_remote_server_ip;" &_ 
"Remote Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\your_database_name.mdb"
Bu stringi ve yukarıdaki kodu düzenleyip bağlantı yapabilirsiniz..
Kolay gelsin..
 
Son düzenleme:

realperest

Altın Üye
Katılım
5 Kasım 2004
Mesajlar
154
Altın Üyelik Bitiş Tarihi
09-05-2025
peki bunları ADO bağlantı kurma konusunda bilgisi kısıtlı birisinin yapması için daha pratik bir yol yok mu ?

yani TABLOLARI BAĞLA gibi basit bi yöntemi yokmu , ? eğer yoksa sanıyorum ben yukarıdaki kodu örneksiz olarak projeme aktaramam :(
 
Katılım
14 Ağustos 2007
Mesajlar
291
Excel Vers. ve Dili
office 2003, sql server
yalnız bildiğim kadarıyla bu olay şöyle oluyor; diyelimki bir defa bu şekilde bağlantıyı yaptığımızda, o an için veriler programımıza toplanıyorda artık veriler üzerinde çalşııyoruz olayı değil.. veya veriler programımıza bağlandı olayı değil bu kodlamayla bağlanma işi.. bu kodları çalıştırmak için bütün veritabanımızı değiştirmemiz gerek, yani her bir formun tıklandığında, açıldığında, komut düğmesine basıldığında girlidiğinde çıkıldığında eklemede çıkarmada silmede düzeltmede herşeyde bu komutlar o an için çalışması gerek ..
yani proramımızın her yerini değiştirmemiz gerek bu olay için.. .net mantığı, database bağlantı kurup (her işlem için) programı kullanmak gibi.. eğer yanlış biliyorsam düzeltin.. benim bildiğim bir defa bu ve benzeri kodları çalıştırarak o an için "tamam bağlantı sağlandı, artık veriler yanımdaymış gibi çalışabilirim" olayı değil.. her form rapor sorgu olayını bu kodlara adapteli etmek ve programın veriyle alakalı her yerinde bu kodları çalıştırmak gerektiğini biliyorum...
saygılar.
 

realperest

Altın Üye
Katılım
5 Kasım 2004
Mesajlar
154
Altın Üyelik Bitiş Tarihi
09-05-2025
cuneyta,

evet bende aynen senin dediğini yapmaya çalışıyorum.

Yani aldım verileri hadi çalışayım değil. Aynı TABLO BAĞLA yöntemi ile bağlarız ya projemize database te bulunan tabloları , onun gibi yapmaya çalışıyorum.
Veriler hep internette duracak, ben buradan access te formu açtığımda direkt internette bulunan tablonun içine kayıt atacak, yata bir sorgu çalıştırdığımda direkt ordan sorgulayacak kayıtları.


Aslında bunu ASP ile yapıyorlar ama, ASP bilmediğimiz için acaba access te basitçe yapabilirmiyiz diye düşünüyorum.
 
Katılım
14 Ağustos 2007
Mesajlar
291
Excel Vers. ve Dili
office 2003, sql server
realperest kardeş o şekilde olmuyor.. access izin vermiyor.. denedim ben.. yine de dediğim gibi belki olabiliyorda ben bilmiyorumdur.. uzman arkadaşlar ilgilense iyi olur.. bende öğrenmiş olurum.. ama daha önce yazdığım gibi odbc olarak bağlantı olayını gerçekleştirirsek bütün sorunlarımız biter.. en iyisi o olacak.. ağ da odbc ile tablo bağlama nasıl oluyor onu öğrenmek gerek..
 
Katılım
15 Kasım 2006
Mesajlar
583
Excel Vers. ve Dili
Ms Office 2003 Türkçe
realperest,

uzaktaki bir access dosyasına yine access ile bağlanmak teorikte olabiliyor olsa bile,
işin doğasına pek uygun değil. Eğer ille de acces ile bağlanmam lazım diyorsan,
uzak tarafa SQL Server kuracaksın ya da kurdurtacaksın ve xxxxx.adp yani access proje dosyaları ile bağlanacaksın.
SQL Server'ın lisans parası çok diyorsan, Desktop Edition var onu kurarsın.

Uzaktaki dosya access ve onu değiştiremem veya değiştirtemem diyorsan,
gerekli izinlerin verilmesi ile bağlı tablo yöntemi ile bağlanıp çalışabilirsin.
Ama bir süre sonra bu eziyet oluyor çalışılmıyor deyip bırakmak zorunda kalırsın.
Performans çok kötü çünkü.

Ben, her iki tarafta 1 mb lik adsl bağlantısı olan bir bağlantı ile
uzaktaki mdb ye senin dediğin yöntemle bağlandım ve ertesi gün adp ye çevirdim tüm yaptıklarımı.
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın realperest,

Daha önce arkadaşların dediği gibi bu iş ASP ile çok basit oluyor. Yalnız Server daki mdb dosyasına yazım izni verip şifreleyin ki başkaları ulaşamasın. Sonra da basit bir VBScript ile iş çözülüyor. Yani bir web sayfası hazırlıyorsunuz, form yerine ve ne yapmak istiyorsanız onun üstünden devam ediyorsunuz. Tabi teorik olarak bağlı tablo ile de olmalı. Ama siz ODBC girin. (Denetim masası Yönetimsel araçlar Veri Kaynağı Yöneticisi) Oradan Sistem DSN sekmesinden uzaktaki mdb dosyasını yeni bir ad ile tanıtın. Sonra da yeni bir access uygulaması açarak oradan ulaşmaya çalışın bu şekilde de olabilir. Yani tablo bağlamıyorsunuz, ancak uygulama içinden uzaktaki dosyaya ulaşmaya çalışıyorsunuz. Tabi bu anlattığım ikinci şıkkı denemedim ama olur sanırım.

Yine de siz ODBC de bir ayarını yapın sonra ulaşmaya çalışın. Ulaştıktan sonra iş kolay.

Kod yazmayayım diyorsunuz ama öğrenmeye başlayın öyle ürkütücü korkutucu değil. Çoğunu zaten kopyala yapıştır yapıp içindeki parametreleri kendiniz göre yazıyorsunuz. Mesela ASP de erişmek isterseniz:

Kod:
Set conn=Server.CreateObject("ADODB.Connection")
conn.Open("Test")
Set rs=Server.CreateObject("ADODB.Recordset")
rs.Open "Select * From tblTest", conn
Burada ODBC de Test olarak tanıttığınız veri tabanına ulaşım kodu. tblTest ise veri tabanındaki ulaşmaya çalıştığınız tablo.

Bu yüzden önce ulaşmaya çalışın gerisi çok kolay. Tabi bu arada statik IP ler falan olmalı ama yine de siz bir deneyin.
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın realperest,

Sanırım oldu. Accesden serverda olan bir mdb ye ulaştım. (Ancak tabiki önceki mesajda anlattığım gibi ODBC den Sistem DSN de mdb tanıtmanız gerekiyor) Kodları da çok basit:

Kod:
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.Open "Test"
rs.Open "Select * From tblTest", conn
Yapacağınız iş ya SQL cümleleriyle ya da tüm verileri bir geçici tabloya aktarıp, gerekli düzeltmeleri kendi uygulamanız üstünde yapıp server daki mdb yi tekrar güncellemeniz.

Bu kodlarla serverdeki tabloyu uygulama içindeki tblServer tablosuna taşıdım

Kod:
Dim conn As New ADODB.Connection
Dim conn1 As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim rs1 As New ADODB.Recordset
conn.Open "Test"
Set conn1 = CurrentProject.Connection
rs1.Open "tblServer", conn1, adOpenKeyset, adLockOptimistic
rs.Open "tblTest", conn
Do Until rs.EOF
rs1.AddNew
rs1(0) = rs(0)
rs1(1) = rs(1)
rs1(2) = rs(2)
rs1(3) = rs(3)
rs1.Update
rs.MoveNext
Loop
 
rs1.Close
rs.Close
Set conn1=Nothing
Set conn=Nothing
Not: Araştırmaya devam ediyorum.

İyi çalışmalar
 
Son düzenleme:

realperest

Altın Üye
Katılım
5 Kasım 2004
Mesajlar
154
Altın Üyelik Bitiş Tarihi
09-05-2025
sayın modalı bende az daha yapıyordum,

ne yaptım biliyormusunuz (belkide çok saçma olabilir) veritabanında TABLO BAĞLA dedim, gelen ekranda (hani dosya seçimi yapılan ekranda) direkt ftp......................... diye DATABASE in FTP adresini yazdım. ftp şifresini girdikten sonra , direkt karşıma MDB dosyası çıktı seçim yapmak için.

Yalnız şöyle bir preblem oldu, oradan da DATABASE.MDB yi BAĞLA dediğimde GEÇERSİZ DOSYA İSMİ diye bir hata mesajı verdi.

yani eğer olsaydı sanıyorum en basit hali ile olacaktı, performans sorunu yaşarmıydım bilemiyorum ama.


sizin dediklerinizi şimdilik hızlıca okudum. eve gidince deneyeceğim . Ama sizde benim bu ilkel denememi yaparsanız tecrübeniz ile belki benim aklıma gelmeyen bir şey farkedersiniz.



İlginiz için çok teşekkür.


AMA SONRADAN AKLIMA GELDİ, BEN UZAKTA BİR MAKİNAYA BAĞLANMAK İSTEMİYORUM ARTIK,, YANİ SORUM BİRAZ DEĞİŞTİ. BEN www.siteadresi.com/klasor/data.mdb gibi bi yere bağlanmak istiyorum. YANİ SİZİN MESAJINIZ SANKİ SABİT IP FALAN DEDİĞİNİZ İÇİN BAŞKA BİR MAKİNA ÜZERİNDEKİ DATABASE 'E BAĞLANMAYA ÇALIŞIYORMUŞ GİBİ ANLAMIŞ OLABİLECEĞİ YÖNÜNDEYDİ.
 
Üst