Skip to main content

AccessTr.neT


Access Açılışta Kontrol

Access Açılışta Kontrol

Çözüldü #1
Merhaba, paylaşıma açık bir Access programı ağda açıkken ikinci bir kullanıcının açamaması için kod lazım.
Yani program ağda herhangi bir kullanıcı tarafından ilk defa açıldığında, diğer kullanıcılara mesaj vererek ikinci defa açılmamasını istiyorum. (Program açıldığında başka kullanıcı tarafından açılıp açılmadığı kontrol edilecek, eğer ağdaki başka bir kullanıcı tarafından açılmışsa mesaj vererek programı kapatacak.)
Teşekkür ederim.
Cevapla
#2
Kullanicilar tablosuna giriş yapan kullanıcının son işlem zamanını kaydedin. Sonradan girmek isteyen kişi bu değere göre kontrol yapar giremez. İki şeye dikkat edeceksin:

1- Son işlem zamanı her forma girişte vs. güncellenmesi lazım
2- Son işlem zamanı ne ise bundan sonra eğer 10 dk işlem yapılmadı ise girişe izin verilmesi lazım

İş bu kadar basit değil tabi ki:

AA kullanıcısı giriş yaptı programı kullanıyor, BB girmek istedi Kullanicilar tablosundan bakacak AA programı kullanıyor giriş yapamayacak. Bu arada AA kullanıcısı 10 dk işlem yapmamış olsun. BB tekrar giriş yapmak istedi ve AA 10 dk pasif kaldığı için giriş yapabilecek. BB programı kullanırken AA yemekten döndü bilgisayarın başına oturdu aynı anda BB programı kullanmaya devam ediyor. Bu durumda ne olacak? Bunu aşmanın bir yolu var. AA 10 dk kullanmayınca tekrar formda işlem yapmak isteyince oturum sonlanmış olduğundan AA yı otomatik dışarı atacak. Tekrar giriş yapmak isteyince BB çalıştığı için giremeyecek.

Nihayetinde ise çok gereksiz bir istekte bulunuyorsunuz. Veritabanı çoklu çalışmaya müsait şekilde üretilmiştir. Eğer isteğiniz bir kişi kayıtta işlem yaparken aynı anda bir başkası işlem yapamasın diyorsanız çözüm bu değil.
AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.
Cevapla
#3
(22/12/2015 09:26)alpeki99 Adlı Kullanıcıdan Alıntı: Kullanicilar tablosuna giriş yapan kullanıcının son işlem zamanını kaydedin. Sonradan girmek isteyen kişi bu değere göre kontrol yapar giremez. İki şeye dikkat edeceksin:

1- Son işlem zamanı her forma girişte vs. güncellenmesi lazım
2- Son işlem zamanı ne ise bundan sonra eğer 10 dk işlem yapılmadı ise girişe izin verilmesi lazım

İş bu kadar basit değil tabi ki:

AA kullanıcısı giriş yaptı programı kullanıyor, BB girmek istedi Kullanicilar tablosundan bakacak AA programı kullanıyor giriş yapamayacak. Bu arada AA kullanıcısı 10 dk işlem yapmamış olsun. BB tekrar giriş yapmak istedi ve AA 10 dk pasif kaldığı için giriş yapabilecek. BB programı kullanırken AA yemekten döndü bilgisayarın başına oturdu aynı anda BB programı kullanmaya devam ediyor. Bu durumda ne olacak? Bunu aşmanın bir yolu var. AA 10 dk kullanmayınca tekrar formda işlem yapmak isteyince oturum sonlanmış olduğundan AA yı otomatik dışarı atacak. Tekrar giriş yapmak isteyince BB çalıştığı için giremeyecek.

Nihayetinde ise çok gereksiz bir istekte bulunuyorsunuz. Veritabanı çoklu çalışmaya müsait şekilde üretilmiştir. Eğer isteğiniz bir kişi kayıtta işlem yaparken aynı anda bir başkası işlem yapamasın diyorsanız çözüm bu değil.

ne demek istediğinizi anlamadım. Benim istediğim özetle kullanımda olan programa diğerleri giriş yapamasın.
Cevapla
#4
Demek istediğim o kadar çok senaryo var ki istediğiniz şeyi yapmak çok gereksiz. Siz neden başkalarının kullanmasını istemediğinizi belirtirseniz ona göre çözüm tavsiye edelim.
AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.
Cevapla
#5
Ağda kullanılan bu program da evrak kayıt girişi yapılmakta, program üzerinden sayı alınıp kaydedilmekte, o yüzden her seferinde tek kullanıcının kullanabilmesi gerekiyor.Teşekkür ederim.

Başka bir forumda bir arkadaşın aşağıdaki gibi bir yardımı olmuştu ama Access işlev hatası verdi.

Option Compare Database
Public Function trz()
yol = "D:\Paylaşım\Kayıt.ldb"
If Dir(yol) <> "" Then
evn = FreeFile
Open yol For Input As #evn
Do Until EOF(evn)
Line Input #evn, kullanici
yaz = yaz & kullanici
Loop
Close evn
MsgBox "Dosya şu anda aşağıdaki kişi/kişiler tarafından kullanılmaktadır. " & vbCrLf & vbCrLf & yaz, 64, "VBA"
End If
End Function

Bu fonksiyonu Access açılışında otomatik çalışan makroya (Autoexec) kaydettim ancak aşağıdaki hataları verdi.
[Resim: do.php?img=5261]

[Resim: do.php?img=5262]
Son Düzenleme: 23/12/2015, 10:44, Düzenleyen: neyzen006. (Sebep: değişiklik)
Cevapla
#6
Bu çözüm her zaman işe yaramayabilir çünkü program kullanılmadığı halde yanlış kapatılmalardan dolayı ldb dosyası olabiliyor. Bu durumda değil bir kişi hiç kimse giremez Img-grin İşe yararmı yarar ama yukarıda bahsetmiş olduğum gibi senaryoları düşünmek zorundasınız. Kullanıcı programın başından kalktı bir yere gitti program açık kaldığı için o program kapatılana kadar başkası işlem yapamaz. Maksat alınan sayıların birbiri ile aynı olmaması, atlamaması vs. ise ADO ile tablo kilitlenebilir vs.vs. yol yöntem araştırılır.
AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da