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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2015, 22:07   #1
maxfox123
Пользователь
 
Регистрация: 07.07.2013
Сообщений: 15
По умолчанию отображение данных в TDBGrid из базы Постгрес

Добрый день,

Если можно подскажите (ткните носом ) где могу ошибаться, при отображении данных в TDBGrid из базы Постгрес. Используя компоненты ZEOS.

В базе постгреса есть таблица, с полями как приведено ниже.
Код:
 
CREATE TABLE fmbz_user.table_accountfio
(
  id serial NOT NULL, -- автоинкрементное поле таблицы
  id_accountidentifier numeric NOT NULL, -- Уникальный идентификатор сотрудника
  id_lastname text, -- Фамилия сотрудника
  id_firstname text, -- Имя сотрудника
  id_middlename text, -- Отчество сотрудника
  id_birthday text, -- день рождения сотрудника
  id_center text, -- Центр в котором работает сотрудник
  id_state text, -- состояние сотрудника (активен/в резерве)
  id_specialist text, -- квалификация сотрудника как специалиста
  id_manager text, -- квалификация сотрудника как менеджера
  CONSTRAINT firstkey PRIMARY KEY (id_accountidentifier)
)
На форме,
ZConnection_Main : TZConnection;
ZQuery_Main : TZQuery;
DBGrid_MainForm_FIO : TDBGrid;
DataSource_Main : TDataSource;
Код:
//Устанавливаю свойства :
ZConnection_Main.HostName	:= tConnectionData.sHostName;
ZConnection_Main.Database	:= ‘FMBZ_Base’;
ZConnection_Main.User	:= ‘fmbz_user’;
ZConnection_Main.Password	:= ‘fmbz_user’;
ZConnection_Main.Protocol	:= ‘postgresql-9’;
ZConnection_Main.Port	:= 5432;
ZConnection_Main.LoginPrompt:= False;
ZConnection_Main.Properties.Add('codepage=win1251');
ZQuery_Main.Connection	:= ZConnection_Main;

//Производим подключение
ZConnection_Main.Connect;

// в дебагере видно что подключение произведено

//Очистка мета-данных
ZConnection_Main.DbcConnection.GetMetadata.ClearCache;
ZQuery_Main.SQL.Clear;

//создание SQL запроса
sSQLText:=	‘SELECT * FROM fmbz_user.Table_AccountFIO';

//Установка DataSource
DataSource_Main.DataSet:= ZQuery_Main;
DBGrid_MainForm_FIO.DataSource:= DataSource_Main;

//установка полей DBGrid
DBGrid_MainForm_FIO.Columns[0].FieldName	:='id_lastname';
DBGrid_MainForm_FIO.Columns[1].FieldName	:='id_firstname';
DBGrid_MainForm_FIO.Columns[2].FieldName	:='id_middlename';
DBGrid_MainForm_FIO.Columns[3].FieldName	:='id_BirthDay';
DBGrid_MainForm_FIO.Columns[4].FieldName	:='id_Center';
DBGrid_MainForm_FIO.Columns[5].FieldName	:='id_State';
DBGrid_MainForm_FIO.Columns[6].FieldName	:='id_Specialist';
DBGrid_MainForm_FIO.Columns[7].FieldName	:='id_Manager';
DBGrid_MainForm_FIO.Columns[8].FieldName	:='id_AccountIdentifier';

//Выполнение SQL запроса
ZQuery_Main.SQL.Text :=	sSQLText;
ZQuery_Main.Active	:= True;
ZQuery_Main.Open;


//В дебагере,при выполнении следующего цикла, видно
//что текстовые поля id_lastname и тд имеют правильные значения ФИО которые записаны в БД
for iQueryCnt:= 0 to ZQuery_Main.RecordCount - 1  do
Begin
	sSQLText:=ZQuery_Main.Fields.Fields[2].AsString;
	ZQuery_Main.Next;
End;
НО В результате
ВСЕ поля в DBGrid, за исключением поля 'id_AccountIdentifier', устанавливаются в значение “(MEMO)”
поля предназначенные для данных 'id_AccountIdentifier' показывают правильные значения
(открывал pgAdminIII и проверял)

В чем может быть моя ошибка?

Последний раз редактировалось Stilet; 05.02.2015 в 08:03.
maxfox123 вне форума Ответить с цитированием
Старый 04.02.2015, 22:41   #2
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

У вас все поля с типом text. других не знаете?
таблица сделана неправильно.
lomastr_ вне форума Ответить с цитированием
Старый 04.02.2015, 22:54   #3
maxfox123
Пользователь
 
Регистрация: 07.07.2013
Сообщений: 15
По умолчанию

Уважаемый
1)
ну во первых не все поля "Text"
id_accountidentifier numeric NOT NULL
2)
Подскажите пожалуйста по делу, в чем могу ошибаться
maxfox123 вне форума Ответить с цитированием
Старый 04.02.2015, 23:05   #4
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

вам и подсказал, таблица сделана не правильно, типы ни куда не годны
а отображает мемо из-за типа

зачем для дня рождение которое по сути дата указывать текст (по сути блоб)
ну и так для всех
lomastr_ вне форума Ответить с цитированием
Старый 04.02.2015, 23:08   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Подскажите пожалуйста по делу, в чем могу ошибаться
Дык по делу и подсказали, другой тип для символьных полей нужно, чтобы memo не маячило в гриде

http://postgresql.ru.net/manual/datatype-character.html
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.02.2015, 23:45   #6
maxfox123
Пользователь
 
Регистрация: 07.07.2013
Сообщений: 15
По умолчанию

К сожалению, я не могу переделывать типы и поля таблиц (прав нет) в БД.

Вы пишите
Цитата:
"таблица сделана неправильно."
Возможно ли осуществить приведение типов в этом моем запросе, я до конца не понимаю.
Код:
‘SELECT * FROM fmbz_user.Table_AccountFIO';
Не могли бы Вы подсказать или показать текст запроса
с такими ограничениями/приведениями типа?

Как я понимаю, запросом "SELECT * FROM таблица" я получаю все данные.
Как изменить на ограничение полей?
maxfox123 вне форума Ответить с цитированием
Старый 05.02.2015, 08:05   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Возможно ли осуществить приведение типов
Почитай про CAST() по идее cast(id_lastname as varchar(тут кол-во символов)) может помочь. Однако я бы на твоем месте все же АБД теребил чтоб права дал на реструктуризацию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отображение данных из базы SQL в MFC ComboBox al072 C/C++ Базы данных 0 06.05.2012 19:14
Правельное отображение базы даных VoOne Помощь студентам 2 20.06.2011 14:35
Отображение знаками после выборки из базы Kapitann PHP 10 31.10.2010 16:58
Отображение информации из базы данных (Delphi) flame33 Помощь студентам 6 13.12.2009 21:24
Компонент Таблица данных (TDBGrid) Anna_fors БД в Delphi 13 28.11.2008 15:54