Прошу помощи, нужно перебросить текстовое поле в поле BLOB+
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Прошу помощи, нужно перебросить текстовое поле в поле BLOB+
Перекачиваю таблицу из бтрива в ms sql, в sql в поле типа blob необходимо записать значение текстового поля из талицы бтрива...Насколько понял из хелпа, без проблем идет передача полей blob в друг друга и закачка файлов.А вот как быть с обычным STRINGом? Мучаю код конветора на 7-й версии Клариона,если что.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1411
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
Прошу помощи, нужно перебросить текстовое поле в поле BLOB+
Код: Выделить всё
FIL:Blob{prop:size} = 0
l# = len(LOC:Str)
if l#
FIL:Blob[0 : (l#-1)] = LOC:Str
end
Прошу помощи, нужно перебросить текстовое поле в поле BLOB+
Хмм. А я всегда считал, что в Blob{Prop:Size} надо записать длину строки
Вона как, если размер блоба растёт, то надо... век живи, век учись...
В мануале есть фраза: Before assigning additional data that will increase the amount of data in the BLOB (using the string slicing technique), you must reset its size using PROP:Size.RaFaeL писал(а):Код: Выделить всё
l# = len(LOC:Str) if l# FIL:Blob{Prop:Size} = l# FIL:Blob[0 : (l#-1)] = LOC:Str end
Вона как, если размер блоба растёт, то надо... век живи, век учись...
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1411
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
Прошу помощи, нужно перебросить текстовое поле в поле BLOB+
Поле BLOB нельзя обрабатывать «целиком»; нужно использовать либо синтаксис «части строки» для доступа к данным, либо свойство PROP:ImageBLOB. Отдельные байты данных в BLOB нумеруются начиная с нуля (0), а не с единицы (1).
Для текущей прочитанной в память записи длину поля BLOB можно получить с помощью функции SIZE. Кроме того, можно получить (и установить) размер BLOB-поля с помощью свойства PROP:BlobSize. Вы можете установить размер BLOB перед присвоением данных в новое поле BLOB, но в этом нет необходимости, так как размер автоматически устанавливается операцией «части строки». Вы можете также использовать PROP:ImageBLOB для хранения и извлечения графической информации без начальной установки PROP:Size. Хорошей идеей является установка PROP:Size в нулевое значение перед присваиванием данных в BLOB, содержащего предыдущие данные, чтобы очистить от «отходов» оставшихся от предыдущих данных.
Для текущей прочитанной в память записи длину поля BLOB можно получить с помощью функции SIZE. Кроме того, можно получить (и установить) размер BLOB-поля с помощью свойства PROP:BlobSize. Вы можете установить размер BLOB перед присвоением данных в новое поле BLOB, но в этом нет необходимости, так как размер автоматически устанавливается операцией «части строки». Вы можете также использовать PROP:ImageBLOB для хранения и извлечения графической информации без начальной установки PROP:Size. Хорошей идеей является установка PROP:Size в нулевое значение перед присваиванием данных в BLOB, содержащего предыдущие данные, чтобы очистить от «отходов» оставшихся от предыдущих данных.
Прошу помощи, нужно перебросить текстовое поле в поле BLOB+
Спасибо, я делал все наоборот
FIL:Blob = LOC:Str[0 : (l#-1)]
Теперь возникли следующие грабли - когда в присваиваемом тексте попадаются символы кириллицы - append не проходит,
наверное надо строку в юникод перегонять? Или в в чем то другом может быть проблема?
У меня присвоение вот так выглядит
LENV# = LEN(CLIP(LEFT(XTN:Value)))
ObjExtInfo_SQL.Value{PROP:Size} = 0
IF LENV# THEN OBJ:Value[0 : (LENV#-1)] = CLIP(LEFT(XTN:Value)).

Теперь возникли следующие грабли - когда в присваиваемом тексте попадаются символы кириллицы - append не проходит,
наверное надо строку в юникод перегонять? Или в в чем то другом может быть проблема?
У меня присвоение вот так выглядит
LENV# = LEN(CLIP(LEFT(XTN:Value)))
ObjExtInfo_SQL.Value{PROP:Size} = 0
IF LENV# THEN OBJ:Value[0 : (LENV#-1)] = CLIP(LEFT(XTN:Value)).
Прошу помощи, нужно перебросить текстовое поле в поле BLOB+
Возможно, надо добавить реквизит Binary в описание поля... Было такое (правда, очень давно)
Прошу помощи, нужно перебросить текстовое поле в поле BLOB+
И я бы всё-таки проставил длину перед записью в Blob, драйвер MS SQL сильно на меня обижался.
Прошу помощи, нужно перебросить текстовое поле в поле BLOB+
Вот! СПАСИБО ОГРОМНОЕ!!! реквизит Binary пофиксил проблему!