Access nesnelerine tasarım değişikliklerini kaydetmek için özel kullanım kilidi gereklidir

Özgün KB numarası: 283228

Not

Gelişmiş: Uzman kodlama, birlikte çalışabilirlik ve çok kullanıcılı beceriler gerektirir. Bu makale yalnızca bir Microsoft Access veritabanı (.mdb ve .accdb) için geçerlidir.

Belirtiler

Araç çubuklarını özelleştirmeye veya Tasarım görünümünde bir Microsoft Access formu, raporu, makro veya modülünü açmaya çalıştığınızda aşağıdaki iletiyi alırsınız:

Şu anda veritabanına özel erişiminiz yok. Değişiklik yapmaya devam ederseniz, bunları daha sonra kaydedemeyebilirsiniz.

Access formu, raporu, makro veya modülünde yaptığınız tasarım değişikliklerini kaydetmeye çalıştığınızda aşağıdaki iletiyi alırsınız:

Şu anda veritabanına özel erişiminiz yok. Tasarım değişiklikleriniz kaydedilmeyecek.

Yeni bir veri erişim sayfasını kaydetmeye çalıştığınızda aşağıdaki iletiyi alırsınız:

Veritabanı özel olarak kilitlenemediğinden bu veri erişim sayfasının bağlantısı oluşturulamadı.

Neden

  • Tasarım görünümünde form, rapor, makro, modül veya komut çubuğunu açmaya çalışıyorsunuz.
  • Diğer kullanıcılar aynı veritabanı açıkken bu nesne türlerinden birinde veya yeni bir sayfa bağlantısında tasarım değişikliklerini kaydetmeye çalışıyorsunuz.

Bu nesne türlerinde tasarım değişikliklerini kaydetmek için Access'in veritabanında özel kullanım kilidi alabilmesi gerekir.

Çözüm

Bir Access uygulamasını aynı anda birden çok geliştiricinin tasarladığı durumlarda, Microsoft Access için Microsoft Visual SourceSafe Eklentisi'ni kullanarak kaynak kodu denetimi uygulamanız gerekir. Ya da veritabanının yerel çalışma kopyalarını her geliştiriciye dağıtmanız gerekir. Bu seçeneklerin her birinin tartışması aşağıdadır.

Kaynak kodu denetimi uygulama

Microsoft Access Visual SourceSafe Add-In, Access uygulamanızı geliştirme aşamasındayken kaynak kodu denetimine yerleştirmenize izin verir. Uygulamanızı kaynak kodu denetimine koyarsanız, bu, uygulamanızda zaman içinde yapılan değişiklikleri izlemenize ve depolamanıza izin verir. Microsoft Visual SourceSafe kullanarak bir nesnenin geçmişini gözden geçirebilir ve sonra nesnenin önceki sürümlerine geri dönebilirsiniz. Microsoft Access uygulamasındaki nesneleri kullanıma alabilir, bunları değiştirebilir veya yerel kopyalarında yeni nesneler oluşturabilir ve ardından kaynak kod denetimi altında ana veritabanına geri dönebilirsiniz. Microsoft Access Visual SourceSafe Add-In, Microsoft Office XP Geliştiricisi ile kullanılabilir. Microsoft Access Visual SourceSafe Eklentisi'ni kullanmak için, Microsoft Office XP Geliştiricisi ile de kullanılabilen Microsoft Visual SourceSafe'yi ayrıca yüklemeniz gerekir.

Tek tek çalışan veritabanlarını kullanma

Uygulayabileceğiniz bir diğer seçenek de veritabanı uygulamasının ana kopyasını merkezi bir konumda tutmak ve ardından her geliştiricinin bilgisayarında veritabanının tek tek çalışma kopyalarını kullanmaktır. Her geliştirici, veritabanının yerel çalışma kopyasında uygulamanın tek bir bölümünü geliştirebilir. Geliştiriciler veritabanı uygulamasındaki bir nesnede değişiklik yapmak istediklerinde, nesneyi ana veritabanından yerel çalışma veritabanına aktarır. Ardından geliştiriciler yerel çalışma veritabanında nesnede gerekli değişiklikleri yapar ve nesneyi kaydeder. Geliştiriciler değişiklikleri ana veritabanına işlemeye hazır olduğunda, nesneyi özgün nesnenin üzerine yazarak ana veritabanına aktarır.

Bu yaklaşımı kullanmanın bir dezavantajı, birden çok geliştiricinin aynı nesne üzerinde aynı anda yerel olarak çalışıp çalışmadığını belirlemenin bir yolu olmamasıdır. Geliştirici nesneyi ana veritabanına aktardığında, geliştirici farkında olmadan başka bir geliştiricinin ana veritabanına yaptığı değişikliklerin üzerine yazabilir.

Ek Bilgi

Formlar, raporlar, yeni sayfa bağlantıları, makrolar, modüller ve komut çubukları gibi Access'e özgü nesnelerde tasarım değişikliklerini kaydetmek için, Access 2002'nin Kaydet işlemi sırasında veritabanını özel olarak kilitleyebilmesi gerekir. Tablolar, sorgular ve ilişkiler Microsoft Jet'e özgü nesneler olduğundan bu kısıtlamaya düşmez. Microsoft bu gereksinimi Access 2002'de çeşitli nedenlerle kullanır:

  • Diğer Visual Basic Environment istemci uygulamalarıyla tutarlılık sağlar.
  • Jet veritabanı altyapısına bağımlılığı durdurur.
  • Access'e özgü nesnelerin kararlılığını artırır.

Diğer Visual Basic ortam istemci uygulamalarıyla tutarlılık sağlar

Access 2002, Visual Basic ortamını barındırdığından, Microsoft Access tarafından kullanılan kaydetme modelinin Visual Basic ortamını barındıran diğer uygulamalarla tutarlı olması gerekir. Visual Basic ortamı yalnızca kaynak kodu denetimi altında olmayan Visual Basic projelerinin özel olarak düzenlenmesine ve kaydedilmesine izin verir. Bu, Visual Basic 6.0 ve Visual Basic ortamını barındıran tüm Office uygulamaları için geçerlidir.

Jet veritabanı altyapısına bağımlılığı durdurur

Access, Microsoft Access proje (.adp) dosyaları ve ayrıca Microsoft Access veritabanları (.mdb) oluşturma olanağı sunar. Geliştiriciler, Access projesi kullanarak Microsoft SQL Server'ı Microsoft Jet'e başka bir veritabanı altyapısı olarak kullanabilir. Geçmişte, access'e özgü tüm nesneler (formlar, raporlar, makrolar, modüller ve komut çubukları) depolama için Jet veritabanı altyapısına bağımlıydı. Bu nesneler, Microsoft Jet veritabanındaki Access'e özgü sistem tablolarında depolandı. Access'in Microsoft Jet'e alternatif olarak Microsoft SQL Server kullanması mümkün olduğundan, Microsoft'un Jet veritabanı altyapısını kullanmayan Access'e özgü nesneler için bir depolama mekanizması geliştirmesi gerekiyordu.

Access'e özgü nesnelerin kararlılığını artırır

Proje depolama modeli, Access'e özgü nesnelerin ve Visual Basic projesinin kararlılığını artırır. Visual Basic for Applications, visual basic projelerinin kaynak kodu denetimi olmadan çok kullanıcılı düzenlenmesine hiçbir zaman izin vermemiştir. Microsoft Access 95 ve Microsoft Access 97, çok kullanıcılı bir ortamda yapılan proje değişikliklerini Visual Basic for Applications gizleyip daha sonra bunları projeye birleştirerek bu kısıtlamayı aşabilir. Ancak bu, Visual Basic projesinin kararlılığını etkileme olasılığına sahipti. Bu nedenle, Projenin yalnızca bir düzenleyiciye sahip olduğundan emin olmak için Access'e özgü nesneler tasarlarken Microsoft Access özel bir kilit gerektirir.

Çok kullanıcılı bir ortamda Access nesnelerini düzenleme

Kullanıcılar bir veritabanını özel kullanım veya paylaşılan kullanım için açabileceğinden, Access tarafından sergilenen kaydetme davranışı kullanıcının veritabanını nasıl açtığına ve şu anda birden çok kullanıcının veritabanına erişip erişmediğine bağlıdır.

Geliştirici veritabanını özel kullanım için açarsa, geliştirici veritabanını okuma/yazma erişimi için açabilmesi ve nesnenin tasarımını değiştirmek için doğru izinlere sahip olması koşuluyla, access'e özgü herhangi bir nesnenin tasarımını kaydedebilir.

