Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Storing Image to SQL VarBinary Problem
Message
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Versions des environnements
Visual FoxPro:
VFP 9 SP1
OS:
Windows XP SP2
Network:
Windows 2003 Server
Database:
MS SQL Server
Divers
Thread ID:
01242501
Message ID:
01518450
Vues:
53
>>>And then how exactly you're showing this field and updating? We're retrieving the data with SQL Pass Through, but by setting several properties we're manipulating with the record as as in a remote view.
>>>
>>>Thanks in advance.
>>
>>It depends what is stored there.
>>If it is picture you could use PictureVal property of the Image control.
>>If it is some other type of file first you could save it as physical file on disk and then use it somehow (automation, shellexecute...)
>
>The picture is stored there. Can you basically fill me up on the whole process?
>
>Thanks in advance.
SQLSETPROP(0,"DispLogin", 2)
m1 = SQLSTRINGCONNECT("Driver={SQL Server Native Client 10.0};Server=(local)")
IF m1 < 0
   AERROR(laError)
   MessageBox(laError[1,2])
   RETURN
ENDIF

TEXT TO lcSQL NOSHOW
    IF NOT EXISTS(SELECT * FROM sys.databases WHERE Name = 'TestBlob')
       CREATE DATABASE TestBlob
ENDTEXT
IF sqlexec(m1,lcSql) < 0
   AERROR(laError)
   MessageBox(laError[1,2])
   RETURN
ENDIF

TEXT TO lcSQL NOSHOW
    IF NOT EXISTS(SELECT * FROM TestBlob.Information_Schema.Tables WHERE Table_Name = 'TestMe ')
       BEGIN
          USE TestBlob
          CREATE TABLE dbo.TestMe  (Mytest varbinary(max))
      END
     ELSE
       TRUNCATE TABLE TestBlob.dbo.TestMe
ENDTEXT
IF sqlexec(m1,lcSql) < 0
   AERROR(laError)
   MessageBox(laError[1,2])
   RETURN
ENDIF


cMyImage = GETFILE()
IF NOT EMPTY(cMyImage)
   CREATE CURSOR crsTest (Fld1 BLOB)
   INSERT INTO crsTest VALUES (FILETOSTR(cMyImage))
   TEXT TO lcSQL NOSHOW PRETEXT 15 TEXTMERGE
       INSERT INTO TestBlob.dbo.TestMe (Mytest)
                       VALUES (?crsTest.Fld1)
   ENDTEXT
   IF sqlexec(m1,lcSql) < 0
      AERROR(laError)
      MessageBox(laError[1,2])
     RETURN
   ENDIF
ENDIF

TRY
  _screen.RemoveObject("MyImage")
CATCH
ENDTRY


**** I don't know why it didn't work with Native Cleint 10, but I'm almost sure that it worked with Native Client
**** I can't test it right know.
SQLDISCONNECT(0)
SQLSETPROP(0,"DispLogin", 2)
m1 = SQLSTRINGCONNECT("Driver={SQL Server};Server=(local)")
IF m1 < 0
   AERROR(laError)
   MessageBox(laError[1,2])
   RETURN
ENDIF


CLOSE DATABASES ALL
SET VARCHARMAPPING ON 
CURSORSETPROP("MapBinary", .t., 0)
TEXT TO lcSQL NOSHOW PRETEXT 15 TEXTMERGE
     SELECT * FROM TestBlob.dbo.TestMe
ENDTEXT
IF sqlexec(m1,lcSql,[aaa]) < 0
   AERROR(laError)
   MessageBox(laError[1,2])
ENDIF
CURSORSETPROP("MapBinary", .f., 0)
_screen.AddObject("MyImage","Image")
WITH _screen.MyImage AS Image 
     .Height     = 400
     .Width      = 400
     .Top        = 0
     .Left       = 0
     .Stretch    = 1 
     .PictureVal = Mytest
     .Visible    = .t.
ENDWITH
Against Stupidity the Gods themselves Contend in Vain - Johann Christoph Friedrich von Schiller
The only thing normal about database guys is their tables.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform