Veritabanı Parolasının Otomatik Girilmesi

Katılım
12 Eylül 2008
Mesajlar
38
Excel Vers. ve Dili
2003
Merhabalar,

Birkaç saattir uğraşıpda yapamadığım bir problemim var. Destek olursanız sevinirim. Kullanıcılar access veritabanına bağlı bir VB formu üzerinden veri giriyorlar. Veritabanı parolası koymak istiyorum ama bu kullanıcıarın girişlerini aksatmamalı. Acaba kullanıcı formu açtığında yani veritabanına bağlanırken otomatik olarak şifrenin girilmesini sağlamanın bir yolu varmı. yani kullanıcı şifreyi bilmeyecek. Şifre kodun içinde olacak ve her bağlanıldığında ordaki ilgili komut şifreyi otomatik girecek.

Teşekkürler
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Önce, varolan mdb dosyanızı şifreleyiniz (mesela Şifre:123 olsun). Daha sonra;

VB'den ADO connection ile bağlandığınız varsayarak. Connection nesneninizin stringini aşağıdaki gibi dizayn edebilirsiniz.

Kod:
coN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source=C:\dosyanin_adi.mdb" & _
                       "User Id=admin;" & _
                       "Password=123;"
 
Katılım
12 Eylül 2008
Mesajlar
38
Excel Vers. ve Dili
2003
Ferhat Bey,

öncelikle desteğiniz için teşekkürler. Örnekde söylediğiniz gibi yaptım. Ancak datebase'e bağlanmadı. Bir hatada göstermedi. Şifrelemeden önce "Set RS = conn.Execute (strSql)" şeklinde bağlanıyordum. Acaba hata burda olmuş olabilir mi? Söz konusu komut değiştirilmeli mi?
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,374
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe


Kod:
coN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\dosyanin_adi.mdb[B][COLOR=blue];[/COLOR][/B]" & _
"User Id=admin;" & _
"Password=123;"
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Bir noktalı virgülü koymayı unutmuşum doğrusu şu şekilde olacak ...

Kod:
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\dosyanin_adi.mdb[B][COLOR=red];[/COLOR][/B]" & _
"User Id=admin;" & _
"Password=123;"

Bunun dışında ihtimal dahilinde birçok neden olabilir. Aklıma gelenler;

1. Ben size örnekte bağlantı nesnesi adı olarak "coN" örneğini verdim. Ama siz de bu nesnenin adı "conn" ... Verdiğim stringi kodlarınıza adapte ederken, "coN"'u "conn" olarak değiştirmeyi atlamış olabilirsiniz.

2. Eğer kodlarınızda, bağlantı öncesi "On Error REsume Next" gibi bir ifade varsa hata mesajı almamanız da mümkündür. Bu ifadeyi kaldırıp deneyiniz.
 
Katılım
12 Eylül 2008
Mesajlar
38
Excel Vers. ve Dili
2003
Herşeyi kontrol ettim ama yine bir problem var :( Excelden de bağlanmayı denedim şifre sorma ekranı geliyor ancak sonrasında database'i açmıyor.
Acaba sorun ne olabilir?
 
Katılım
12 Eylül 2008
Mesajlar
38
Excel Vers. ve Dili
2003
Herşeyi kontrol ettim ama yine bir problem var :( Excelden de bağlanmayı denedim şifre sorma ekranı geliyor ancak sonrasında database'i açmıyor.
Acaba sorun ne olabilir? datebase'de bir ayar eksik olabilir mi?
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Bağlantı yapmaya çalıştığınız herhangi bir prosedürü, buraya ekler misiniz ?

NOT : Kullandığınız Access'in versiyonu kaç? 2003 ve altı mı yoksa 2007 mi?
 
Katılım
12 Eylül 2008
Mesajlar
38
Excel Vers. ve Dili
2003
Sizden Aldımğım kodu aşağıdaki gibi kendi koduma ekliyorum.
Bağlandığım access versiyonu 2003 ve serverda duruyor.

Teşekkürler

Sub makine_ad()
If bag = False Then

coN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\dosyanin_adi.mdb;" & _
"User Id=admin;" & _
"Password=123;"

bag = True
End If

strSql = "Select MakineAdi from MakinaTanımları "
RS.Open strSql, conn, adOpenStatic, adLockReadOnly

Do Until RS.EOF
makina = RS.Fields(0).Value

vform.Madı.AddItem makina

RS.MoveNext
Loop
makine_kod


End Sub
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Ama bu şekilde çalışmayacağı belli ...

Bir kere, "dosya_adi" diye belirttiğim, "Data Source" kısmını kendinize uyarlamanız gerekiyordu.

İkincisi, "coN" nesne adını "conn" olarak düzeltmeniz gerekiyordu (Daha önce izah ettim)

Üçüncüsü; mdb dosyasına ne şifre verdiyseniz, PassWord kısmına onu yazmanı gerekiyordu.

Yapmanız gerekenler:

1. Server'daki dosyanızın yolunu tam olarak belirleyin. Örneğin; "\\Server\Klasor\AltKlasor\Veritabani.mdb" gibi bir yol olması gerekiyor. Bunu, kodlarda maviile belirttiğim yere tam olarak yazın.

2. Server üzerindeki mdb dosyasının şifresini, kodlarda kırmızı ile belirttiğim yere yazın.

Kod:
Sub makine_ad()
 
    If bag = False Then
        [COLOR=green]conn[/COLOR].ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                "Data Source=[COLOR=blue][B]xxxxxxxxx[/B][/COLOR];" & _
                                "User Id=admin;" & _
                                "Password=[COLOR=red][B]xxxxxx[/B][/COLOR];"
        bag = True
    End If
 
    strSql = "Select MakineAdi from MakinaTanımları "
    RS.Open strSql, conn, adOpenStatic, adLockReadOnly
 
    Do Until RS.EOF
        makina = RS.Fields(0).Value
        vform.Madı.AddItem makina
        RS.MoveNext
    Loop
 
    makine_kod
End Sub
 
Katılım
12 Eylül 2008
Mesajlar
38
Excel Vers. ve Dili
2003
Biraz aptal durumunu düştüm sanırım :) Zaten sizin söylediklerinizi ben yaptım ancak 2 farklı pc de çalıştığım için güncel olan dosya öbür bilgisayarda kalmıştı ve bende toplatıya gitmek üzereydim o yüzden sadece kodu nasıl kullandığımı görmeniz için burdan aldığım metni direk kodun içine koydum. Yoksa tabiki böyle çalışmaz. Ama sanırım sorun başka çünkü excel ile de mdb dosyasına veri almak için bağlanamıyorum sanırım database bozuldu. Şimdi tabloları başka bir mdb ye kopyalayıp öyle deneyeceğim. Sonucu yazarım.
Uzun uzun anlatmışsınız teşekkürler :)
 