Kullanıcı veritabanını paylaşılan kullanım için açarsa, kullanıcının veritabanını okuma/yazma erişimi için açabilmesi, nesnenin tasarımını değiştirmek için doğru izinlere sahip olması ve Access'in veritabanında özel bir kilit elde etme şartıyla, access'e özgü herhangi bir nesnenin tasarımını kaydedebilir.

Yükseltmeyi kilitle

Veritabanının özel kullanımda olduğundan emin olmak için Access, Jet veritabanı altyapısının bağlantı denetimi özelliğini kullanarak kullanıcının paylaşılan kilidini özel kullanıma hazır hale getirir. Kullanıcı Tasarım görünümünde bir form, rapor, makro veya komut çubuğu açtığında Access paylaşılan kilidi özel kilit olarak yükseltmeye çalışır. Access, bir kullanıcının yalnızca daha sonra kullanıcının özel kullanım kilidi alamadığı için bunları kaydedemediğini bulmak için birden çok tasarım değişikliği yaptığı senaryoyu önlemek için şu anda kilit yükseltmeyi dener. Kullanıcı Tasarım görünümünde bir nesneyi açar açmaz kilit yükseltmeyi deneyerek, kullanıcı tasarım değişiklikleri yapmadan önce özel kullanım kilidi alamaması durumunda Access kullanıcıyı uyarabilir. Tasarım görünümünde bir modülü açarken Access kilit yükseltmeyi denemez; ancak kullanıcı veritabanındaki herhangi bir modülü düzenler düzenlemez kilit yükseltmeyi dener.

Kullanıcı tüm kirli nesneleri kaydedene veya atana ve Tasarım görünümünde başka hiçbir nesne açılmayıncaya kadar Access özel kullanım kilidini korur. Bunun ardından, veritabanı başlangıçta paylaşılan kullanım için açılmışsa Access kilidi paylaşılan olarak indirger.

Kullanıcı Tasarım görünümünde bir nesne açtığında Access kilidi özel kullanım için yükseltemezse, Access kullanıcıyı şu iletiyle uyarır:

Şu anda veritabanına özel erişiminiz yok. Değişiklik yapmaya devam ederseniz, bunları daha sonra kaydedemeyebilirsiniz.

Bu uyarı iletisinin ardından, Access nesneyi Tasarım görünümünde açar ve kullanıcının tasarım değişiklikleri yapmasına izin verir. Kullanıcı nesneyi kaydetmeye çalışırsa, Access paylaşılan kilidi özel kullanım için yükseltmeye çalışır. Kilit yükseltme başarılı olursa, Kullanıcı diğer tüm kirli nesneleri kaydedene veya atana ve Tasarım görünümünde hiçbir nesne açık kalmayana kadar Access nesneyi kaydeder ve özel kullanım kilidini korur. Kilit yükseltmesi başarısız olursa kullanıcı aşağıdaki iletiyi alır:

Şu anda veritabanına özel erişiminiz yok. Tasarım değişiklikleriniz kaydedilmeyecek.

Kullanıcı kirli nesneyi kapatmaya ve değişiklikleri kaydetmeye çalışırsa, Access kullanıcıya nesneyi kapatma ve nesnede yapılan tasarım değişikliklerini atma seçeneğini veya açık ve kaydedilmemiş olarak bırakma seçeneğini sorar.

Davranışı yeniden oluşturma adımları

  1. Aynı bilgisayarda iki Microsoft Access örneği başlatın.

  2. Her iki örnekte de örnek veritabanı Northwind.mdb açın.

  3. Microsoft Access'in ilk örneğinde Müşteriler formunu Tasarım görünümünde açın.

    şu iletiyi alırsınız:

    Şu anda veritabanına özel erişiminiz yok. Değişiklik yapmaya devam ederseniz, bunları daha sonra kaydedemeyebilirsiniz.

  4. İletiyi temizlemek için Tamam'a tıklayın.

    Form Tasarım görünümünde açılır.

  5. Forma bir metin kutusu denetimi ekleyin.

  6. Dosya menüsünde Kaydet'e tıklayın.

    Aşağıdaki iletiyi alırsınız:

    Şu anda veritabanına özel erişiminiz yok. Tasarım değişiklikleriniz kaydedilmeyecek.

  7. İletiyi temizlemek için Tamam'a tıklayın.

  8. Bilgisayarınızda Access'in ikinci örneğini kapatın.

  9. Access'in ilk örneğinde formu yeniden kaydetmeyi deneyin.

    Form başarıyla kaydedilir.