|
Чтение поля Image из SQL таблицы | ☑ | ||
---|---|---|---|---|
0
Rustik666
15.01.13
✎
12:28
|
Нужно прочитать из SQL таблицы поле типа image и показать картинку....
делаю по примеру вот этого v8: Как из 8.0 напрямую работать с некоей базой SQL? Процедура КнопкаВыполнитьНажатие(Кнопка) Stream = Новый COMОбъект("ADODB.Stream"); Stream.Open(); НомерФото = 0; Команда = "select Photo from psa_photo Where GUID = '" + ПСА.Ссылка.УникальныйИдентификатор() + "' and nPhoto = "+НомерФото; RecordSet = Новый COMОбъект("ADODB.RecordSet"); RecordSet.Open(Команда,СКЛСоединение); RecordSet.MoveFirst(); Stream.Write(RecordSet.Fields("Photo").Value); Stream.SaveToFile("C:\1\1.jpg"); Stream.Close(); КонецПроцедуры ошибка на Stream.Write Произошла исключительная ситуация (ADODB.Stream): Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом. |
|||
1
Rustik666
15.01.13
✎
12:30
|
причем интересно что поле
RecordSet.Fields("Photo").Value имеет тип ComSafeArray и видно его только сразу на точке останова...если начинаешь что-то еще смотреть, то оно сразу же становиться Null.... |
|||
2
Дык ё
15.01.13
✎
12:56
|
забыл
stream.type = 1; // binary |
|||
3
Rustik666
15.01.13
✎
22:07
|
бдин.....че то я намудрил.....нафига тип Image......мучится с ним......Base64Строка() и записал в SQL в поле типа XML.....обычным селектом вытащил и Base64Значение получил фотку....
|
|||
4
oleg_km
15.01.13
✎
22:20
|
(3) Объем наверное будет раз может в 10 больше, особенно если картинка jpg или png. А так наверное самое изящное решение
|
|||
5
Rustik666
16.01.13
✎
06:17
|
(4) точно....
тогда если вернуться к image не могу понять тогда как писать....у меня есть фотка из хмл, я ее перевожу в двоичные данные с помощью Base64Значение() ..... пишу в SQL обычным инсертом.... смотрю таблицу.....там какие-то другие данные.....может писать тоже надо как-то особенно в image.... |
|||
6
Mikeware
16.01.13
✎
07:36
|
UPDATETEXT
Updates an existing text, ntext, or image field. Use UPDATETEXT to change only a portion of a text, ntext, or image column in place. Use WRITETEXT to update and replace an entire text, ntext, or image field. |
|||
7
cw014
16.01.13
✎
07:43
|
Типа "Картинка" в базе данных 1С у 1С нет (вот как сказал то). Есть двоичные данные. В поле binary вначале идут (не помню сколько байт) идентификатор двоичных данных (там всякие BOM символы, UUIDы и т.д.), потом уже картинка. Так что нужно обрезать через SUBSTRING (да, так можно). И еще, если запись в БД была произведена со сжатием, отличным от 0 - картинку из БД не получишь - будет мусор, который надо будет распаковать (как - не знаю)
|
|||
8
Rustik666
16.01.13
✎
10:28
|
(7) ну да конечно, я имею ввиду двоичные данные....
просто смотрю в отладчике - вижу одни данные.....пишу инсертом в sql и смотрю там.....другое... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |