Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ADOQuery и PostgreSQL
|
|||
|---|---|---|---|
|
#18+
Cвязь через ADOQuery c таблицей из базы данных PostgreSQL, среда С++ Builder 2007. Я хочу иметь возможность редактировать записи в гриде. При добавлении записи в грид, почему-то не обновляется автоинкриментное поле. Грид можно увидеть в актуальном состоянии только после добавления такого кода: void __fastcall TForm1::ADOQuery1AfterPost(TDataSet *DataSet) { ADOQuery1->Close(); ADOQuery1->Open(); } Если не писать этот код, то после добавления записи и нажатия рефреш, происходит исключение (рис). Запрос в ADOQuery1: select * from mytable order by name Подскажите, пожалуйста, как заставить правильно обновляться автоинкриментное поле в гриде, а не переоткрывать все время запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 17:58 |
|
||
|
ADOQuery и PostgreSQL
|
|||
|---|---|---|---|
|
#18+
Много раз пробовал 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 или другие компоненты прямого доступа. Про другие компоненты сказать немогу, почти не пробовал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2008, 11:29 |
|
||
|
ADOQuery и PostgreSQL
|
|||
|---|---|---|---|
|
#18+
Shagrat, большое спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2008, 13:43 |
|
||
|
ADOQuery и PostgreSQL
|
|||
|---|---|---|---|
|
#18+
Zeos без проблем устанавливается в С++ Builder 2007? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2008, 16:10 |
|
||
|
ADOQuery и PostgreSQL
|
|||
|---|---|---|---|
|
#18+
1. Всё прекрасно работает по связке PG<->ODBC<>OLE DB ODBC<->Delphi ADO. Надо в настройках ODBC снять Bool as String, а для Blob полей пользовать тип lo - его ODBC транслирует как TBlobFiled в Delphi. 2. Код: plaintext 1. 2. 3. 4. 5. 3. Если проект пишется с нуля, то не использовать ZEOS глупо, хотя я работаю с ADO, и проблем со скоростью ни каких. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2008, 17:41 |
|
||
|
ADOQuery и PostgreSQL
|
|||
|---|---|---|---|
|
#18+
1. Всё прекрасно работает по связке PG<->ODBC<>OLE DB ODBC<->Delphi ADO. Надо в настройках ODBC снять Bool as String, а для Blob полей пользовать тип lo - его ODBC транслирует как TBlobFiled в Delphi. 2. Код: plaintext 1. 2. 3. 4. 5. 3. Если проект пишется с нуля, то не использовать ZEOS глупо, хотя я работаю с ADO, и проблем со скоростью ни каких. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2008, 17:42 |
|
||
|
ADOQuery и PostgreSQL
|
|||
|---|---|---|---|
|
#18+
>1. Всё прекрасно работает по связке PG<->ODBC<>OLE DB ODBC<->Delphi ADO. Надо в настройках ODBC снять Bool as String, а для Blob полей пользовать тип l Но развер это решит проблему из моего первого сообщения с картинкой? Ведь автоинкриментное поле avto_id, почему-то обновляется в гриде только после закрытия и потом открытия соединения. После добавления записи в гриде я вижу что автоинкрементное поле показывает 0, лишь после кода: ADOQuery1->Close(); ADOQuery1->Open(); я вижу нормальное значение из базы данных... Как у вас реализовано добавление записи в гриде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2008, 10:21 |
|
||
|
ADOQuery и PostgreSQL
|
|||
|---|---|---|---|
|
#18+
SeniorAndreЯ считаю что это глупое использование сервера..., он должен запросы выполнять и возвращать результат запроса, а заставлять сервер гнать таблицы на клиента это глупо, это не DBFки. Это надо голову править. Да в ADO очнь много дополнительных запросов, на блокировки проверки и.тд. - Но если клиенту тупо нужно загрузить большой справочник, чтобы потом из него выбрать данные то тут уже видно разницу во времени (Большую) Насчет AutoInc 1. Поле обязательно должно быть TAutoIncField 2. Свойство его обязательно Requred должно стоять False Насчет исправления исходников ADO - могу покопаться вспомнить что делал. Но это только относится к Fefresh из базы а не из кеша. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2008, 12:17 |
|
||
|
ADOQuery и PostgreSQL
|
|||
|---|---|---|---|
|
#18+
Забыл сказать. Что обновление данных зависит еще от типа выбранного курсора. Смотри статью Немного об использовании ADO в Delphi. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2008, 12:37 |
|
||
|
ADOQuery и PostgreSQL
|
|||
|---|---|---|---|
|
#18+
И еще напишу. Сори за спам. Была проблема с добавлением данных несколькими юзерами. Zeos искал запись для Update по всем полям WHERE .... Пока для каждой таблицы не прописал PRIMARY KEY. После чего пропали все эти глюки с обновлением данных и запросы Update пошли с одним WHERE id = X; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2008, 12:42 |
|
||
|
ADOQuery и PostgreSQL
|
|||
|---|---|---|---|
|
#18+
>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? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2008, 12:46 |
|
||
|
ADOQuery и PostgreSQL
|
|||
|---|---|---|---|
|
#18+
Shagrat aу! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2008, 10:58 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=35422592&tid=2004199]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 360ms |

| 0 / 0 |
