Загрузка изображения из ADO источника

Материал из GedeminWiki
Перейти к: навигация, поиск

Изображение (или другой BLOB объект) из внешней базы выгружается во временный файл и затем загружается в БД Гедымина.

  Set objConnection = CreateObject("ADODB.Connection")
  objConnection.ConnectionString = "DSN=MySQL;UID=" & AUser & ";PWD=" & APassword & ";"
  objConnection.Open
 
  Set AdoComm = CreateObject("ADODB.Command")
  AdoComm.ActiveConnection = objConnection
  AdoComm.CommandText = _
    "select  " & _
	"  TableNumber," & _
    "  Photo " & _
    "from dbo.employee_view "
 
  Dim AdoStream
  Set AdoStream = CreateObject("ADODB.Stream")
  AdoStream.Type = 1
 
  Dim FSO
  Set FSO = CreateObject("Scripting.FileSystemObject")
 
  Dim Creator, LoadTransaction, IBSQL
  Set Creator = New TCreator
 
  Dim MStream
  Set MStream = Creator.GetObject(Null, "TMemoryStream", "")
 
  Set LoadTransaction = Creator.GetObject(Null, "TIBTransaction", "LoadTransaction")
  LoadTransaction.DefaultDataBase = gdcBaseManager.Database
  LoadTransaction.StartTransaction
 
  Set IBSQL = Creator.GetObject(Null, "TIBSQL", "IBSQL")
  IBSQL.Transaction = LoadTransaction
  IBSQL.SQL.Text = _
    "UPDATE OR INSERT INTO USR$EMPLOYEE_LOAD " & _
    "  (USR$TABLENUMBER, USR$PHOTO) " & _
    "VALUES " & _
    "  (:TABLENUMBER, :PHOTO) " & _
    "MATCHING (USR$TABLENUMBER) "
 
  Set qTable = AdoComm.Execute
  While not qTable.EOF 
    IBSQL.Close
    IBSQL.ParamByName("TABLENUMBER").AsInteger = qTable.Fields(0).Value
    AdoStream.Open
    AdoStream.Write(qTable.Fields(1).Value)
    If FSO.FileExists("c:/golden/temp.bmp") Then
      Call FSO.DeleteFile("c:/golden/temp.bmp", False)
    End If
    AdoStream.SaveToFile("c:/golden/temp.bmp")
    Call MStream.LoadFromFile("c:/golden/temp.bmp")
    IBSQL.ParamByName("PHOTO").LoadFromStream(MStream)
    IBSQL.ExecQuery
    AdoStream.Close
  Wend

См. также

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты