AccessTr.neT

Tam Versiyon: Ağ Üzerinden Dao İle Bağlantı
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Sayfalar: 1 2 3 4
dao ile bir veritabanına bağlanmaya çalışıyorsun ama hani database nerde bir yerde demişsinki kendi veritabanınada bağlanabiliyorum elbette bağlanırsın onda database yani veritabaını belirlemene gerekyoktur çünkü zaten aynı veritabanındasındır çünkü Access zaten bir çok hazır kodlarını yani şu sihirbaz ile yaptırdıklarımızı hani şu Me.RecordsetClone diye olanları dao tabanlı yazdığı için tekrar database tanımlamasına ihitiyaç duyulmaması için gömülü hale getirmiştir.
ancak dış veritabaına bağlanırken mutlaka databse tanımlaman gerekirki bu şarttır

ayrıca dao hakkında bir çok şey öğrenmen gerekir bunun için Access Kod Bankasında yeterli bilgi vardır
dim dbs demişsin bu dbs ne ola belirtmemişsin işte o database dir ve yolu tam olarak belirtilmelidir.
DBPath="192.168.1.2\daoklasörü\dao.mdb"
Set dbs = DBEngine.OpenDatabase(DBPath)
Set RS = dbs.OpenRecordset("tabloadı", dbOpenDynaset)
ha bu arada aşağıda gördüğünde tablonun ne türde açılacağı kilitli sadece okunur sadece değiştirilir hem değisştirilir hem silinizr vs vs neyse bu konudada kod deposunda kodlar var ve örnek anlatımlar var
dbOpenDynaset)

