Загрузка изображения из 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