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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2009, 17:50   #1
funball
Пользователь
 
Регистрация: 13.04.2009
Сообщений: 44
По умолчанию помогите отобразить тип LONG в DBMemo

Большая просьба помочь кто знает с проблемой:
цель- забрать данные из оракла и отобразить их в гриде+определенную яцейку в DBMemo(с этим проблем нет), но в данных есть поле с типом лонг и при попытке отобразить данные с таким типом выдается ошибка:
"fetched column value was truncated".

Участвуют элементы:
ADOConnection
ADOQuery
DataSource
DBGrid
DBMemo

Все работает с простыми типами данных, как только обращаюсь к long пишет ошибку.
Помогите please...
funball вне форума Ответить с цитированием
Старый 14.04.2009, 00:35   #2
koma_grusha
Редкий обитатель
Форумчанин
 
Аватар для koma_grusha
 
Регистрация: 08.04.2009
Сообщений: 170
По умолчанию

а ты в запросе конвертируешь целочисленный тип в строковый? или в проге? там кажись чего-то куда-то не помещается
Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный (Мишель Монтень)
koma_grusha вне форума Ответить с цитированием
Старый 14.04.2009, 09:31   #3
funball
Пользователь
 
Регистрация: 13.04.2009
Сообщений: 44
По умолчанию

об этом я не подумал))...может быть в этом все дело...
беру данные из вьюхи:
procedure TForm2.Button1Click(Sender: TObject);
begin
ADOQuery1.Active:=False;
ADOQuery1.SQL.Text:='select * from v_msv_test where custno like ''%'+Edit1.Text+'%''';
ADOQuery1.Active:=True;

а во вьюхе стандартный запрос соответственно просто с выводом поля с типом лонг....

подскажите как сконвертировать правильно...
funball вне форума Ответить с цитированием
Старый 14.04.2009, 22:29   #4
koma_grusha
Редкий обитатель
Форумчанин
 
Аватар для koma_grusha
 
Регистрация: 08.04.2009
Сообщений: 170
По умолчанию

попробуй так:

Код:
'select Cast(LongField as nvarchar) AS LongFieldStr from v_msv_test where custno like ''%'+Edit1.Text+'%'''
LongField - твое лонговое поле
LongFieldStr - можешь назвать как хочешь
ну и добавь остальные поля
Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный (Мишель Монтень)
koma_grusha вне форума Ответить с цитированием
Старый 16.04.2009, 11:00   #5
funball
Пользователь
 
Регистрация: 13.04.2009
Сообщений: 44
По умолчанию

так не пойдет, данное преобразование это в t-sql, а у меня Oracle...

все преобразования в самом запросе помоему будут неудачны, так как long преобразовать в меньший по объему тип неполучится....наверное в дельфи есть для этого какие-то фишки....чтобы отобразить в мемо информацию из long типа данных...
...если кто сталкивался с этим помогите...
funball вне форума Ответить с цитированием
Старый 16.04.2009, 11:03   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
чтобы отобразить в мемо информацию из long типа данных
Нет такого... Если это поле не BLOB то хоть головй бейся, а так просто не получиш.
Отображай свой ЛОНГ и обычном Edit
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.04.2009, 16:28   #7
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

какая версия оракла?

почитай "Oracle Pl/sql для профессионалов" С.Фейерштейн, Б.Прибыл
Типы данных LONG и LONG RAW

Речь про их использование в самом Pl/sql, но рекомендации совершенно однозначные
Цитата:
Значения типа LONG и LONG RAW, извлекаемые из БД и содержащие свыше 32 767 байт данных, нельзя присваивать переменным типа varchar2 и raw. По этой причине типы данных LONG и LONG RAW лучше вообще не применять. Тем более что они относятся к числу устаревших и поддерживаются только для обеспечения обратной совместимости кода. Компания Oracle не рекомендует ими пользоваться. В новых приложениях вместо них лучше использовать типы данных CLOB и BLOB. А для существующих приложений в документации Oracle9i Application Developer Guide - Large Objects (LOBs) приводятся инструкции по преобразованию данных типа LONG в данные типа LOB.
ну а как работать с блобами ты легко найдешь, воспользовавшись поиском

Последний раз редактировалось soleil@mmc; 16.04.2009 в 16:35.
soleil@mmc вне форума Ответить с цитированием
Старый 17.04.2009, 09:23   #8
funball
Пользователь
 
Регистрация: 13.04.2009
Сообщений: 44
По умолчанию

Stilet, soleil@mmc,
спасибо за рекомендации, но у меня не все так легко, пишу прогу для себя...для автоматизаци рабочего процесса, но на работе скрипты текста только в LONG(к сожалению) и никто походу переделывать в ближайшие годы огромную базу под LOB не собирается)), поэтому ищу возможные варианты как работать с LONG в дельфи)...преобразовать LONG в LOB в самой базе с помощью другой таблицы зарпещается саппортом(вчера весь день бился ), а идти путем PL/SQL и выводить в WEB интерфейс не хочу...я и обратился к Delphi чтобы сделать консольное приложение...
....если не наду решение, тогда от дельфи придется отказаться...а жаль

Stilet, а вы можете привести пример как использовать с Edit?...дело втом, что походу дельфи данные даже не забирает из базы, поэтому обрабатывать даже нечего....((
funball вне форума Ответить с цитированием
Старый 17.04.2009, 09:26   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
дельфи данные даже не забирает из базы
Покажи код как забираешь
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.04.2009, 09:39   #10
funball
Пользователь
 
Регистрация: 13.04.2009
Сообщений: 44
По умолчанию

код я писал выше(3 сообщение)....самый простой что есть...соединение через ADO, Provider=MSDAORA, результат идет в грид, ошибка "fetched column value was truncated", если убираю во вьюхе поле с LONG, то все корректно отображается...
funball вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Long file name (LFN) Liquor Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 29.03.2009 17:10
Перевести тип String в тип PChar (Delphi 7) ScorpioN_T Помощь студентам 2 28.10.2008 22:13
Связь ComboBox с DBImage и DBMemo gane4ka Помощь студентам 8 14.12.2007 17:52
DBMemo автоподстановка John_chek Компоненты Delphi 3 25.01.2007 13:41