Skip to main content

AccessTr.neT


Access Rasim Ve Uygulama Boyutu Hk...

ergin.tekinalp
ergin.tekinalp
5
347

Access Rasim Ve Uygulama Boyutu Hk...

Çözüldü #1
Merhabalar;
Uygulamama bir resim nesnesi yerleştirdim ve burada gösterilecek resimler bir paylaşım klasöründe bulunuyor.

Veritabanına herhangi bir resim kaydetmiyorum anlayacağınız.

Fakat form tasarım modundayken nesnesinin Biçim sekmesinde Resim adında bir seçenek var ve paylaşımdaki resim isimleri bu alanda görünüyor.

Bu alana otomatik mi geliyor isimler?
Bu alanda isimleri görünmesi uygulamanın boyutunu şişirir mi?
Uygulamanın boyutunu şişiriyorsa nasıl düzeltebilirim?

Şimdiden teşekkür ederim desteğiniz için...

[Resim: do.php?img=11842]
Cevapla
#2
Access ile resim dosyalarını işlemek için kullanılabilecek üç ana teknik vardır:
  1. Resmi bir OLE alanında saklayıp görüntülemek için bağlı bir nesne çerçevesi kullanmak.
  2. Resmi görüntülemek için bir image denetimi kullanarak görüntünün yolunu bir metin alanında saklamak.
  3. Resmi bir OLE alanında ikili büyük nesne bit eşlemi (BLOB) olarak saklayıp gerektiğinde çıkarmak ve görüntülemek için bir image denetimi kullanmak.
Her tekniğin avantajları ve dezavantajları vardır:
1. teknik, özellikle OLE (Nesne Bağlama ve Gömme) sunucu hatalarından vb. diğer sorunlardan dolayı açık ara en sorunlu olanıdır. Bu teknikte bir başka handikap, Access'in görüntünün bir bitmap sürümünü de oluşturup depolaması nedeniyle, görüntüleri bu şekilde depolamaktan kaynaklanan veritabanı boyutundaki artıştır. Örneğin, iki alandan oluşan tek bir tablo oluşturup "id" ve "image" (OLE alanı) alanları ekleyerek resimlerin eklenmesine ve görüntülenmesine izin veren tek bir form ihtiva eden bir veritabanının toplam boyutu, herhangi bir resim olmadan 124 kb iken 4kb'lik bir gif eklendikten sonra 156kb olacaktır. 32 kb'lik bir boyut artışı çok fazla görünmeyebilir ancak orijinal görüntünün yalnızca 4 kb olduğu ve çok sayıda görüntü eklendiğinde boyuttaki genel artışın ne noktada olabileceğini düşünün.
2. teknik genellikle tercih edilen ve uygulanması oldukça kolay olandır. Görüntünün yolu bir metin alanında saklanır ve görüntü standart bir image kontrolü kullanılarak görüntülenir. Bu teknik, veritabanı boyutunu minimumda tutar ve uygulamanın genel performansını artırır. Bu tekniği kullanmanın dezavantajı sürekli formlar kullanıldığında ortaya çıkar ve her kayıt için aynı resmin görüntülendiğini görürüz. Bu tekniğin bir başka dezavantajı da görüntüler veritabanı dosyasında saklanmadığı için güvenli bir şekilde saklanması gereken durumlarda görüntülerin şifre korumalı olamamasıdır.
3. tekniğin uygulaması oldukça zor olabilir, ancak görüntüleri veritabanında saklama avantajına sahiptir ki bu da parola korumasının mümkün olduğu anlamına gelir ve ayrıca görüntüler gerçek boyutlarını yansıtacak şekilde depolandığından ilk teknikteki şişkinliği önler. Görüntü dosyasını almak ve onu parçalar halinde OLE alanına uygulamak için DAO veya ADO kullanabilir. Resmi görüntülemek için, onu veritabanından geçici bir dosyaya çıkarmak ve ikinci teknikte olduğu gibi, kaynağı geçici dosyanın yoluna ayarlayarak görüntülemek için image denetimi kullanılır. Geçici dosyayla işimiz bittiğinde Vba kill komutu ile silinebilir. 2. teknikte olduğu gibi, Access sürekli formlarında aynı sorun vardır.

Tercihen veritabanı içinde resim kullanılmamalıdır ancak çok mecbur iseniz kişisel veri içermediği sürece 2. teknik, aksi halinde 3. tekniği uygulamak gerektiğini söylerim.
Cevapla
#3
Verdiğiniz bilgi için teşekkür ederim. Ben zaten resimleri veritabanında tutmuyorum,sadece aşağıdaki kodda belirtiğim gibi ürünün kodu ile resim adını karşılaştırıyorum. Sistem ürünün kodu ile aynı isme sahip resmi resimlerin yer aldığı klasörde arıyor bulduğunda görüntülüyor.

Ama benim anlamadığım biçin sekmesinde bu ürün kodları neden gözüküyor?

Dim DosyaAdi, Dosya As String

DosyaAdi = Form_frmMamulSecimListesiIki.lstMamulSecimListesiiki.Column(1)
Dosya = Dir("\\Belgeler\Resimler\" & DosyaAdi & ".*", 1)
If Dosya = "" Then
rsmStok.Picture = "\\Belgeler\Resimler\YOK.BMP"
Else
rsmStok.Picture = "\\Belgeler\Resimler\" & Dosya
End If
Cevapla
#4
Dosya yolu olarak veritabanınızda kayıtlı olduğundan veya ilgili klasörden resim yüklediğiniz için
Cevapla
#5
(23/05/2022, 18:55)atoykan yazdı: Dosya yolu olarak veritabanınızda kayıtlı olduğundan veya ilgili klasörden resim yüklediğiniz için
Teşekkür ederim
Cevapla
#6
Rica ederim. İyi çalışmalar.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task