Katılım
12 Eylül 2008
Mesajlar
38
Excel Vers. ve Dili
2003
Üsdat,

Tekrar denedim ve sonuç yine olumsuz neden bu kadar zor oluyor anlamadım :(
Kodumu aşağıda görebilirsin...

Kod:
Sub makine_ad()
    If bag = False Then
        conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                "Data Source=C:\den\mydb.mdb;" & _
                                "User Id=admin;" & _
                                "Password=11;"
        bag = True
    End If
 
    strSql = "Select MakineAdi from MakinaTanımları "
    RS.Open strSql, conn, adOpenStatic, adLockReadOnly
 
    Do Until RS.EOF
        makina = RS.Fields(0).Value
        vform.Madı.AddItem makina
        RS.MoveNext
    Loop
 
    makine_kod


End Sub
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Daha önceden, aynı veritabanına, aynı kodlarla, şifresiz bağlanabiliyor muydunuz ?
 
Katılım
12 Eylül 2008
Mesajlar
38
Excel Vers. ve Dili
2003
Evet bağlanıyorum ne zaman ki şifre koyup diğer kodu ekliyorum o zaman bağlanamıyorum.
Tabi daha önce " RS.Open strSql, conn, adOpenStatic, adLockReadOnly"
yerine
"Set RS = conn.Execute(strSql)"
yazıyordum. Tek fark bu..
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
mdb dosyanızın içindeki verileri silerek, buraya ekleme şansını varsa; bir de biz buradan bağlanmayı deneyelim...
 
Katılım
12 Eylül 2008
Mesajlar
38
Excel Vers. ve Dili
2003
Mdb dosyam ve dosya ulaşmak için kullandım excel arayüzü ektedir.
Umarım sorunu çözebilirsin. Excelin içinde makine_ekle adında bir modül var kodlar onun içinde.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Kodu şu şekilde değiştiriniz.

NOT : connection string değiştirildi ve connection nesnesine aç komutu verildi.

Kod:
Sub makine_ad()
If bag = False Then
    conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                            "Data Source=" & ThisWorkbook.path & Application.PathSeparator & "mydb.mdb" & ";" & _
                            "Jet OLEDB:Database Password=11;"
    conn.Open
    bag = True
End If
strSql = "Select MakineAdi from MakinaTanımları "
RS.Open strSql, conn, adOpenStatic, adLockReadOnly
 
Do Until RS.EOF
    makina = RS.Fields(0).Value
    vform.Madı.AddItem makina
    RS.MoveNext
Loop
makine_kod
End Sub
 
Katılım
12 Eylül 2008
Mesajlar
38
Excel Vers. ve Dili
2003
Çok teşekkürler. Elinize sağlık. Şimdi oldu ancak mdb yi benim verdiğim (değişken olarak tanımladığım) path de değilde direk "C:\den\". şeklinde tanımladığımda açıyor. Bunun için aşağıdaki kodu nasıl düzenlemeliyim?

Const path = "C:\den\"

"Data Source=" & "C:\den\" & Application.PathSeparator & "mydb.mdb" & ";" & _
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Aşağıdaki gibi yapın.

Kod:
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                        "Data Source=" & path & "mydb.mdb" & ";" & _
                        "Jet OLEDB:Database Password=11;"
 
Katılım
12 Eylül 2008
Mesajlar
38
Excel Vers. ve Dili
2003
Tekrar teşekkür ederim. Yardımlarınızın bana büyük faydası oldu.
 
Üst