vt ye birden çok resim kaydetme ve gösterme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ykarlidag
Üye
Mesajlar: 11
Kayıt: 24 Eki 2005 09:18

vt ye birden çok resim kaydetme ve gösterme

Mesaj gönderen ykarlidag »

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.
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

bunu için master detay dosya yapısı kullanın ve resimleri detay tabloya kaydedin
ykarlidag
Üye
Mesajlar: 11
Kayıt: 24 Eki 2005 09:18

Mesaj gönderen ykarlidag »

biraz daha ayrıtıya inebilirmisiniz?
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

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.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

DBImage -> OLE Nesnesi

Mesaj gönderen sabanakman »

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. - .
ykarlidag
Üye
Mesajlar: 11
Kayıt: 24 Eki 2005 09:18

Mesaj gönderen ykarlidag »

zeten DBimage ile OLE Nesnesine kayıt yapıtıryordum. ama şimdi bir den fazla resim ekeyeceğim ve vt nin şişmemesi için dışarıda farklı bir klasörde toplamak istiyorum. daha önce OLE Nesnesine kaydedilen resimleri alarak klasörde toplayabilirmiyiz. mümkünse nasıl.
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

slm
Yukardaki mesajımı iyice tetkik edin, cevabınızı orda bulacaksınız
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

String

Mesaj gönderen sabanakman »

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. - .
ykarlidag
Üye
Mesajlar: 11
Kayıt: 24 Eki 2005 09:18

Mesaj gönderen ykarlidag »

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.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Cevap

Mesaj gönderen sabanakman »

Soru yanlış anlaşılınca cevap uymadı. :D 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ı.

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;
Artık Resim alanını kaldırabilirsin onun yerine ResimYolu isimli alanı kullanabilirsin.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
ykarlidag
Üye
Mesajlar: 11
Kayıt: 24 Eki 2005 09:18

Mesaj gönderen ykarlidag »

Arkadaşlar ilginize teşekkür ederim. tamamdır.
Cevapla