Fred
Tue Mar 29 19:15:46 CST 2005
Where we were bitten was BMPs stored in a general field. When we moved from
W98 to W2K, nothing worked in printing the reports, or accessing the BMP
files. It's just not worth the headache. We also encountered the same
problem with JPG files in a General field, so that was the end of our usage
of them.
--
Fred
Microsoft Visual FoxPro MVP
"TonySper" <tsperduti@bellsouth.net> wrote in message
news:_1m2e.366$f%4.343@bignews1.bellsouth.net...
> Fred,
> You have me confused and interested in learning. What do you mean by
> "different applications that handles JPGs from the rest"? Can you
> expand on what may bite me in the future?
> TonySper
>
> "Fred Taylor" <ftaylor@mvps.org!REMOVE> wrote in message
> news:%23$NK1y$MFHA.2704@TK2MSFTNGP15.phx.gbl...
> And it won't work the very first time one of your users has a
> different
> application that handles JPGs from the rest.
>
> --
> Fred
> Microsoft Visual FoxPro MVP
>
>
> "TonySper" <tsperduti@bellsouth.net> wrote in message
> news:_DW1e.66892$6g7.33528@bignews1.bellsouth.net...
>> Lee,
>> You have to be kidding. I just use
>> append general header from "c:\files\head.jpg"
>> This has worked for me for 6 years with over 700 users.
>> TonySper
>>
>> "Lee Mitchell" <Leemi@online.microsoft.com> wrote in message
>> news:Z7kLdb6MFHA.2504@TK2MSFTNGXA03.phx.gbl...
>> Hi Bill:
>>
>> Try this code and see if it works.
>>
>> FoxPro is at the mercy of external applications for the display of
>> items
>> embedded in general fields. This would be true no matter what type
>> of
>> file
>> it is (Excel Worksheet, bitmap, jpg, etc). Going forward, your app
>> needs to
>> have a more encapsulated way of dealing with this. Following is just
>> such a
>> method.
>>
>> REPORT
>> ---------------
>> By using the MEMO BINARY field type and a UDF(), we can store .JPG
>> files in
>> a table field yet when the report runs have them read from DISK.
>> Here's how:
>>
>> (1) Create a table or cursor with a structure like this (plus any
>> added
>> fields as necessary)
>>
>> FileName C (150)
>> MemBin MEMO(BINARY)
>>
>> The command would be CREATE TABLE GENDBF (FileName c(150), MemoBin M
>> NOCPTRANS)
>>
>> (2) Append .JPGs file into the MEMO(Binary) field using FILETOSTR()
>> and set
>> the filename field accordingly. For instance:
>>
>> INSERT INTO CURSORNAME VALUES("ToothBrush.JPG",
>> FILETOSTR(<PathToFile>))
>>
>> (3) The FoxPro report will still need an OLEBOUND control on it to
>> print
>> pictures, but instead of pointing the OLEBOUND to a general field,
>> point it
>> FILE and use this as the expression:
>>
>> MYUDF(FileName, MemoBin)
>>
>> Where MyUDF is in some program made available via SET PROC and reads
>> thusly:
>>
>> PROCEDURE MYUDF(lpFileName, lpMemoBinFld)
>> LOCAL lcTemp as String
>> lcTemp = ADDBS(SYS(2023)) + "JPGTEMP\"
>> IF !DIRECTORY(lcTemp)
>> MD (lcTemp)
>> ENDIF
>> SET SAFETY OFF
>> STRTOFILE(lpMemoBinFld, lcTemp + lpFileName)
>> SET SAFETY ON
>> RETURN lcTemp + lpFileName
>>
>> (4) Finally, preview/print the report. You may also want to fire
>> some
>> lines
>> like this to clean up afterward:
>>
>> ERASE ADDBS(SYS(2023)) + "JPGTEMP\*.jpg"
>> RD ADDBS(SYS(2023)) + "JPGTEMP"
>>
>> The .PRG uses the code above and the .JPGs that come with W2K, so it
>> should
>> run on that OS with no problem.
>>
>> -----------------------------------------------------------------------
>>
>> FORM
>> ----------
>> Let's assume we have the table created earlier:
>>
>> FileName C (150)
>> MemBin MEMO(BINARY)
>>
>> This form will display images from it:
>>
>> PUBLIC oform1
>>
>> oform1=NEWOBJECT("form1")
>> oform1.Show
>> RETURN
>>
>>
>> **************************************************
>> DEFINE CLASS form1 AS form
>> Top = 71
>> Left = 48
>> Height = 310
>> Width = 504
>> Caption = "Fox Image Demo"
>> Name = "Form1"
>>
>> ADD OBJECT image1 AS image WITH ;
>> Height = 296, ;
>> Left = 3, ;
>> Top = 8, ;
>> Width = 381, ;
>> Name = "Image1"
>>
>> ADD OBJECT cmdPrevious AS commandbutton WITH ;
>> Top = 27, ;
>> Left = 422, ;
>> Height = 27, ;
>> Width = 24, ;
>> Caption = "<", ;
>> Name = "cmdPrevious"
>>
>> ADD OBJECT cmdNext AS commandbutton WITH ;
>> Top = 27, ;
>> Left = 446, ;
>> Height = 27, ;
>> Width = 24, ;
>> Caption = ">", ;
>> Name = "cmdNext"
>>
>> ADD OBJECT cmdQuit AS commandbutton WITH ;
>> Top = 72, ;
>> Left = 405, ;
>> Height = 27, ;
>> Width = 84, ;
>> Caption = "Quit", ;
>> Name = "cmdQuit"
>>
>> PROCEDURE getimage
>> LPARAMETERS lpFileName, lpMemoBinFld
>>
>> LOCAL lcTemp AS STRING
>> lcTemp = ADDBS(SYS(2023)) + "JPGTEMP\"
>> IF !DIRECTORY(lcTemp)
>> MD (lcTemp)
>> ENDIF
>> SET SAFETY OFF
>> STRTOFILE(lpMemoBinFld, lcTemp + lpFileName)
>> SET SAFETY ON
>> RETURN lcTemp + lpFileName
>> ENDPROC
>>
>> PROCEDURE Destroy
>> USE IN SELECT("PICTURES")
>> ERASE ADDBS(SYS(2023)) + "JPGTEMP\*.jpg"
>> RD ADDBS(SYS(2023)) + "JPGTEMP"
>> ENDPROC
>>
>> PROCEDURE Load
>> CD JUSTPATH(SUBSTR(SYS(16),AT(' ',SYS(16),2)))
>> USE PICTURES
>> ENDPROC
>>
>> PROCEDURE Init
>> THISFORM.Image1.Picture = ;
>> THIS.GetImage(Pictures.FileName, Pictures.MemBin)
>> ENDPROC
>>
>> PROCEDURE cmdPrevious.Click
>> IF RECNO() <> 1
>> SKIP -1
>> THISFORM.Image1.Picture = ;
>> THISFORM.GetImage(Pictures.FileName,
>> Pictures.MemBin)
>> THISFORM.REFRESH
>> ENDIF
>> ENDPROC
>>
>> PROCEDURE cmdNext.Click
>> IF RECCOUNT() <> RECNO() AND !EOF()
>> SKIP
>> THISFORM.Image1.Picture = ;
>> THISFORM.GetImage(Pictures.FileName, Pictures.MemBin)
>> THISFORM.REFRESH
>> ENDIF
>> ENDPROC
>>
>> PROCEDURE cmdQuit.Click
>> THISFORM.RELEASE
>> ENDPROC
>> ENDDEFINE
>> **************************************************
>>
>> I hope this helps.
>>
>> This posting is provided "AS IS" with no warranties, and confers no
>> rights.
>>
>> Sincerely,
>> Microsoft FoxPro Technical Support
>> Lee Mitchell
>>
>> *-- VFP9 HAS ARRIVED!! --*
>> Read about all the new features of VFP9 here:
>>
http://msdn.microsoft.com/vfoxpro/
>>
>> *--Purchase VFP 9.0 here:
>>
http://www.microsoft.com/PRODUCTS/info/product.aspx?view=22&pcid=54787e64-52
>> 69-4500-8bf2-3f06689f4ab3&type=ovr
>>
>> Keep an eye on the product lifecycle for Visual FoxPro here:
>>
http://support.microsoft.com/default.aspx?id=fh;[ln];lifeprodv
>> - VFP5 Mainstream Support retired June 30th, 2003
>> - VFP6 Mainstream Support retired Sept. 30th, 2003
>>
>>> I'm trying to put jpg files into a .dbf of garden plants.
>>>
>>> When I say "append general pic1 from f:\plants\pics\alyssm.jpg"
>>> I get an error "OLE error code 0x.800401f9: Error in the DLL"
>>>
>>> This happens on my WinXP and on my Win2000 machine. When I try it
>>> on
>>> a
>> Win98
>>> machine, it works.
>>> On my XP machine, I've set the default association with .jpg to
>>> MS-Paint.
>>>
>>> Any helpful comments?
>>>
>>> I'm using VFP 6.0, and also tried it with the free 9.0 beta. Same
>>> error.
>>>
>>> Also, on the Win98 machine, I've gone to the next step of actually
>>> attempting to print the little picture of the flowers on a report.
>>> I put my OLE field in the report, and click "preview", and all I
>>> get
>>> is a
>>> box where the photo is supposed to be, with the text ".jpg" in the
>>> middle.
>>>
>>> I take that same OLE report field, and point it to
>>> f:\plants\pics\alyssm.jpg, and the picture prints properly
>>>
>>> I've read about this in the programmer's reference, but there's not
>>> much
>> on
>>> what to do when it doesn't work. My XP machine is so "service
>>> packed" and
>>> "anti virus'd" and "anti-spyware'd" and "firewalled" it's amazing
>>> it
>>> runs
>> at
>>> all.
>>>
>>> Thanks,
>>> Bill Freeburg
>>
>>
>>
>
>
>