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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2012, 19:51   #11
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

С Memo согласен, тогда уж лучше без клика, а с помощью AfterScroll. Или вообще DBMemo
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.08.2012, 19:57   #12
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Аватар, методом собственных шишек доказано - лучше по клику ... т.к. при переборе PgUp\PgDown или прокруткой мышкой AfterScroll будет срабатывать что вызовет лишние запросы, а клик сработает только на нужной записи. У самого есть в программе подобная реализация с блобами ... только вместо текста фотки по 30-50 Кб каждая
DBMemo и имелось ввиду ... простой - не тот вариант
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...

Последний раз редактировалось Yurk@; 19.08.2012 в 20:00.
Yurk@ вне форума Ответить с цитированием
Старый 19.08.2012, 20:02   #13
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

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

Последний раз редактировалось Аватар; 19.08.2012 в 20:05.
Аватар вне форума Ответить с цитированием
Старый 19.08.2012, 20:05   #14
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
а я вообще не пойму зачем такие данные (заведомо зная что может быть оч большой текст) рисовать в Грид? уж не проще ли, в таком случае, выводить его, например, в Мемо по клику на какой-то записи доставая при этом отдельным запросом из текущей записи и читая предложеным выше способом? это существенно повлияет на скорость выборки да и удобство работы
Вот как раз для удобства работы и просмотра и делаю через DBGridEh вывод).
Цитата:
Вычисляемое поле делается в DataSet-е. Двойной клик на значке, вход в Field Editor, New Field или Ctrl-N и создаем вычисляемое поле. Значение ему присваевается в OnCalcFields DataSet-а. В гриде поля ручками проставить

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

Кстати по поводу DBGridEh, не уверен, но новые версии кажись умеют BLOB-поля отображать. Или приснилось?
Аа...вспомнил, я когда-то делал подобное, но еще с BDE. Когда начинал только знакомство с базами данных, ковырялся в этих настройках.
Я вот, немного не понял. Как все таки связать мое BLOB-поле в базе данных с созданным полем в DataSet-e. В базе данных BLOB-поле называется ZNACHENIE. Вот так надо настройки делать:
А что дальше надо настраивать? В самом DBGridEh как колонку правильно настроить на это поле?
Изображения
Тип файла: png Вычисляемое поле.png (30.9 Кб, 46 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 19.08.2012, 20:05   #15
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

)) .. согласен)) .. тогда это можно сделать "опционально" и пусть каждый сам решает как ему хочется просматривать
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 19.08.2012, 20:13   #16
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Калькулируемое поле обзывай другим именем. Чего ради оно должно совпадать с существующим именем Field-а? Тип символьный, длина - не меньше максимальной длины данных в BLOB-поле, иначе обрежешь при отображении. В OnCalcFields данные из BLOB поля преобразовать в символьные и поместить в вычисляемое поле. В гриде колонка просто нацеливается на вычисляемое поле
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 19.08.2012 в 20:18.
Аватар вне форума Ответить с цитированием
Старый 20.08.2012, 04:18   #17
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
данные из BLOB поля преобразовать в символьные и поместить в вычисляемое поле
Не понял. Это как?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 20.08.2012, 07:47   #18
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Должно так прокатить:
Код:
DataSet.FieldByName('MyCalcPole').AsString:=DataSet.FieldByName('ZNACHENIE').AsString;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.08.2012, 20:12   #19
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Вот. Мутю мутю, да что-то не так делаю. Вот мои настройки (см.скрин):
Под полем "_BlobPole" подразумевается BLOB-поле ZNACHENIE в базе данных. В событии OnCalcFields написано так:
Код:
procedure TForm1.pFIBDataSet6CalcFields(DataSet: TDataSet);
begin
 DataSet.FieldByName('_BlobPole').AsString:=DataSet.FieldByName('ZNACHENIE').AsString;
end;
Но при попытке поставить pFIBDataSet6.Active=True, выскакивает ошибка:
Что я не так делаю в моем случае? Прошу помощи.
Изображения
Тип файла: jpg Настройки BLOB.jpg (37.7 Кб, 123 просмотров)
Тип файла: png Ошибка.png (18.9 Кб, 36 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 20.08.2012, 20:19   #20
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Артем, ничего не должно подразумеваться. Тянешь Blob c именем ZNACHENIE, оно и есть с таким именем. В правой части правильно обратился. В левой части должно быть имя калькулируемого поля, которое нужно создать в дизайне. Какого у тебя _BlobPole имеет тип fkData (FieldKind)? Замени на fkCalculate или на подобие этого, не помню точно. И оно должно быть символьное (TStringField), а не BLOB. И в запросе само-собой никаких упоминаний _BlobPole
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 20.08.2012 в 20:25.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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