Konu Araçları | Seçenekler: | Gösterim Stili
Tarih
10/11/2010 12:00
Konu Sahibi
doganbaris
Yorumlar
4
Okunma
2889
Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 5
  • 4
  • 3
  • 2
  • 1

Derecelendirme: 0/5 - 0 oy
Kullanici Avatari

doganbaris

Üye
Üye
 Belirtilmemiş
 9
 3
 23/09/2010
0
 İstanbul
 
 Ofis 2003
 22/03/2011,15:52
Çözüldü 
Merhaba Arkadaşlar

Database de resim konusunda pek çok konu açılmış, ancak ya ben aradığımı bulamadım, ya da istediğim konu yok...

Benim merak ettiğim, Access deki table içerisinde resim dosyalarını nasıl saklayabilirim ? burada benim için önemli olan resim dosyasının tabloda durması ve mdb dosyası ile birlikte taşınabilmesi. Personel bilgilerine resim eklemek istiyorum, mevcut durumda personel numarası ile aynı isimleri taşıyan jpg dosyalarım mevcut ancak diğer birimlerle paylaşılması durumunda binlerce fotoğraf dosyasının da kopyalanması gerekiyor. bunun yerine tabloda tutmak istiyorum.resimlerin boyutları çok küçük, o nedenle tabloda tutulması performans açısından sıkıntı yaratmayacak diye düşünüyorum.

Anladığım kadarı ile tabloda OLE nesnesi olarak yer alması gerekiyor. Ancak, tablonun içerisine binlerce fotoğrafı nasıl yükleyeceğimi bulamadım. mümkünse Vba tarafından döngü ile halletmek istiyorum.

yardımcı olacak arkadaşlara şimdiden teşekkürler.



Kullanici Avatari

C*e*l*o*y*c*e

Uzman
Uzman
ME.... B.....
 46
 3.130
 67
 29/10/2008
982
 Ankara
 Yazılım
 Ofis 2010 32 Bit
 Bugün,17:18
Çözüldü 
syn doganbarıs
şahsen ben binlerce resmin tabloda durmasının çok sıskıntı çıkaracagını geç açılacagını düşünüyorum,dedigiz gibi bir örnek formumuzda vardı,sanırım eşref hoca eklemişti,ama önermiyorum kayıtlar arası çok geç açılıyor,en iyisi ayrı bir veritabanında database yaparak bir bilgisayarda tutmanızı öneririm,kolay gelsin



Kullanici Avatari

Seruz

Uzman
Uzman
SE.... UZ....
 47
 1.562
 7
 30/10/2008
814
 Tekirdağ
 BT Şefi
 Ofis XP
 09/09/2018,11:08
Çözüldü 
Sn. Celoyce gibi bende tavsiye etmiyorum ancak taşımak istediğinizde bir sürü resim resim dosyası yerine accessle beraber tek dosya olması tabii ki hoş oluyor.

Resimleri yükleyip dosyanın boyutunun ne olduğunu ve çalışma performansını görmekte fayda var.

Örnek hazırlamak için vaktim şu an vaktim yok ancak daha önce bu tür bir iş için kullandığım örnek kodu yolluyorum.

Örnekte DESENRESIM adlı tabloya resimler yükleniyor.
DESEN_TAMYOL adlı alanda resmin tam yolu ve adı var. (Türü: Metin)
DESEN_PIC adlı alana resim dosyası yükleniyor. (Türü: OLE Object)

Kodda en can alıcı yerler şunlar:
Open Rs!DESEN_TAMYOL For Binary As DosyaNo
Get #DosyaNo, , Img
Rs!DESEN_PIC = Img

Visual Basic Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Private Sub btn_Kaydet_Click()
Dim DB As DAO.Database
Dim Rs As DAO.Recordset
Dim Img() As Byte, i As Long
Dim DosyaNo As Integer

DosyaNo = FreeFile

Set DB = CurrentDb()
Set Rs = DB.OpenRecordset("Select * From DESENRESIM")

'Veriatabanını ilk kaydına gidiyoruz:
'Rs.MoveFirst

Do While Not Rs.EOF
    
    Rs.Edit

    Open Rs!DESEN_TAMYOL For Binary As DosyaNo
    
    'Img() değişkenimize (array) tek boyutlu olarak resim dosyasının boyu kadar büyüklük atadık:
    ReDim Img(LOF(DosyaNo))
    
    'Dosyadan her adımda bir byte okuyup Img değişkeni içine yazıyoruz:
    Do While Not EOF(DosyaNo)
        Get #DosyaNo, , Img
        i = i + 1
    Loop
    Close #DosyaNo
    Rs!DESEN_PIC = Img
    
    Rs.Update
    Rs.MoveNext
Loop
MsgBox "Tamamlandı"
End Sub



Bu arada tabloya kaydettiğimiz resmi göstermek için, öncelikle geçici bir tabloya resim dosyası olarak kaydediyoruz, Oradan yolunu göstererek açabiliyoruz.

Visual Basic Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Private Sub Desenin_Resmini_Goster()
On Error GoTo hata

'**************Veritabanındaki Resmin Bir Dosyaya Kaydedilmesi******************
Dim Img() As Byte, i As Long, Dosya As Integer
'Veritabanının Resim alanında bulunan bilgiyi Img değişkenine yükledik:
Img = Me.DESEN_PIC

'Boş dosya numarasını aldık:
Dosya = FreeFile

'Programın çalışma yolu (Path1) ile veritabanının ResimAd alanından oluşan ve dosyanın tam uzun adını gösteren bir şekilde yeni bir dosya yarattık. Mesela: C: esimlerçiçek1.jpg
Open "Desen.jpg" For Binary As #Dosya

'Bilgiyi (resmi) yani Img'nin içindekileri Dosya nolu dosya içine kaydediyoruz:
Put #Dosya, , Img

'Dosyamızı kapatıyoruz:
Close #Dosya

'**************Veritabanındaki Resmin Bir Dosyaya Kaydedilmesi Bitti**************
'İşiniz sadece resmi göstermek ise tabiki yukarıdaki işlemleri yapmanıza gerek yok. Yukarıda 'ayrılmış alandaki kod veritabanı içinden bir resmi aynı adda programın çalışma dizini içine 'kaydeder. Aşağıdaki kod ise sadece resim gösterir:

Me.Resim_Desen1.Picture = LoadPicture("Desen.jpg")

Exit Sub
hata:
    Me.Resim_Desen1.Picture = LoadPicture("")
End Sub


Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs

Kullanici Avatari

doganbaris

Üye
Üye
 Belirtilmemiş
 9
 3
 23/09/2010
0
 İstanbul
 
 Ofis 2003
 22/03/2011,15:52
Çözüldü 
ilk fırsatta deneyerek bilgi vereceğim.
Dosyaların sayısına tekrar baktım, 28 bin 336 tane... hepsi 5 Kb'lık dosyalar, tabloyada aynı yükü getirse en fazla 150 Mb olur ki, kasacağını sanmıyorum, ancak 28,336 + 1 dosyayı kopyalamak saatler sürüyor... Img-grin



Kullanici Avatari

akd

Aktif Üye
Aktif Üye
 Belirtilmemiş
 273
 61
 04/11/2008
35
 Gaziantep
 
 Ofis 2003
 07/05/2017,23:02
Çözüldü 
Merhaba arkadaşlar,
resimleri ole nesnesi olarak kaydetmekten bahsediyorsunuz degilmi?
peki bu resimleri access'e kaydetmek güvenlimi,
bozulma riski nedir, resimlerin uçma sansı nedir.
bozulma sonrası kurtulma şansı varmı?




Konuyu Okuyanlar: 1 Ziyaretçi

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Çözüldü Tek Bir Formdan 6 Tabloya Veri kursun 8 203 28/08/2018, 13:53
Son Yorum: kursun
Çözüldü Vcard İçin Resim Kayıt Zorunluluğu Olmasın access acemisi 2 98 16/08/2018, 23:47
Son Yorum: access acemisi
Çözüldü Webden Forma Browser İle Resim Gösterip Alma ielmacilar 16 325 01/08/2018, 19:09
Son Yorum: ielmacilar
Çözüldü Forma Girilen Veriyi İkinci Bir Tabloya Yazdırma Amras 1 140 28/07/2018, 23:31
Son Yorum: Amras
Çözüldü Webden Resim Çağırma estapan 7 588 26/07/2018, 15:41
Son Yorum: ielmacilar

Türkçe Çeviri: MCTR, Yazılım: MyBB, © 2002-2018 MyBB Group.