![]() |
![]() |
![]() |
|
Как через ADODB работать с полями типа image на MS-SQL ? | ☑ | ||
---|---|---|---|---|
0
alex4x
21.02.06
✎
16:27
|
Бьюсь над простой задачей - закачать картинку из 1С-8.0 через ADODB на SQL сервер и получить ее потом оттуда.
Картинка= ЭлементыФормы["Рисунок1"].Картинка; ДвоичныеДанные=Картинка.ПолучитьДвоичныеДанные(); Не помогают, в параметре запроса при попытке insert-a эти данные не прокатывают. Пытался сделать по аналогии с http://www.rsdn.ru/Forum/Info.aspx?name=FAQ.db.mssql.blobs Но тоже ничего не получается. |
|||
1
АперБот
21.02.06
✎
18:13
|
Не сердитесь на меня, за то, что я поднимаю ветки, я всего лишь бот. Все претензии к моему автору - Волшебнику. Мои сообщения - это его сообщения.
|
|||
2
alex4x
22.02.06
✎
12:30
|
up
|
|||
3
Парижская фанера
22.02.06
✎
12:31
|
Это не бот а Павлик Морозов - стучит на папашу...
|
|||
4
vde69
22.02.06
✎
12:37
|
извиняюсь но код 7.7 (кроме того поле должно быть последним в базе)
Функция ПолучитьФайл(Connection, Идентификатор, Файл) Command = СоздатьОбъект("ADODB.Command"); Command.ActiveConnection=Connection; Command.CommandType=1; Command.CommandText="select ID_, FileName_, ID_source_, FileData_ from s_file_ where ID_ = '"+Идентификатор+"' AND FileName_='"+Файл+"'"; Try Set=Command.Execute(); Except Предупреждение(ОписаниеОшибки()); Возврат -1; EndTry; Если Set.EOF()<>-1 Тогда Возврат Строка(Set.Fields("FileData_").Value); КонецЕсли; Возврат -1; КонецФункции Функция ЗаписатьФайл(Connection, Идентификатор, Файл, Данные, Источник) сп = ПолучитьСписокФайлов(Connection, Идентификатор); Если сп = -1 тогда возврат -1; КонецЕсли; сп1=СоздатьОбъект("СписокЗначений"); ф=СоздатьОбъект("Справочник.Контрагенты"); ИмяФайла2=""; Пока (сп.РазмерСписка()>0) Цикл сп1.ИзСтрокиСРазделителями(сп.ПолучитьЗначение(1)); Идентификатор =СокрЛП(Строка(сп1.ПолучитьЗначение(1))); ИмяФайла =СокрЛП(Строка(сп1.ПолучитьЗначение(2))); ИдентификаторИсточника =СокрЛП(Строка(сп1.ПолучитьЗначение(3))); Если (СокрЛП(ИмяФайла)=СокрЛП(Файл))и(СокрЛП(ИдентификаторИсточника)=СокрЛП(Источник)) тогда ИмяФайла2=Строка(сп.ПолучитьЗначение(1)); КонецЕсли; сп.УдалитьЗначение(1); КонецЦикла; rsWrite = СоздатьОбъект("ADODB.RecordSet"); rsWrite.ActiveConnection=Connection; rsWrite.CursorType = 1; rsWrite.LockType = 3; РазмерПередачи = 10000; КоличествоПакетов=Цел(СтрДлина(Данные) / Число(РазмерПередачи))+1; Если КоличествоПакетов > 20 тогда Коэфф=КоличествоПакетов/20; Иначе Коэфф=1; КонецЕсли; ТекущийПакет=0; Try Command = СоздатьОбъект("ADODB.Command"); Command.ActiveConnection = Connection; Command.CommandType=1; Connection.BeginTrans(); Если ИмяФайла2="" тогда Command.CommandText="INSERT INTO s_file_ (ID_, FileName_, ID_source_, FileData_) VALUES ( | '" + Идентификатор + "', | '" + Файл + "', | '" + Источник + "', | '') "; Command.Execute(); КонецЕсли; rsWrite.Open("SELECT * from s_file_ where ID_='"+Идентификатор+"' AND FileName_='"+Файл+"' AND ID_source_='"+ Источник+"'"); rsWrite.fields("ID_").Value=Идентификатор; rsWrite.fields("FileName_").Value=Файл; rsWrite.fields("ID_source_").Value=Источник; Пока СтрДлина(Данные)>0 Цикл ТекущийПакет=ТекущийПакет+1; ДампДанных=Лев(Данные,РазмерПередачи); Данные=Прав(Данные, СтрДлина(Данные)-РазмерПередачи); rsWrite.fields("FileData_").AppendChunk(ДампДанных); Состояние("Идет передача файла " + ГлИндикатор(ТекущийПакет,КоличествоПакетов)); КонецЦикла; Состояние("Идет завершение передачи файла "); rsWrite.Update(); rsWrite.Close(); Connection.CommitTrans(); Except Connection.RollbackTrans(); Предупреждение(ОписаниеОшибки()); Возврат -1; EndTry; Возврат 1; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |