Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2012, 15:46   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Как содержимое поля типа BLOB представить как VARCHAR?

Добрый вечер! Мне нужно в базе (Firebird) хранить большой текст. Он может быть как меньше 255 символов, так и быть больше. Об этом заранее неизвестно какой длины будет добавлен текст, поэтому не могу пока точно определить какой тип поля использовать: BLOB или VARCHAR. Понятно, что все же надо BLOB использовать. Но, в DBGridEh-e невозможно же отобразить вместо надписи (BLOB) в ячейках таблицы содержимое поля, если тип у поля стоит как BLOB. Или я не прав и такое можно обойти? Прошу поделиться рекомендациями как это можно сделать.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 19.08.2012, 15:48   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Сделать в DataSet вычисляемое символьное поле и спокойно его отображать в гриде вместо BLOB-поля
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.08.2012, 16:41   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Ээм. Где именно? В компоненте pFIBDataSet или в таблице БД? Как в Firebird делать вычисляемое символьное поле?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 19.08.2012, 16:51   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Вычисляемое поле делается в DataSet-е. Двойной клик на значке, вход в Field Editor, New Field или Ctrl-N и создаем вычисляемое поле. Значение ему присваевается в OnCalcFields DataSet-а. В гриде поля ручками проставить

Цитата:
Как в Firebird делать вычисляемое символьное поле?
Это не в базе делается, а в SELECT-запросе, например в списке полей какое-то SQL-допустимое выражение, результат которого передается клиенту как поле. Но я бы предпочел все таки делать в DataSet-е

Кстати по поводу DBGridEh, не уверен, но новые версии кажись умеют BLOB-поля отображать. Или приснилось?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 19.08.2012 в 16:58.
Аватар вне форума Ответить с цитированием
Старый 19.08.2012, 17:33   #5
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Кстати по поводу DBGridEh, не уверен, но новые версии кажись умеют BLOB-поля отображать. Или приснилось?
не приснилось)

artemavd, возьми поновее версию EhLib и глянь в дэмках
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 19.08.2012, 18:38   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Аватар, спасибо, посмотрю такой вариант.
Юрка, ага, надо глянуть. Где-то я видел там когда-то. Версия у меня 5.6. Вроде как последняя. Лицензия
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 19.08.2012, 19:02   #7
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

тогда там все это есть - ищи в примерах
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 19.08.2012, 19:25   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Еще бы знать в каком именно примере)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 19.08.2012, 19:40   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Но я бы предпочел все таки делать в DataSet-е
Поддерживаю. Сам так делал для считывания Блоба.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.08.2012, 19:45   #10
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

а я вообще не пойму зачем такие данные (заведомо зная что может быть оч большой текст) рисовать в Грид? уж не проще ли, в таком случае, выводить его, например, в Мемо по клику на какой-то записи доставая при этом отдельным запросом из текущей записи и читая предложеным выше способом? это существенно повлияет на скорость выборки да и удобство работы
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как использовать содержимое определенного поля efen БД в Delphi 6 23.12.2010 17:59
как вытащить картинку из BLOB поля Dania SQL, базы данных 0 25.03.2010 12:44
Как представить поля? Mashul'ka Помощь студентам 1 24.03.2010 21:34
Как изменить в InterBase размер поля varchar(10) на varchar(20) tarakan1983 БД в Delphi 4 23.03.2009 15:35
varchar to blob in phpmyadmin Alar SQL, базы данных 0 11.01.2009 07:14