-
Доброго времени суток!
Есть таблица с 60 полями, работаю через ADO.
Во избежании ошибки "Не удается найти строку для обновления. Некоторые значения могли быть изменены со времени последнего чтения" при событии FormShow использую
...TelTable.Properties['Update Resync'].Value:=adResyncAll;
Проблема вот в чем:
после сохранения созданой записи, она исчезает с набора данных и ее не видно в DBGrid'e.
Но реально в базе она сохраняется и после закрытия/открытия проги все данные видно.
В чем может быть причина?
Зараннее всем спасибо за советы
Да, и еще один нюанс: в БД Access была использавана функция реплики, могло ли это быть причиной?
-
> >Есть таблица с 60 полями
ОГО!
ADOQuery
CursorLocation: = clServer
CursorType := ctKeyset
-
> ADOQueryCursorLocation: = clServer
> CursorType := ctKeyset
Пробовал, правда с ADOTable, но тогда не работает сортировка (использовал SORT и по IndexField), а без нее никуда.
Выдает ошибку "текущий проводник не поддерживает необходимые интерфейсы для сортировки"
-
в AdoQuery -
select * from mytable
Order by FieldName
-
Спасибо попробую.
но вот только немного неудобно, переделывать многое прийдеться.
еще вопрос:
я пишу оболочку для работы с одной БД, и планируется сделать так, на серваке лежит база а на клиентских машинах только оболочка и доступ к базе идет через сеть, т.е. к одной базе подключаются несколько пользователей.
в даном случае при использовании CursorLocation: = clServer проблем не будет?
-
Недолжно.
Лучше вообще сделать редактирование отдельным окном и запросом, а в гриде только отображать данные.
Сортировать можно еще с помощью грида, только не стандартного а eh или cx
-
1. Заменить TADOTable на TADODataSet
2. Курсор клиентский, а не серверный - в данном случае он и нафиг не нужен, а тормозить будет
3. Для ЛЮБОЙ сортировки вполне достаточно св-во датасета Sort, при этом никакие индексы не нужны вообще
Редактирование и добавление рекомендую организовать не в самой сетке (в этом случае надо громоздить обработчики BeforeXXX/AfterXXX для проверки правильности заполнения данных пользователем), а в модальном окне с не DB-aware контролами (TEdit,TCombobox,TMemo..), а внесение изменений в таблицу выполнять отдельным TADOCommand/TADOQuery с последуещим переоткрытием датасета и поиском обновленной (добавленной) записи методом Locate
-
> [6] MsGuns © (20.08.08 15:47)
Если вместо последней запятой поставить жирную точку - абсолютно правильная рекомендация. 8-)
-
MsGuns спаисбо за совет, но в своем случаее желательно обойтись без "переоткрытия датасета и поиска обновленной (добавленной) записи методом Locate"
Забыл отметить как раз редактирование идет в отдельно окне через TEdit,TCombobox,TMemo.., а DBGrid использую только для просмотра, и в конце не буду его вообще использовать.
-
>AlexeyK (20.08.08 15:56) [8]
>MsGuns спаисбо за совет, но в своем случаее желательно обойтись без "переоткрытия датасета >и поиска обновленной (добавленной) записи методом Locate"
Коран запрещает ?
-
>Sergey13 © (20.08.08 15:53) [7]
>Если вместо последней запятой поставить жирную точку - абсолютно правильная рекомендация. 8-)
Чего вы так все панически избегаете переоткрытий на стабильных серверах ?
-
> [10] MsGuns © (20.08.08 16:12)
> Чего вы так все панически избегаете переоткрытий на стабильных серверах ?
Просто я их люблю и берегу, как и сеть. И стараюсь не нагружать пустой работой.
-
> Коран запрещает ?
> Чего вы так все панически избегаете переоткрытий на стабильных серверах ?
Дело не в паническом страхе, а в удобстве пользования, и условий использования программы!
-
> Пробовал, правда с ADOTable
В топку
-
> в AdoQuery
В топку
-
> CursorLocation: = clServer
Что на колени хочешь поставить сервер или клиента?
-
> а DBGrid использую только для просмотра, и в конце не буду
> его вообще использовать.
Ну и зачем тогда вообще вопрос, какая разница если сетки нет.
-
> Anatoly Podgoretsky © (20.08.08 16:39) [15]
> Что на колени хочешь поставить сервер или клиента?
Каким образом если это акцесс?
-
> Ну и зачем тогда вообще вопрос, какая разница если сетки нет.
Дело в том что к записи доступа нет после сохранения, сохранил - а ее нет!
а сетка просто для просмотра!
-
AlexeyK © (20.08.08 17:03) [18]
ну, а ты как сохранил, в том же датасете(который к сетке подключен) сделал POST?