Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 3

FireBird Delphi BLOB текст не выводится

30.01.2015, 09:01. Показов 1846. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
По затее BLOB должен получать и выдавать текст в TMemo.

Таблица BD:
SQL
1
2
3
4
5
6
7
8
9
CREATE TABLE MES (
       ID_OBJ BIGINT NOT NULL,
       ID_FROM INTEGER NOT NULL,
       ID_TO INTEGER,
       MES_INDEX INTEGER NOT NULL,
       MES_TYPE INTEGER NOT NULL,
       MES_TEXT BLOB SUB_TYPE 1 SEGMENT SIZE 40,
       MES_DATE DATE DEFAULT 'NOW' NOT NULL
);
Пишу в BLOB так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var bs: tstream;
...
  dm.IBTransEdit.Active:=true; //транзакция
  dm.tr_edit_mes.Active:=true; //датасет
  dm.tr_edit_mes.Edit;
  dm.tr_edit_mes.FieldByName('MES_TEXT').Clear;
  bs:=dm.tr_edit_mes.CreateBlobStream(dm.tr_edit_mes.FieldByName('MES_TEXT'),tblobstreammode.bmWrite);
  oneform.mesText.Lines.SaveToStream(bs);
  bs.Free;
  dm.tr_edit_mes.Post;
  dm.IBTransEdit.Commit;
  dm.tr_edit_mes.Active:=false;
  dm.IBTransEdit.Active:=false;
...
Ошибок нет. Что-то туда легло. (bs.size>0)
Читаю так:
Delphi
1
2
3
4
5
6
7
...
  zdl[i].blob:=tstringlist.Create;
  zdl[i].blob.Clear;
  bs := dm.DS_mess.CreateBlobStream(dm.DS_mess.FieldByName('MES_TEXT'),tblobstreammode.bmRead);
  zdl[i].blob.LoadFromStream(bs);
  bs.Free;
...
Итог:
На строке 5 выдает сообщение
Project VIE.exe raised exception class EAccessViolation with message 'Access violation at address 00404871 in module 'VIE.exe'. Write of address 00000008'.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.01.2015, 09:01
Ответы с готовыми решениями:

Неправильный текст сообщений об ошибках (Firebird + Delphi)
Столкнулся с такой проблемой: сообщения об ошибках фаерберд возвращает в таком же виде, как они прописаны в файле firebird.msg,...

Firebird и BLOB-поле
Всем доброго времени суток! Ребята, может кто подскажет в чем подвох. Есть таблица в которой есть BLOB-поле. При добавлении новой записи,...

Работа с BLOB в FireBird
Добрый день! В таблице хранятся записи, которые необходимо вывести в виде дереева в TreeView. В таблице имееются BLOB поля в которых...

3
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
30.01.2015, 17:04
Лучший ответ Сообщение было отмечено winsight как решение

Решение

Через запросы BLOB и пишется и читается без проблем.
К примеру, запрос для чтения
Delphi
1
2
3
4
    IBQuery1.SQL.Text := 'SELECT * FROM TABLE1';
    IBQuery1.Open;
    if not IBQuery1.Eof then
       Memo1.Lines.Text := TBlobField(IBQuery1.FieldByName('SOMEFIELD')).AsString;
Запись запросом INSERT или UPDATE. Можно с использованием параметра:
Delphi
1
IBQuery1.ParamByName('SOMEFIELD').AsBlob := Memo.Lines.Text;
А все эти стримы нужны только для бинарных данных, да и то не всегда.

Добавлено через 12 минут
Поправочка. Для текста так:
Delphi
1
IBQuery1.ParamByName('SOMEFIELD').Value := Memo.Lines.Text;
1
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 3
30.01.2015, 17:16  [ТС]
Большое спасибо. Именно таким путём вопрос и решился, только не через Query, а через Dataset. Отписаться здесь не успел, т.к. были проблемы с авторизацией на форуме.

Добавлено через 9 минут
Но всё-таки. Я сделал так:
Delphi
1
2
someTDataSet.FieldByName('MyBlobField').AsString:=oneofTstrings.Text;
oneofTstrings.Text:=someTDataSet.FieldByName('MyBlobField').AsString;
Прекрасно передало все вложенные 600 строк текста.
А у вас "ParamByName"."Value" Есть принципиальное различие?
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
30.01.2015, 17:27
Для текста различия нет.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.01.2015, 17:27
Помогаю со студенческими работами здесь

Firebird BLOB field default value - как?
Здравствуйте! Есть некая таблица в которой много полей. Задача - при Insert новой записи одно из BLOB полей пустое, но удобнее его сразу...

Изучение Firebird: FIBDataSet, DBGrid vs. BLOB
добрый день. добрался я до изучения баз данных. да-да, не удивляйтесь! недавно, победив лень, я начал серьезно вникать в тему создания БД и...

Работа с Blob полями в FireMonkey с FireBird
Здравствуйте, уважаемые пользователи форума. У меня возникла проблема при работе с FireMonkey 2.0 в RAD Studio XE3. Суть проблемы...

Определить размер BLOB поля на Firebird
подскажите пожалуйста как определить в select размер поля типа blob? у меня есть бд в нее в одно поле загружаются картинки хочу узнать...

Как можно реализовать вывод из Firebird из поля с типом данных blob картинки и записывать их в PictureBox?
Здравстуйте. Как можно реализовать вывод из Firebird из поля с типом данных blob картинки и записывать их в picturebox? if (fb.State...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru