RxDBGrid отображение поля типа text из MySQL

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

IvanI
новенький
Сообщения: 13
Зарегистрирован: 05.04.2012 16:12:25

RxDBGrid отображение поля типа text из MySQL

Сообщение IvanI »

Собственно вопрос: почему в гриде при отображении поля типа text из БД MySQL выводится (blob)? Причем не только если тип поля text, но и в случае если данные для вывода сформированы в запросе через CONCAT(), в CONCAT() передаются данные типа varchar

Как исправить эту проблему?

rx 1.1.5.98
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

А как в стандартном DBGrid-е?
IvanI
новенький
Сообщения: 13
Зарегистрирован: 05.04.2012 16:12:25

Сообщение IvanI »

в стандартном тоже (blob) выводит. работаю через стандартный SQLdb

MySQL 5.0.18-nt
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

Сообщение GAMER »

А чем мускулевский text отличается от blob, кроме чувствительности к регистру и объема? Наверное все, что приходит с размером больше 255 байт считается одним типом.
IvanI
новенький
Сообщения: 13
Зарегистрирован: 05.04.2012 16:12:25

Сообщение IvanI »

дело не в этом, а в том, что вместо текста записанного в поле типа text в гриде выводится строка в виде - (blob)

мне нужно решить эту проблему, выводить текст
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

Сообщение GAMER »

в гриде выводится строка в виде - (blob)

А как это выглядит?
IvanI
новенький
Сообщения: 13
Зарегистрирован: 05.04.2012 16:12:25

Сообщение IvanI »

нижний грид RxDBGrid, верхний DBGrid стандартный

Изображение
Аватара пользователя
amateur
энтузиаст
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Сообщение amateur »

а почему Ф.И.О. выводит нормально ....
Попробуйте это поле вывести в ДБмемо. По идее покажет текст. Если так то грид не виновен :)
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

IvanI
В вашей проблеме виноваты компоненты доступа к данным.
Как решение - переформатируете соответсвующие запросы - укажите явное приведение типа к varchar. Должно помочь.
И вообщем - почему не использовать varchar вместо text?
IvanI
новенький
Сообщения: 13
Зарегистрирован: 05.04.2012 16:12:25

Сообщение IvanI »

amateur
DBMemo выводит нормальный текст
ФИО формируется через CONCAT() из Ф, И, О, каждое поле varchar, причем на этом гриде оно выведено нормально, а вот в другом гриде те-же ФИО выведены как (blob)

alexs
указал приведение к типу char через CONVERT(), результат тот-же
в БД перевел поля в тип varchar - все без изменений

куда копать? есть ли смысл ставить более новый FPC, вроде в нем есть доступ уже к MySQL 5.5 ? может кто знает?
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Ну проблема однозначно кроется в компонентах доступа. Надо их смотреть.
Может чем-то другим хобить к БД?
Аватара пользователя
amateur
энтузиаст
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Сообщение amateur »

DBMemo выводит нормальный текст

^) за мускул не знаю, как там но в FB при поле в таблице тип text тоже будет выводить блоб... а при изменении поля из text в char будет все норм (кажись это во всех базах). Токо вот проблема char < 255 , text более 255. Склоняюсь к тому что это баг всех программ в которых в сетке нет просмотра блобов (точнее мемо) :))


И, кажись: второе поле - Содержание обращения. Т.е. судя по названию - многострочное поле.. И как стандартный грид может вывести мемо, токо если вдруг его "подтолкнуть" к этому. Можна просто в грид запихнуть дбмемо. И может будет чЮдо ? :)

И при чем тут компоненты ?
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

мемо поля обычно длинные. Смысл их отображать в сетке - они всё равно не влезут по ширине.
Для их просмотра используй DBMemo.
А если данные не длинные - то лучше varchar.
И ещё - мемо поля обычно влекут дополнительные толодвижения у компонентов для выборки данных из БД. В FB точно, в MySQL - скорее всего тоже. Лишний раз без необходимости не рекомендую использовать.
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

Сообщение GAMER »

+1. Лучше показать часть Мемо-сообщения, а если его нужно целиком увидеть, то можно сделать отдельных запрос именно для этого значения (записи) и показать его отдельно.
Аватара пользователя
amateur
энтузиаст
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Сообщение amateur »

меня токо смущает CONCAT().
Сделал тестовый пример в ФБ строки в грид выводятся нормально. Странно :(
Возможно в мускуле есть загвоздка из-за которой компоненты думают что строка у Вас блоб.
А если: в onGetText указать что это явная строка а не блоб, вроде этого:

Код: Выделить всё

var s : string;
begin
  s:= Sender.AsString;
  aText := s;

туповато выглядит, но...
Ответить