1

Konu: getpicture

m.resim=getpicture()
replace resyol with m.resim

komutuyla aldığım resimleri datada saklıyorum.;

proğram sorunsuz çalışıyor görünüyordu taki programın bulunduğu dizin adresi değişine kadar.
Dizin adresi değişince proğram resimleri doğal olarak bulamıyor.

resim dosyaları "resimler" dizininin altında
resyol fieldindeki data "C:\Users\a\Desktop\Hastakayit\resimler\+ûZLEM BO+ŞNAKO¦ŞLU1.jpg" şeklinde
şimdiki yolsa "D:\Users\a\Desktop\Hastakayit\resimler\+ûZLEM BO+ŞNAKO¦ŞLU1.jpg" şeklinde

proğramı bu şekilde dizin değişimlerinden etkilenmeyecek hale nasıl getirebilirim


Herkese teşekkürler

2

Re: getpicture

MS SQL server kullanma şansın var mı? Yok diyeceksin korkarım:) Varsa cevap basit, resimleri varbinary(max) alanda sakla. 1 Mb üzerinde iseler FILESTREAM olarak sakla. Bırak saklandığı yeri SQL server düşünsün (1 Mb MS'un önerisi).

O zaman yazdığın yola bakınca sanki kullanıcının Desktop'ı gibi. Eğer öyleyse onun yolu her zaman alınabiliyor. SOnuna HastaKayıt\... ekle.

3

Re: getpicture

Avrasya;
Resimlerini kaydediyorken sadece "Resim dosyasının adını" kaydetmeni öneririm. "UgurYilmaz.JPG" gibi. Bu resme ait PATH bilgisi; kullanıcı / PC ye göre değişken yolabilir: "ResimPath" gibi. Şöyle düşün :

Visual Fox Pro
LOCAL lcUserPicturePath, lcPicture, lcPictureFile

 
m.lcUserPicturePath = "D:\PictureData\" && Kullanıcı tablosundan oku.
m.lcPicture = "
UserPicture.JPG" && Kullanmak istediği resim.
 
m.lcPictureFile = ADDBS(m.lcUserPicturePath) + m.lcPicture
 
? m.lcPictureFile
Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

4

Re: getpicture

Ugur'a ek olarak

Visual Fox Pro
LOCAL lcUserPicturePath, lcPicture, lcPictureFile

m.lcUserPicturePath = "D:\PictureData\"  && Kullanıcı tablosundan oku.
 
m.lcPicture = justfname(getpict()) && "
UserPicture.JPG" && Kullanmak istediği resim.
 
replace resyol with m.lcPicture
 
m.lcPictureFile = ADDBS(m.lcUserPicturePath) + m.lcPicture
 
? m.lcPictureFile
http://www.soykansoft.com/images/twitter.jpghttp://www.soykansoft.com/images/wp.jpg

5

Re: getpicture

Arkadaşlar hepinize cevaplar için teşekkür ederim. bu kodlar işimi görüyor rahat rahat.

çetin hocam malesef MS SQL server kullanma şansım malesef yok. Proğramı bu saatten sonra uyarlamakda herhalde bayağı zor olacak sanıyorum.

6

Re: getpicture

cetinbasoz yazdı:

MS SQL server kullanma şansın var mı? Yok diyeceksin korkarım:) Varsa cevap basit, resimleri varbinary(max) alanda sakla. 1 Mb üzerinde iseler FILESTREAM olarak sakla. Bırak saklandığı yeri SQL server düşünsün (1 Mb MS'un önerisi).

O zaman yazdığın yola bakınca sanki kullanıcının Desktop'ı gibi. Eğer öyleyse onun yolu her zaman alınabiliyor. SOnuna HastaKayıt\... ekle.


MS sQL ;

1-bende datalar dbf halinde bunları MS sQL'e aktarmak zor mu ?
2-Dataları aktarsakda sonra proğram kodlarında çok değişiklik yapmak gerekiyor mu ?
3-yoksa attığım taş ürküttüğüm kurbağaya değmez mi ?


Cevaplar için şimdiden teşekkürler

7

Re: getpicture

1) DBF'leri MSSQL'e aktarmak zor degil (goreceli kavram, kolay diyecegim ama neye gore kolay:)
2) "Cok", neye gore cok:) Ben buyuk bir uygulamayi gecirdim. Simdi veri tabani yolu ve modu bir yerde tutuluyor. Ayni program veri tabani moduna gore (SQL ya da VFP), belirtilen baglantidaki SQL ya da VFP veri tabanini kullaniyor. Tabii benim boyle resim dertlerim yok. Sadece iki dosyada kisi fotograflari gerekiyor. Birisinde hata ettim disarida 'path' tutuluyor bircok kimsenin onerdigi gibi. Digeri dogrudan VFP BLOB ya da SQL varbinary(max)'ta tutuyor, rahat. Gecirirken, tum insert/delete/update/select kodlari (tabii append, replace gibi karsiliklari da) elden gecip SQL karsiliklarla degisti. Yani "cok":) Simdi ise iyiki yapmisim diyorum "cok cok az":)
3) Valla bende cok degdi. Elimden gelse VFP veri tabani kullanimini sifirlayacagim. Yani VFP, SQL serverla boy olcusecek durumda degil (hos simdi de NoSQL veri tabanlari var daha da iyisi ama onlari da nasil olsa VFP ile kullanamadigimdan dert etmiyorum. SQL server isimi goruyor simdilik).

8

Re: getpicture

Ya sen neden VFP blob'ta (ya da memo nocptrans) tutmuyorsun, MSSQL'e gecmesen bile? Tek dosyada olmasi sart degil. Nasil olsa statik goruntuler olacak degil mi? Oyle edit gerekmezse sorun olmaz. 2 Gb nedeniyle birden fazla dosyada tutabilirsin:

ResimID, Resim

ResimID ait oldugu yerin IDsi. Istersen bir baska dosyada da kisiID, resimID, dosyaADI da olabilir.

Diger bir secenekte sadece bu resim dosyasini MSSQL, SQLite ... ta tutman. Mesela FILESTREAM kullanarak bir SQL express dosyasinda tum resimleri tutabilirsin. Programin resime ihtiyac olan kisminda data MSSQL'den gelip gider, gerisi VFP olur.

9

Re: getpicture

hocam ;
Galiba benim için blob olarak tutma en mantıklısı.
peki bir resim dosyasını bolb içine nasıl atarım ?

10

Re: getpicture

Visual Fox Pro
lcFileName = getpict()

update myTable set myBlobField = FileToStr( m.lcFileName ) where pkID = m.pkID

Not: Bu dosyada sadece id ve photo tut o zaman, baska gereksiz kolonlarla sisirme.

11 Son düzenleyen, avrasya34 (15.04.2012 13:07:00)

Re: getpicture

sağolun hocam iyiki varsınız

12 Son düzenleyen, avrasya34 (15.04.2012 13:08:30)

Re: getpicture

STRTOFILE(vid.resim,"a.jpg")
this.Parent.image1.Picture="a.jpg"

resmi göstermenin daha pratik yolu var mı ? yoksa ben sol elle sağ kulağımı mı gösteriyorum ?

13

Re: getpicture

Eger kullandigin VFP9 SP2 ise PictureVal kullanabilirsin:

Visual Fox Pro
STRTOFILE(vid.resim,"a.jpg") 

this.Parent.image1.Picture="a.jpg"

Yerine:

Visual Fox Pro
this.Parent.image1.PictureVal =vid.resim

Yok elinde benim gibi VFP SP1 var ise (ve yine benim gibi SP2 dusunmuyorsan) bu classi kullanabilirsin:

Visual Fox Pro
**************************************************

*-- Class:        imagecontrol (d:\vfpcommonclasses\imagelib.vcx)
*-- ParentClass:  image
*-- BaseClass:    image
*-- Time Stamp:   07/27/10 08:08:12 PM
*
DEFINE CLASS imagecontrol AS image
 
 
    Height = 17
    Width = 100
    Name = "imagecontrol"
 
 
    PROCEDURE pictureval_assign
        Lparameters vNewVal
        If Val(Os(3)) < 6
            This.PictureVal = m.vNewVal
        Else
            This.Picture = ''
            If Empty(This.Tag)
                This.Tag = Forcepath(Sys(2015)+'.pic',Sys(2023))
            Endif
            Strtofile(m.vNewVal,This.Tag)
            This.Picture = This.Tag
        Endif
    ENDPROC
 
    PROCEDURE Destroy
        this.Picture = ''
        If !Empty(This.Tag)
            try
                Erase (This.Tag)
            endtry
        Endif
    ENDPROC
 
 
ENDDEFINE
*
*-- EndDefine: imagecontrol
**************************************************

Bu kontrolu kullaninca kod gene SP2 kodu gibi olur.

14 Son düzenleyen, avrasya34 (20.04.2012 17:02:54)

Re: getpicture

kod ve yardımların için teşekkürler hocam ;

15

Re: getpicture

Anladım ki bolb içine video,resim,pdf gibi dosyalar alınabiliyor.
bolb içindeki dosyanın türün bolb fieldi içinde saklanıyor mu ? yoksa bunun için ayrı bir field mi kullanmak gerekiyor ?

Amacım bolb icinde sakladığım dosyayı form üzerinde önce küçük bir alanda sonrada üstüne tıklanınca tam ekranda görüntülemek. bunun için dosya türünü bilmem ve default proğramı ona göre çalıştırmam gerekiyor herhalde.

16

Re: getpicture

Evet. O dosyanin icerigini oldugu gibi sakliyor. Dosya tipi bilgisi yok. Header'i inceleyip alabilirsin ama zahmetli olur. Blob aslinda bir memo onun icin icine bir satira tipini, sonrasina dosyayi koysan da olur ama onu da tavsiye etmem. Araya al/ver kismi icin yazdigin koda degmez. En iyisi senin dedigin gibi bir field ekleyip uzantisini yazmak. Bu sekilde ister resim sakla, ister word istersen exe ...:)

17 Son düzenleyen, avrasya34 (20.04.2012 17:40:32)

Re: getpicture

Çok sağolun hocam.

Bu durumda benim herhalde "image" yerine "html viewer" kullanmam daha mantıklı.  en azından "html viewer" hem imaj dosyalarını hemde pdf dosyalarını görüntüleyebiliyor.

gerci html viewer da henüz dosya'nın boyutlarını ayarlamayı beceremedim