|
Запись данных типа BLOB в SQL Server через 1С | ☑ | ||
---|---|---|---|---|
0
ZanderZ
25.09.07
✎
04:46
|
Есть база где должны храняться сканеные договора и проч. информация в виде типа BLOB(adlongvarbinary) на SQL Server.
Запись идет через хранимую процедуру типа CREATE PROCEDURE AddBlob @Blob image as begin insert Table1 (Scan1) values (@Blob) end GO Как из 1С записать Объект в это поле через ADO ??? делаю Command = СоздатьОбъект("ADODB.Command"); Command.ActiveConnection = Connection; Command.CommandText = "AddBlob"; Command.CommandType = 4; Parameter = Command.CreateParameter("@Blob",205,1,РазмерФайла,Картинка); Command.Parameters.Append(Parameter); Command.Execute(); где РазмерФайла - размер загружаемой картинки , а кртинка - сама картинка |
|||
1
ТелепатБот
гуру
25.09.07
✎
04:46
|
||||
2
Shreder
25.09.07
✎
09:06
|
а обязательно через ADO надо?
|
|||
3
ZanderZ
25.09.07
✎
09:09
|
(2) нет ... просто желательно без ВК
|
|||
4
774816
25.09.07
✎
10:14
|
так но 1с ка не поддерживает тип перемнных binary
cmd=СоздатьОбъект("ADODB.Command"); con=СоздатьОбъект("ADODB.Connection"); par=СоздатьОбъект("ADODB.Parameter"); im=СоздатьОбъект("ADODB.Stream"); im.Type = 1; im.Open() ; con.Open("Driver={SQL Server};Server=Server;Database=BaseBase;Uid=sa;Pwd=;"); im.LoadFromFile("c:\im.gif"); cmd.ActiveConnection = con; cmd.CommandType = 4; cmd.CommandText = "AddBlob"; par = cmd.CreateParameter("@Blob",205, 1, im.Size, im.Read); cmd.Parameters.Append(par); cmd.Execute(); |
|||
5
ZanderZ
25.09.07
✎
10:16
|
(4) и так пробовал никак... может есть еще варианты как нить обойти?
|
|||
6
ZanderZ
25.09.07
✎
11:06
|
подниму разок... может кто че подскажет...
|
|||
7
774816
25.09.07
✎
12:21
|
ну если уж так сильно надо то через скрипт
path = "c:\im.gif" ; con = "Driver={SQL Server};Server=Server;Database=BaseBase;Uid=sa;Pwd=;"; cod = "Sub LoadImage() " + РазделительСтрок + "Set cmd = CreateObject(""ADODB.Command"") " + РазделительСтрок + "Set con = CreateObject(""ADODB.Connection"") " + РазделительСтрок + "Set par = CreateObject(""ADODB.Parameter"") " + РазделительСтрок + "Set im = CreateObject(""ADODB.Stream"") "+ РазделительСтрок + "im.Type = 1 " + РазделительСтрок + "im.Open " + РазделительСтрок + "con.Open (" + Симв(34) + con + Симв(34) + ")" + РазделительСтрок + "im.LoadFromFile " + Симв(34) + path + Симв(34) + РазделительСтрок + "cmd.ActiveConnection = con " + РазделительСтрок + "cmd.CommandType = 4 " + РазделительСтрок + "cmd.CommandText = ""AddBlob""" + РазделительСтрок + "Set par = cmd.CreateParameter(""@Blob"", 128, 1, im.Size, im.Read) " + РазделительСтрок + " cmd.Parameters.Append (par) " + РазделительСтрок + "cmd.Execute" + РазделительСтрок + "end sub" ; scr = СоздатьОбъект("MSScriptControl.ScriptControl"); scr.Language = "vbscript"; scr.AddCode (cod); scr.Run("LoadImage"); |
|||
8
ZanderZ
25.09.07
✎
12:38
|
(7) спасибо !
но он у меня щас и так на скрипте висит я просто думал как - то из самой 1С можно |
|||
9
774816
25.09.07
✎
12:45
|
PS
тип перменной ставь 205 а не 128 размер по больше cmd.CreateParameter(""@Blob"", 128, 1, im.Size, im.Read) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |