Конференция "Базы" » При сохранении созданой записи она исчезает [D7, Access]
 
  • AlexeyK (20.08.08 13:50) [0]
    Доброго времени суток!

    Есть таблица с 60 полями, работаю через ADO.
    Во избежании ошибки "Не удается найти строку для обновления. Некоторые значения могли быть изменены со времени последнего чтения" при событии FormShow использую
    ...TelTable.Properties['Update Resync'].Value:=adResyncAll;

    Проблема вот в чем:
    после сохранения созданой записи, она исчезает с набора данных и ее не видно в DBGrid'e.
    Но реально в базе она сохраняется и после закрытия/открытия проги все данные видно.

    В чем может быть причина?

    Зараннее всем спасибо за советы

    Да, и еще один нюанс: в БД Access была использавана функция реплики, могло ли это быть причиной?
  • stas © (20.08.08 14:21) [1]

    > >Есть таблица с 60 полями

    ОГО!
    ADOQuery
    CursorLocation: = clServer
    CursorType := ctKeyset
  • AlexeyK (20.08.08 14:35) [2]

    > ADOQueryCursorLocation: = clServer
    > CursorType := ctKeyset


    Пробовал, правда с ADOTable, но тогда не работает сортировка (использовал SORT и по IndexField), а без нее никуда.
    Выдает ошибку "текущий проводник не поддерживает необходимые интерфейсы для сортировки"
  • stas © (20.08.08 14:48) [3]
    в AdoQuery -
    select * from mytable
    Order by FieldName
  • AlexeyK (20.08.08 15:22) [4]
    Спасибо попробую.
    но вот только немного неудобно, переделывать многое прийдеться.

    еще вопрос:
    я пишу оболочку для работы с одной БД, и планируется сделать так, на серваке лежит база а на клиентских машинах только оболочка и доступ к базе идет через сеть, т.е. к одной базе подключаются несколько пользователей.
    в даном случае при использовании CursorLocation: = clServer   проблем не будет?
  • stas © (20.08.08 15:38) [5]
    Недолжно.
    Лучше вообще сделать редактирование отдельным окном и запросом, а в гриде только отображать данные.
    Сортировать можно еще с помощью грида, только не стандартного а eh или cx
  • MsGuns © (20.08.08 15:47) [6]
    1. Заменить TADOTable на TADODataSet
    2. Курсор клиентский, а не серверный - в данном случае он и нафиг не нужен, а тормозить будет
    3. Для ЛЮБОЙ сортировки вполне достаточно св-во датасета Sort, при этом никакие индексы не нужны вообще

    Редактирование и добавление рекомендую организовать не в самой сетке (в этом случае надо громоздить обработчики BeforeXXX/AfterXXX для проверки правильности заполнения данных пользователем), а в модальном окне с не DB-aware контролами (TEdit,TCombobox,TMemo..), а внесение изменений в таблицу выполнять отдельным TADOCommand/TADOQuery с последуещим переоткрытием датасета и поиском обновленной (добавленной) записи методом Locate
  • Sergey13 © (20.08.08 15:53) [7]
    > [6] MsGuns ©   (20.08.08 15:47)

    Если вместо последней запятой поставить жирную точку - абсолютно правильная рекомендация. 8-)
  • AlexeyK (20.08.08 15:56) [8]
    MsGuns спаисбо за совет, но в своем случаее желательно  обойтись без "переоткрытия датасета и поиска обновленной (добавленной) записи методом Locate"

    Забыл отметить как раз редактирование идет в отдельно окне через TEdit,TCombobox,TMemo.., а DBGrid использую только для просмотра, и в конце не буду его вообще использовать.
  • MsGuns © (20.08.08 16:09) [9]
    >AlexeyK   (20.08.08 15:56) [8]
    >MsGuns спаисбо за совет, но в своем случаее желательно  обойтись без "переоткрытия датасета >и поиска обновленной (добавленной) записи методом Locate"

    Коран запрещает ?
  • MsGuns © (20.08.08 16:12) [10]
    >Sergey13 ©   (20.08.08 15:53) [7]
    >Если вместо последней запятой поставить жирную точку - абсолютно правильная рекомендация. 8-)

    Чего вы так все панически избегаете переоткрытий на стабильных серверах ?
  • Sergey13 © (20.08.08 16:17) [11]
    > [10] MsGuns ©   (20.08.08 16:12)
    > Чего вы так все панически избегаете переоткрытий на стабильных серверах ?

    Просто я их люблю и берегу, как и сеть. И стараюсь не нагружать пустой работой.
  • AlexeyK (20.08.08 16:24) [12]

    > Коран запрещает ?
    > Чего вы так все панически избегаете переоткрытий на стабильных серверах ?


    Дело не в паническом страхе, а в удобстве пользования, и условий использования программы!
  • Anatoly Podgoretsky © (20.08.08 16:37) [13]

    > Пробовал, правда с ADOTable

    В топку
  • Anatoly Podgoretsky © (20.08.08 16:37) [14]

    > в AdoQuery

    В топку
  • Anatoly Podgoretsky © (20.08.08 16:39) [15]

    > CursorLocation: = clServer

    Что на колени хочешь поставить сервер или клиента?
  • Anatoly Podgoretsky © (20.08.08 16:40) [16]

    > а DBGrid использую только для просмотра, и в конце не буду
    > его вообще использовать.

    Ну и зачем тогда вообще вопрос, какая разница если сетки нет.
  • stas © (20.08.08 16:59) [17]

    > Anatoly Podgoretsky ©   (20.08.08 16:39) [15]
    > Что на колени хочешь поставить сервер или клиента?


    Каким образом если это акцесс?
  • AlexeyK © (20.08.08 17:03) [18]

    > Ну и зачем тогда вообще вопрос, какая разница если сетки нет.


    Дело в том что к записи доступа нет после сохранения, сохранил - а ее нет!
    а сетка просто для просмотра!
  • stas © (20.08.08 17:05) [19]
    AlexeyK ©   (20.08.08 17:03) [18]
    ну, а ты как сохранил, в том же датасете(который к сетке подключен)  сделал POST?
 
Конференция "Базы" » При сохранении созданой записи она исчезает [D7, Access]
Есть новые Нет новых   [134473   +28][b:0][p:0.001]