son olarak dao eskimiş bir dildir o nedenden dolayı ado kullan bahsettiğin arıza senin bir tanım eksikliğinden kaynaklanıyordur büyük ihtimalle çünkü ben ado kullanıyorum ağdaki bütün çalışan programlarım ado iledir ve hiç bir probelm yaşamıyorum bu konudada tam ado ile yapılmış bir örnek akledim
eklediğiniz örneği internet olan bilgisayarda açabiliyorum ancak diğer kapalı ağ üzerindeki bilgisayarda açamıyorum. anladığım kadarıyla bilgisayarlardaki kurulu sistem engelliyor diyedüşündüm. bahsettiğim bilgisayarda Polsoftu da açamıyorum mesela bağlı tabloları denetlediği kodda hata verip " program kapatılıyor" uyarısı gelip kapanıyor. aklıma gelen tek sorun bilgisayar içindeki sistemden diye düşünüyorum. oficce ten kaynaklandığını düşünerek iki bilgisayara aynısını kurdum yeniden ancak hatalar devam etti.
yazdığınız kodu deneyeceğim. bu arada hangi dll eksikliğinden kaynaklanabilir. yüklü olması gereken tanımların bir resmini koyabilirmisiniz.
yazmış olduğunuz kodları yazdım. bizim bilgisayarlar ağ üzerinde ıp ile değil bilgisayar adı ile tanımlıymış. yazdığın koda ıp yerine bilgisayar adını yazdığım zaman düzeldi çok sağolun.
dao nun eksi yönleri ney. birde ado hatası nerden kaynaklanabilir. kaydedilmemiş sınıf hatası veriyor sizin eklediğiniz örneği açmaya çalıştığım zaman.
yaptığım veritabanında ado ile bağlantının çalışabilmesi için gerekli olan tanımların neler olduğunu gönderebilecek bir arkadaşımız varmı? birde benim yapacağım veritabanında standart veri işlemleri olacak. ( ekleme düzenleme ve silme. formlarım çok kayıtlı olarak değil tek kayıt gösterecek şekilde açılacak. bunda dao kullanmamın eski bir yönü olabilirmi? ve dao ila ado arasındaki önemli farkları yazabilirmisiniz?
DAO Gitti ADO Geldi
DAO gideli, ADO geleli epey oldu. ADO da gitmeden evvel onu anlatmazsak olmaz. Birçokları için artık eskimiş ADO'yu evirip çeviriyoruz bu ay.
Başlığın Türkçe'sini merak edenler için bu yazıda, Access'te kod ile kayıt işlemlerinin nasıl yapılabileceğinden bahsedildiğini söyleyeyim. ADO'yu incelememizin sebebi Access'in bizi onu kullanmaya zorlaması. Resimde bunun delilini görüyorsunuz.
Emektar DAO'nun yerinde yeller esiyor gördüğünüz gibi. Zaten Microsoft'un artık DAO'nun geliştirilmeyeceğini duyurduğunu biliyoruz. Madem öyle, işte ADO'nun bir kısım marifetleri.
Bir Access 2000 dosyasını ilk oluşturduğunuzda referanslar listesinde geçerli olarak ADO (Microsoft Activex Data Objects 2.x Library) seçili geliyor. Office 2000 ilk kurulduğunda 2.1 sürümü görünüyor. Bu yazının yazıldığı sıralarda ADO'nun 2.5 sürümü epey yaygındı. (Fakat yazının yazıldığı bilgisayar her nasılsa bu yaygınlık alanı içerisinde yer almıyor.)
ADO, Microsoft'un sitesinden ücretsiz yüklenebiliyor. Veyahut MS'nin bazı kurulum paketlerinin içinde ADO'nun kurulum dosyası çıkabiliyor. Visual Studio 6.0 Service Pack 4 kurulum dosyaları arasında yer alıyor bu dosya. (PC Magazine Offline Ekim 2000 CD'sinde Visual Studio 6 SP4'ü bulabilirsiniz.)
ADO'nun kurulum dosyasının adı MDAC_TYP.EXE ve dosyanın büyüklüğü 8 mb. civarında. ADO kullandığınız projenizi dağıtmak istediğinizde bu kurulum dosyasını da vermeniz gerekebileceğini unutmayın. Tabii ki ücretsiz ve sınırsız dağıtılabilir.
'ADO da ne' diyenler için ADO'nun farklı uygulama geliştirme araçları tarafından ortak kullanılabilen bir veritabanı modülü olduğunu söyleyebilirim. Yaygın sistemlerin hemen hepsi diğer ortak modülleri kullanabildikleri gibi ADO'yu da kullanabilirler. ADO bize bir yerdeki veritabanına ulaşabilmemiz için kolaylıklar sağlıyor ve bizi bir yığın işten kurtarıyor. DAO'nun da (Data Access Objects) hakkını yemeyelim. ADO kadar yetenekli olmasa da veri işlemleri daha önce onunla yapılıyordu.
ADO'nun en büyük yeteneklerinden biri Internet veya yerel ağ ortamında bile Sql Server sunucusuna kolaylıkla bağlanabilmesi. Aynı makine üzerindeymiş gibi Sql Server'a istediğiniz birçok şeyi yaptırabiliyorsunuz. Fakat bu yazının konusu, DAO yerine ADO kullanmamız konusunda ısrar eden Access 2000'de ADO'nun nasıl kullanıldığı.
ADO gibi başka modeller de olduğunu hatırlatayım. Kısaca RDS, MSDE şeklinde adlandırılan benzer sistemler mevcut. İleriye dönük ve büyük projeler hazırlıyorsanız tez elden ADO'ya geçmenizi öneririm.
ADO İLE BAŞLANGIÇ
DAO'nun kolay nesnelerine yeterince alışmıştık.
Dim DB as Database
Dim Rs as Recordset
Set DB= CurrentDB()
Rs.FindFirst
Rs.FindNext
...
şeklindeki deyimler neredeyse tamamen değişti. Access'te, ASP'de ya da herhangi bir Vba platformunda ADO'yu aşağıda anlatıldığına benzer şekillerde kullanabilirsiniz.
ADO ile bir tabloyu kullanmak için aktif proje dosyasının Connection nesnesine bir başvuru yapılıyor.
Dim rs As New ADODB.Recordset
rs.Open "Table1", CurrentProject.Connection
Bir tabloyu ya da veri kümesini açmak ve kullanmak için eskiden olduğu gibi birçok alternatif var. Ama ADO'da bu alternatifleri biraz daha iyi bilmemiz gerekiyor.
KAYIT DEĞİŞİKLİKLERİ
Kayıt ekleme yapılabilmesi için tablo açılırken adLockOptimistic parametresi kullanılmalı.
rs.Open "Table1", CurrentProject.Connection, _
adOpenKeyset, adLockOptimistic
rs.AddNew
rs("Field1") = "Test"
rs("Field2") = 1234
rs.Update
Kayıt silme eskisi gibi:
rs.Delete
Kayıt değiştirmek için ise ADO'nun DAO'ya göre bir farkı var. Değişikliği yapmadan önce artık Edit metodu kullanılmıyor ve doğrudan değişikliğe geçiliyor.
rs.Open ...
rs("Field1") = "Test"
rs("Field2") = 1234
rs.Update
ADO İLE Sql KODU ÇALIŞTIRMAK
Artık Database nesnesi yerine Connection nesnesi kullanılıyor. Aktif dosyaya ulaşmak için CurrentProject.Connection deyimini kullanarak bir Sql kodunu çalıştırmayı (Execute) deneyin.
Dim conn As ADODB.Connection
Set conn = CurrentProject.Connection
conn.Execute "UPDATE Table1 SET ad = 'deneme' WHERE (ID='1');"
ya da
CurrentProject.Connection.Execute "UPDATE Table1 SET ad = 'deneme' WHERE (ID='1');"
SQL İLE ARAMA YAPMAK
SQL kodu içinde arama yapmak için WHERE dışında LIKE deyiminin de kullanılabileceğini biliyorsunuzdur. Eskiden LIKE deyiminde metin alanlarında ayrıntılı arama için * işareti kullanılırdı. Şimdiyse bunun yerine % işareti kullanılıyor. (SELECT deyiminin yanında * işareti kullanılır. Bu değişiklik sadece LIKE deyimi için geçerli.)
Şu deyim ile bir Sql kodunu kayıt değişiklikleri yapılabilecek şekilde açabilirsiniz:
rs.Open "SELECT * FROM Table1 WHERE (AdiSoyadi Like 'A%'));", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
En sondaki adLockOptimistic deyimini adLockReadOnly yaparsanız kayıt kümesi sadece okunur olacaktır.
LIKE deyiminin yanındaki 'A%' ifadesi ile AdiSoyadi alanında 'A' ile başlayan kayıtlar seçiliyor. Değiştirip '[A-K,U-Z]%' şeklinde kullanmanız da mümkün. Yani hem A-K arası, hem de U-Z arası değerlerin olduğu kayıtlar elde ediliyor.
LIKE deyiminden sonra bir de şunu yazmayı deneyin:
'%A_[M,T]%'
Bu şekilde yapıldığında herhangi bir yerinde 'A' ve yanında herhangi bir karakter olup onun yanında da 'M' veya 'T' olan değerlerin bulunduğu kayıtlar listelenecektir. Mütevazi LIKE deyiminin eskiden kalma daha birçok yeteneği var. Buna ilk olarak Word6.0'da şahit olmuştum. LIKE ile ilgili arama yeteneklerini bir de Word2000'in Bul/Değiştir sayfasında görmelisiniz.
TABLO YA DA KAYIT KÜMESİ ÜZERİNDE ARAMA YAPMAK
Kayıt kümesinde arama yapmaktan kasıt, Sql kodu kullanmadan, elde ettiğimiz kayıt kümesi (RecordSet) açıldıktan sonra arama yapılması. Eskiden FindFirst, FindNext gibi komutlar kullanıyorduk. Bu komutların tümü Find adlı yeni komut altında toplanmış. Find komutu değişik parametreler alarak eski komutların işini yapabiliyor. Fakat alışkanlıklarımızı değiştirmeye zorlayarak.
Arama işlemini başlatmadan önce tabloda kayıt olup olmadığı kontrol ediliyor. Zira kayıt yoksa MOVEFIRST komutu hata verir. Zaten herhangi bir anda ilk kaydı bulmak için tablonun başına gidilmesi gerekli.
İlk kaydı bul (FindFirst):
rs.MoveFirst
rs.Find "Kriter", 0, adSearchForward
Sonrakini bul (FindNext):
rs.Find "Kriter", 1, adSearchForward
Öncekini bul (FindPrevious):
rs.Find "Kriter", 1, adSearchBackward
Son kaydı bul (FindLast):
rs.MoveLast
rs.Find "Kriter", 0, adSearchBackward
DAO'da kayıt bulunamadığında RecordSet nesnesine ait NoMatch özelliği kullanılabilirken ADO'da böyle bir özellik yok. Aradığınız kaydın bulunup bulunamadığını anlamak için, eğer ileri doğru arama yapıyorsanız kümenin sonunda (rs.EOF=True ? ) olup olmadığınızı, geri doğru arama yapıyorsanız kümenin başında (rs.BOF=True ? ) olup olmadığınızı kontrol etmelisiniz.
BOŞ KAYITLAR GELSİN
NULL deyimi boş değerleri yani 'hiçbir şey'i ifade ediyor. Eskiden bir veri alanının değerinin boş olup olmadığını bulmak için 'VeriAlani1 IS NULL' yazılıyordu. Ya da boş olmayan kayıtlar 'VeriAlani1 IS NOT NULL' ile listelenebiliyordu. ADO'nun Sql kodlarında ise bu deyimle beraber eşitlik işaretleri kullanılıyor.
'VeriAlani1 = NULL'
'VeriAlani1 <> NULL'
Son olarak NEW ya da CREATEOBJECT deyimi ile oluşturduğunuz Connection ve Recordset nesnelerini NOTHING ile silmeyi unutmayın.
Set rs = Nothing
Set conn = Nothing
ADO o kadar ayrıntılı ki tam olarak anlatana kadar neredeyse bir dergi dolusu yazı çıkar.
Eğer projenizde kod yazmıyorsanız ya da yazdığınız kodlarda ADO'yu kullanmıyorsanız referanslar listesinden ADO'yu kaldırabilirsiniz. Herhangi bir modül sayfası açıkken Tools/References (Araçlar/Başvurular) menüsünü kullanarak.
Bir tabloyu sadece okunabilir olarak açmak:
rs.Open "Table1", CurrentProject.Connection, adOpenKeyset, adLockReadOnly
Bir tabloyu kayıt ekleme, silme ya da değiştirme için açmak:
rs.Open "Table1", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Sadece okunabilir bir Sql kodu açmak:
rs.Open "SELECT * FROM Table1 WHERE ...", CurrentProject.Connection, adOpenKeyset,
adLockReadOnly
Kayıt eklenebilecek, silinebilecek ya da değiştirilebilecek şekilde bir Sql kodu açmak:
rs.Open "SELECT * FROM Table1 WHERE ...", CurrentProject.Connection, adOpenKeyset,
adLockOptimistic
Dim rs as New ADODB.Recordset
rs.Open "Kisiler", CurrentProject.Connection, _
adOpenKeyset, adLockOptimistic
If rs.EOF = True Then
MsgBox "Tabloda kayıt yok."
Else
rs.MoveFirst
rs.Find Kriter, 0
'Eski FindFirst ile aynı.
If rs.EOF = True Then
MsgBox "Kayıt bulunamadı."
Else
'Tüm kayıtları sırayla bul ve mesaj göster.
Do While Not rs.EOF
MsgBox "Kayıt bulundu." & vbCr & vbCr & _
rs("ID") & " " & rs("Ad") & " " & rs("Soyad")
'Sonraki kayıttan itibaren tekrar ara.
rs.Find Kriter, 1
Loop
End If
End If
rs.Close
Set rs = Nothing


diğer soruna gelince ado nesneleri kayıtlı ise çalışmaması için bir neden yok dao çalışıyorsa ado dünden çalışır mutlaka sende eksik yada bozuk bir referans falan vardır sebebini bilmemizin imkanı yok görnmeden bendede daha önce çalışan bir kod şimdi arıza veriyor office bozulmuştur. diye office yeniledim çalışmadı verilen eksik refaraansları yenileri ile değiştirdim çalışmadı sonunda format attım yeni office kurdum çalıştı büyük ihtimalle bilgisarara kurulan programlardan bir referans değişikliğine sebeb oldu silerkende o referansıda sildi ondan dolayıdır diye düşünüyorum ayrıca

NOT: bu makale alıntıdır. Ayrıca kod deposunda vardır.
ado ile yaptığın kodları ve referans ların bir fotosunu gönderirse3n bakarız
ado ile yaptığınız örneği inceledikten sonra ado kullanmaya karar verdim ancak değir bilgisayarda sizin yaptığınız ado örneğini çalıştıramadığım için dao ile yapmaya karar vermek zorunda kaldım. yaptığım örneği kullanacak bilgisayarların hepsi standart sistem ve program eklenemiyor. çalışmama ihtimali geldiği için aklıma eskiye döndük yani..
sizin yaptığınız örneği açmaya çalıştığımdaki hata ve referanslara ait resimleri ekliyorum. teşekkür ederim. hatanın nereden kaynaklandığını anlayabilmek için referanslarda kendim değişikik yaptım.
referansları benim gönderdiğim resimdekine göre yap fazlaları kaldır sonra çalıştırmayı dene ve çıkan arızanın resmini ekle
Sayfalar: 1 2 3 4