powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ADOQuery и PostgreSQL
14 сообщений из 14, страница 1 из 1
ADOQuery и PostgreSQL
    #35418475
Фотография lena_ki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cвязь через ADOQuery c таблицей из базы данных PostgreSQL, среда С++ Builder 2007. Я хочу иметь возможность редактировать записи в гриде. При добавлении записи в грид, почему-то не обновляется автоинкриментное поле.
Грид можно увидеть в актуальном состоянии только после добавления такого кода:
void __fastcall TForm1::ADOQuery1AfterPost(TDataSet *DataSet)
{
ADOQuery1->Close();
ADOQuery1->Open();
}
Если не писать этот код, то после добавления записи и нажатия рефреш, происходит исключение (рис).
Запрос в ADOQuery1: select * from mytable order by name

Подскажите, пожалуйста, как заставить правильно обновляться автоинкриментное поле в гриде, а не переоткрывать все время запрос?
...
Рейтинг: 0 / 0
ADOQuery и PostgreSQL
    #35418540
drunk2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lena_kiCвязь через ADOQuery про ado тут про компоненты доступа там
...
Рейтинг: 0 / 0
ADOQuery и PostgreSQL
    #35419749
Shagrat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Много раз пробовал ADO Postges Delphi скрестить. Убил много времен, и пришол к таким выводам.

1. Очень тормозит (очнь, очень)
Пробовал ODBC, и компоненты прямого доступа. При обращении к таблицы скорость была примерно такая. Примерно на 5 сек обработки
ODBC - 10 000 записей
ADO - 2 000 записей
ZEOS - 40 000 записе
2. Пришлось переправить в исходниках работу с кешем на клиенте.
Изменил алгоритм обновления данных - т.к. после добавления данных в таблицу либо нужно было сделать Close, Open --- Переписал с возможностью обновлять по команде Update (или кнопке обновить).
3. Приходилось в ручную поставлять автоинкриментные поля - т.к. среда почемуто в тупую при создании Field ставила TIntegerField и свойство Requred ставило True. Что и приводило к такой же ошибке.

У ODBC куча свои приколов. Например тип BooleanField - Нет, Проблемы с типом bytea

Советую использовать Zeos или другие компоненты прямого доступа.
Про другие компоненты сказать немогу, почти не пробовал
...
Рейтинг: 0 / 0
ADOQuery и PostgreSQL
    #35420283
Фотография lena_ki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shagrat, большое спасибо!
...
Рейтинг: 0 / 0
ADOQuery и PostgreSQL
    #35420897
Фотография lena_ki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zeos без проблем устанавливается в С++ Builder 2007?
...
Рейтинг: 0 / 0
ADOQuery и PostgreSQL
    #35421305
SeniorAndre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Всё прекрасно работает по связке PG<->ODBC<>OLE DB ODBC<->Delphi ADO. Надо в настройках ODBC снять Bool as String, а для Blob полей пользовать тип lo - его ODBC транслирует как TBlobFiled в Delphi.
2.
Код: plaintext
1.
2.
3.
4.
5.
 1 . Очень тормозит (очнь, очень)
Пробовал ODBC, и компоненты прямого доступа. При обращении к таблицы скорость была примерно такая. Примерно на  5  сек обработки
ODBC -  10   000  записей
ADO -  2   000  записей
ZEOS -  40   000  записе
Я считаю что это глупое использование сервера..., он должен запросы выполнять и возвращать результат запроса, а заставлять сервер гнать таблицы на клиента это глупо, это не DBFки. Это надо голову править.
3. Если проект пишется с нуля, то не использовать ZEOS глупо, хотя я работаю с ADO, и проблем со скоростью ни каких.
...
Рейтинг: 0 / 0
ADOQuery и PostgreSQL
    #35421311
SeniorAndre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Всё прекрасно работает по связке PG<->ODBC<>OLE DB ODBC<->Delphi ADO. Надо в настройках ODBC снять Bool as String, а для Blob полей пользовать тип lo - его ODBC транслирует как TBlobFiled в Delphi.
2.
Код: plaintext
1.
2.
3.
4.
5.
 1 . Очень тормозит (очнь, очень)
