vt ye birden çok resim kaydetme ve gösterme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
vt ye birden çok resim kaydetme ve gösterme
vt olarak access kullanıyorum ve resimleri veritabanı dışında bir klasöre kaydettiriyorum. image1 ile bir resim ekleyebiliyorum ve gösterebiliyorum. Fakat ben birden çok resim kaydedebilmek ve gösterebilmek istiyorum. Bunu nasıl yapabilirim. kodlarla yardımcı olursanız sevinirim. hepinize iyi çalışmalar.
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
diğelim ki Resim diye bir master tableniz olsun
Bunun alanları varsayalım ki
Resim_Id //Autoinc
Resim_Sira / Resim sira no
Resim_Adi // Resmin ana konusu
Resim_Aciklama // Herhangi birşey
Detay tablomuz da
Resim_Detay_Id //Autoinc
Resim_Detay_Sira // Resim detay sirası
Resim_Detay_Adi // Resmin adı ve yolu
Resim_Detay_Aciklama // Herhangi birşey
Resim_Sira ile Resim_Detay_Sira alanları arasında master-detay
ilişki kurun alanları link yapın
Önce yeni bir kart açarak Resim(Master tablo) tablenize gerekli bilgileri girin.
Sonra resimlerin isimlerini yolu ile beraber tek tek detay tablenize kaydedin.
Yalnız resimlerinizi veritabanına atmayın bu ilerde çok büyük kapasitelere ulaşır. resimlerinizi isimlendirerek bu isimleri veritabanına kaydedin
resimler klasörlerde kalsın
Resimlerin gösterilme işine gelince detay tablenizde hangi kayıt üzerinde iseniz ordaki Resim_Detay_Adi alanındaki bilgiye göre image load yaparak resmi göstersin.
Kolay gelsin.
Bunun alanları varsayalım ki
Resim_Id //Autoinc
Resim_Sira / Resim sira no
Resim_Adi // Resmin ana konusu
Resim_Aciklama // Herhangi birşey
Detay tablomuz da
Resim_Detay_Id //Autoinc
Resim_Detay_Sira // Resim detay sirası
Resim_Detay_Adi // Resmin adı ve yolu
Resim_Detay_Aciklama // Herhangi birşey
Resim_Sira ile Resim_Detay_Sira alanları arasında master-detay
ilişki kurun alanları link yapın
Önce yeni bir kart açarak Resim(Master tablo) tablenize gerekli bilgileri girin.
Sonra resimlerin isimlerini yolu ile beraber tek tek detay tablenize kaydedin.
Yalnız resimlerinizi veritabanına atmayın bu ilerde çok büyük kapasitelere ulaşır. resimlerinizi isimlendirerek bu isimleri veritabanına kaydedin
resimler klasörlerde kalsın
Resimlerin gösterilme işine gelince detay tablenizde hangi kayıt üzerinde iseniz ordaki Resim_Detay_Adi alanındaki bilgiye göre image load yaparak resmi göstersin.
Kolay gelsin.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
DBImage -> OLE Nesnesi
Access'te OLE Nesnesi tipinde alanlarda resim değerleri tutulabilir. Bu alanlardan ekleyip DBImage nesnelerini bu alanlara bağlarsanız daha oturaklı bir yapınız olacaktır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
String
O zaman her resim alanı için OLE tipli değil String tipli alanlar kullanın ve o alana Resimin dosya adını yazarak organize etmeye çalışın.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Ben zaten şu anda resimleri dışarıda bir klasörde tutabiliyorum. esas sormak istediğim daha önceden OLE Nesnesine kaydettiğim 700 kadar resim var bunlarıda yeni sistemle birleştermek yani dışarıda klasör ortamında tutmak istiyorum. Onun için bu daha önceden OLE nesnesine kayıtlı 700 kadar resmi çıkartabilirmiyiz.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Cevap
Soru yanlış anlaşılınca cevap uymadı.
Aşağıda basit bir örnek hazırladım incele.
Öncelikle DBImage1 nesnesini bu OLE alanına ayarlaman gerekiyor. Örnekte Resim alanı bu OLE alanın isimi olarak kullanıldı. ResimYolu ise onun yerine kullanılacak String alanı olarak kullanıldı.
Artık Resim alanını kaldırabilirsin onun yerine ResimYolu isimli alanı kullanabilirsin.

Öncelikle DBImage1 nesnesini bu OLE alanına ayarlaman gerekiyor. Örnekte Resim alanı bu OLE alanın isimi olarak kullanıldı. ResimYolu ise onun yerine kullanılacak String alanı olarak kullanıldı.
Kod: Tümünü seç
var i:Integer; Yol:String;
begin
ADOTable1.First; i:=0;
while not ADOTable1.Eof do begin
Inc(i);
Yol:=Format('c:\Resimler\Resim%d.bmp',[i]);
if not ADOTableResim.isNull then begin//<-resim varsa
DBImage1.Picture.SaveToFile(Yol);//<-kaydet
ADOTable1.Edit;
ADOTable1ResimYolu.AsString:=Yol;//<-resimin string değeri
ADOTable1.Post;
end;
ADOTable1.Next;
end;
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .