Прошу помощи, нужно перебросить текстовое поле в поле BLOB+
Clarion, Clarion 7
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Прошу помощи, нужно перебросить текстовое поле в поле BLOB+
Перекачиваю таблицу из бтрива в ms sql, в sql в поле типа blob необходимо записать значение текстового поля из талицы бтрива...Насколько понял из хелпа, без проблем идет передача полей blob в друг друга и закачка файлов.А вот как быть с обычным STRINGом? Мучаю код конветора на 7-й версии Клариона,если что.
alex881
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 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
RaFaeL
Прошу помощи, нужно перебросить текстовое поле в поле 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
Вона как, если размер блоба растёт, то надо... век живи, век учись...
Yufil
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 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, содержащего предыдущие данные, чтобы очистить от «отходов» оставшихся от предыдущих данных.
RaFaeL
Прошу помощи, нужно перебросить текстовое поле в поле 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)).
alex881
Прошу помощи, нужно перебросить текстовое поле в поле BLOB+
Возможно, надо добавить реквизит Binary в описание поля... Было такое (правда, очень давно)
Yufil
Прошу помощи, нужно перебросить текстовое поле в поле BLOB+
И я бы всё-таки проставил длину перед записью в Blob, драйвер MS SQL сильно на меня обижался.
Yufil
Прошу помощи, нужно перебросить текстовое поле в поле BLOB+
Вот! СПАСИБО ОГРОМНОЕ!!! реквизит Binary пофиксил проблему!
alex881
Вернуться в «CLARION for Windows»
Перейти
- CW
- ↳ CLARION for Windows
- ↳ CLARION for Internet
- ↳ Clarion.NET
- Эксклюзив
- ↳ Приват
- CLARION и...
- ↳ Reports
- ↳ Железо
- ↳ Готовые программы, шаблоны, библиотеки...
- ↳ cJSON
- ↳ LibCurl
- ↳ MAV
- ↳ SQL, Oracle, ...
- ↳ Multi-программирование(Pascal/Delphi, и т.д.)
- ↳ WinDev
- DOS
- ↳ CLARION for DOS
- Разное
- ↳ Новости
- ↳ English
- ↳ Ресурсы
- ↳ Работа
- ↳ Обо всем ...
- ↳ Обсуждение этого Форума (типа, Гостевая книга)