Пробовал ODBC, и компоненты прямого доступа. При обращении к таблицы скорость была примерно такая. Примерно на  5  сек обработки
ODBC -  10   000  записей
ADO -  2   000  записей
ZEOS -  40   000  записе
Я считаю что это глупое использование сервера..., он должен запросы выполнять и возвращать результат запроса, а заставлять сервер гнать таблицы на клиента это глупо, это не DBFки. Это надо голову править.
3. Если проект пишется с нуля, то не использовать ZEOS глупо, хотя я работаю с ADO, и проблем со скоростью ни каких.
...
Рейтинг: 0 / 0
ADOQuery и PostgreSQL
    #35422263
Фотография lena_ki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>1. Всё прекрасно работает по связке PG<->ODBC<>OLE DB ODBC<->Delphi ADO. Надо в настройках ODBC снять Bool as String, а для Blob полей пользовать тип l

Но развер это решит проблему из моего первого сообщения с картинкой? Ведь автоинкриментное поле avto_id, почему-то обновляется в гриде только после закрытия и потом открытия соединения.
После добавления записи в гриде я вижу что автоинкрементное поле показывает 0, лишь после кода:
ADOQuery1->Close();
ADOQuery1->Open();
я вижу нормальное значение из базы данных...
Как у вас реализовано добавление записи в гриде?
...
Рейтинг: 0 / 0
ADOQuery и PostgreSQL
    #35422592
Shagrat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SeniorAndreЯ считаю что это глупое использование сервера..., он должен запросы выполнять и возвращать результат запроса, а заставлять сервер гнать таблицы на клиента это глупо, это не DBFки. Это надо голову править.

Да в ADO очнь много дополнительных запросов, на блокировки проверки и.тд. - Но если клиенту тупо нужно загрузить большой справочник, чтобы потом из него выбрать данные то тут уже видно разницу во времени (Большую)

Насчет AutoInc
1. Поле обязательно должно быть TAutoIncField
2. Свойство его обязательно Requred должно стоять False

Насчет исправления исходников ADO - могу покопаться вспомнить что делал. Но это только относится к Fefresh из базы а не из кеша.
...
Рейтинг: 0 / 0
ADOQuery и PostgreSQL
    #35422645
Shagrat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл сказать. Что обновление данных зависит еще от типа выбранного курсора. Смотри статью
Немного об использовании ADO в Delphi.
...
Рейтинг: 0 / 0
ADOQuery и PostgreSQL
    #35422662
Shagrat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще напишу. Сори за спам.

Была проблема с добавлением данных несколькими юзерами.
Zeos искал запись для Update по всем полям WHERE ....
Пока для каждой таблицы не прописал PRIMARY KEY. После чего пропали все эти глюки с обновлением данных и запросы Update пошли с одним WHERE id = X;
...
Рейтинг: 0 / 0
ADOQuery и PostgreSQL
    #35425281
Фотография lena_ki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>1. Поле обязательно должно быть TAutoIncField

У меня поле avto_id объявлено в базе так:
id_avto serial NOT NULL,
CONSTRAINT pk_id_avto PRIMARY KEY (id_avto),

В ADQuery как выставить для этого поля TAutoIncField? Есть свойство FieldKind в нем в выпадающем списке есть значения:
fkAgregate
fkData (сейчас стоит)
fkCalculated
fkLookup
fkInternalCalc
а где AutoIncField?
...
Рейтинг: 0 / 0
ADOQuery и PostgreSQL
    #35444008
Фотография lena_ki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shagrat aу! :)
...
Рейтинг: 0 / 0
ADOQuery и PostgreSQL
    #35445543
Фотография Степан H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мнение Shagrat + 1

Используйте ZEOS. Чем раньше - тем лучше для вас.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ADOQuery и PostgreSQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]