|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
отображение данных в 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 и проверял) В чем может быть моя ошибка? |
#2
|
|||
|
|||
Руки оторвать.
Переделывай таблицу: 1. id_accountidentifier д.б. INTEGER 2. Все TEXT поля д.б. VARCHAR нужного размера. Если очень хочется оставить БД как есть, то в запросе сделай приведение типов TEXT к VARCHAR. |
#3
|
|||
|
|||
lmikle
К сожалению, я не могу переделывать типы и поля таблиц (прав нет) в БД. Вы пишите Цитата:
Но как это применить к моему запросу, я до конца не понимаю. Код:
‘SELECT * FROM fmbz_user.Table_AccountFIO'; Не могли бы Вы подсказать или показать текст запроса с такими ограничениями? Как я понимаю, запросом "SELECT * FROM таблица" я получаю все данные. Как изменить на ограничение полей? |
#4
|
|||
|
|||
Запрос:
Код:
SELECT id serial, id_accountidentifier::INTEGER as id_accountidentifier, id_lastname::VARCHAR as id_lastname, id_firstname::VARCHAR as id_firstname, id_middlename::VARCHAR as id_middlename, id_birthday::VARCHAR as id_birthday, id_center::VARCHAR as id_center, id_state::VARCHAR as id_state, id_specialist::VARCHAR as id_specialist, id_manager::VARCHAR as id_manager FROM fmbz_user.table_accountfio ЗЫ. Тому, кто проектировал таблицу руки надо оторвать... |