Author Topic: В PostgreSQL проблема с полями типа DATE  (Read 4580 times)

0 Members and 1 Guest are viewing this topic.

Offline sie

  • Full Member
  • ***
  • Posts: 108
  • Karma: +0/-0
СУБД: PostgreSQL 8.0
Среда: C++Builder 6.0 или Delphi 6.0
Компоненты: TADOConnection и TADOQuery
Проблема: Сообщение о "Неопознанной ошибке" при попытке выполнения запроса SELECT,
 который возвращает хотя бы одно поле типа DATE

Само соединение с базой успешное.
pgAdmin III выполняет все запросы без ошибок.
Ошибка возникает и в среде программирования и непосредственно в скомпилированной программе.
Пожалуйста, дайте совет/ссылки/направления поиска решения/etc.
Сам найти ответ пока не смог.

Тестовая таблица была такая:
Code: [Select]
CREATE TABLE table_clients (
  ClientID             INTEGER NOT NULL,
  ClientFamilyName     VARCHAR(20) NOT NULL,
  ClientName           VARCHAR(15) NOT NULL,
  ClientPatronymicName VARCHAR(15) NOT NULL,
  ClientBirthday       DATE NOT NULL,
  PRIMARY KEY (ClientID)
 );
Свойства компонента ADOConnection1
 LoginPrompt: false
 ConnectionString: Provider=PostgreSQL.1;Password=mypass;User ID=postgres;Data Source=127.0.0.1;Location=testbase;Extended Properties=""

Свойства компонента ADOQuery1
 Connection: ADOConnection1
 SQL: SELECT * FROM table_clients - вызывает ошибку
или
 SQL: SELECT ClientID, ClientBirthday FROM table_clients - вызывает ошибку
или
 SQL: SELECT ClientID FROM table_clients - выполняется без ошибок



Offline Victor Snezhko

  • Jr. Member
  • **
  • Posts: 72
  • Karma: +0/-0
В PostgreSQL проблема с полями типа DATE
« Reply #1 on: May 27, 2006, 19:23:09 »
Quote from: sie
СУБД: PostgreSQL 8.0
Среда: C++Builder 6.0 или Delphi 6.0
Компоненты: TADOConnection и TADOQuery
Проблема: Сообщение о "Неопознанной ошибке" при попытке выполнения запроса SELECT,
 который возвращает хотя бы одно поле типа DATE

Какую версию OLEDB-провайдера используете?
1.0.0.20 с http://pgfoundry.org/projects/oledb у меня работает на таблице, созданной вышенаписанным скриптом.

Offline sie

  • Full Member
  • ***
  • Posts: 108
  • Karma: +0/-0
В PostgreSQL проблема с полями типа DATE
« Reply #2 on: May 28, 2006, 10:22:02 »
Quote from: Victor Snezhko
Какую версию OLEDB-провайдера используете?
И действительно, проблема решилась со сменой версии.
У меня была библиотека pgoledb.dll версии 1.0.0.15
из того же дистрибутива, что и сам сервер PostgreSQL.
С переходом на версию 1.0.0.19 проблема исчезла.

Спасибо Victor Snezhko за подсказку и всем за внимание.

А кто-нибудь знает, как попроще заставить ADOQuery/ADOTable
определять поля типа char/varchar как строки?
У меня они определяется как Memo-поля.
Наглое навязывание своего типа дает ошибку.
Пока знаю только способ отображения как строк через
вычисляемое поле, а хотелось бы действительно строковое поле.

Offline Victor Snezhko

  • Jr. Member
  • **
  • Posts: 72
  • Karma: +0/-0
В PostgreSQL проблема с полями типа DATE
« Reply #3 on: May 28, 2006, 16:42:40 »
Quote from: sie
А кто-нибудь знает, как попроще заставить ADOQuery/ADOTable
определять поля типа char/varchar как строки?
У меня они определяется как Memo-поля.
Наглое навязывание своего типа дает ошибку.
Пока знаю только способ отображения как строк через
вычисляемое поле, а хотелось бы действительно строковое поле.
Эта ошибка исправлена в версии 1.0.0.20
В 1.0.0.19 в качестве максимального размера строковой колонки возвращалось ~0, и ADO может интерпретировать такие колонки только как Memo.

Offline sie

  • Full Member
  • ***
  • Posts: 108
  • Karma: +0/-0
В PostgreSQL проблема с полями типа DATE
« Reply #4 on: May 28, 2006, 19:00:30 »
Quote from: Victor Snezhko
Эта ошибка исправлена в версии 1.0.0.20
Еще раз спасибо. В следующий раз сразу буду пробовать версию, которую советуют.

Offline arido

  • Newbie
  • *
  • Posts: 33
  • Karma: +0/-0
В PostgreSQL проблема с полями типа DATE
« Reply #5 on: November 17, 2006, 17:07:18 »
Простите, что влезаю с вопросом, подскажите, как подключиться к базе данных PostgreSQL из программы и считать данный из таблиц.
« Last Edit: November 18, 2006, 20:45:06 by arido »