Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.11;
Скачать: CL | DM;

Вниз

Изменение записи   Найти похожие ветки 

 
VS ©   (2003-07-17 16:47) [0]

Всем привет!
Такая проблемка - если юзер внес изменения в запись, то хочу его переспрашивать перед post-ом. Пробовал обрабатывать OnUpdateData, но оно возникает и при открытии таблицы и при простом переходе на другую запись. if Table1.Modified = True Then ... тоже не помогает :( Как бороть?
Очень надеюсь, что задал не очень идиотский вопрос :)


 
Sandman25 ©   (2003-07-17 16:58) [1]

Есть событие BeforePost


 
VS ©   (2003-07-17 17:13) [2]

Попробовал. Все равно, если в DBGrid переходишь на другую строчку (изменял-не изменял запись - по барабану), то генерится событие BeforePost


 
Sandman25 ©   (2003-07-17 17:20) [3]

Что используете для доступа?
В TQuery BeforePost вызывается только при изменении.


 
Sandman25 ©   (2003-07-17 17:20) [4]

В TTable тоже.


 
VS ©   (2003-07-17 17:33) [5]

Все понял. Я - ... (непечатное слово). У меня обрабатывается еще и BeforeScroll, где модифицируется запись. Поэтому и пост вызывается.


 
MsGuns ©   (2003-07-17 17:38) [6]

Давать узеру свободно редактить данные в гриде - ИМХО порочный метод. Все изменения через не db-aware контролы (обычно на отдельно открывемой форме или панельке) с кнопками "Записать", "Отменить", "Удалить". Если узер нажал "Записать", то просто делать и проверки и собственно изменения. Кстати, такая технология не зависит от того, какой метод исп-ся при отображении БД - табличного или запросного типа.

Кстати, узеру так проще и понятнее. В частности исключены "случайные" изменения (типа к Саше подошла Маша и легла мощной грудью на клаву, придавив BackSpase на поле Сашиного оклада - в рез-те оклад "потерял" пару нолей ;))


 
Johnmen ©   (2003-07-17 17:44) [7]

>MsGuns © (17.07.03 17:38)

Вот тут можно поспорить. :) Насчет порочности...
:)))


 
Sandman25 ©   (2003-07-17 18:05) [8]

MsGuns © (17.07.03 17:38)

При редактировании в гриде может быть и удобнее - легче найти нужную запись среди нескольких, не нужно переводить взгляд в панельку редактирования.
Для добавления мне тоже больше нравятся отдельные панельки/формы.


 
MsGuns ©   (2003-07-17 19:37) [9]

>Sandman25 © (17.07.03 18:05)
>При редактировании в гриде может быть и удобнее - легче найти нужную запись среди нескольких, не нужно переводить взгляд в панельку редактирования

А что мешает эту самую панельку показывать непосредственно под или на месте строки грида и даже в том же самом стиле (шрифты, цвет и т.д.) ? Тогда не надо будет "переводить взгляд"


 
Sandman25 ©   (2003-07-18 12:07) [10]

MsGuns © (17.07.03 19:37)
>А что мешает эту самую панельку показывать непосредственно под или на месте строки грида и даже в том же самом стиле (шрифты, цвет и т.д.) ? Тогда не надо будет "переводить взгляд"

А что мешает использовать грид в таком случае? Если панелька находится на месте грида и выглядит как грид?
Ради одной кнопки "Подтвердить изменения"? Так всегда можно перед записью запрашивать подтверждение, причем подставляя кнопку "Yes" прямо под указатель мыши :)


 
Lord Warlock ©   (2003-07-18 13:15) [11]

У DataSet есть свойство State. (dsInsert,dsEdit,dsBrowse)


 
MsGuns ©   (2003-07-18 14:16) [12]

>Sandman25 © (18.07.03 12:07)
>А что мешает использовать грид в таком случае? Если панелька находится на месте грида и выглядит как грид?
Ради одной кнопки "Подтвердить изменения"? Так всегда можно перед записью запрашивать подтверждение, причем подставляя кнопку "Yes" прямо под указатель мыши :)

Да ничего не мешает !! Все дело в том, чтобы прогораммно реагировать на начало изменений в записи. Как это делать - на вкус и цвет. Если в гриде, то надо писать обработчики на несколько событий того же датасета, а иногда и грида. Я просто, давая совет, исходил из следующих вещей:

1. Начало изменения только по спецюкоманде (кнопке) во избежание ситуаций "нечаянной" правки (Машина грудь :)).

2. Простота и универсальность подхода "от отдельной формы", т.к. мне может понадобиться обращаться к процедуре коррекции записи из разных мест программы и даже из разных программ.

3. Независимость интерфейса узера от физического состояния таблицы-объекта редактирования (особенно актуально для локальных БД, в т.ч. Парадокса)

Все - ИМХО.


 
vopros ©   (2003-07-18 14:40) [13]

>MsGuns © (18.07.03 14:16)
Полностью согласен. Только юзеров приходиться отучать насильно.ПРивыкли к Екселю.


 
MsGuns ©   (2003-07-18 15:07) [14]

>vopros © (18.07.03 14:40)
>Только юзеров приходиться отучать насильно.ПРивыкли к Екселю.

Детишек тоже долго приходится приучать мыть руки после посещения туалета ;)


 
Sandman25 ©   (2003-07-18 15:47) [15]

MsGuns © (18.07.03 14:16)

В принципе, уговорили :)
Но все же многое от задачи зависит. У меня жена работает тайписткой (забивает данные в компьютер), так у них в программе становишься в гриде куда-хочешь и сразу набиваешь новое значение, а при нажатии Enter происходит запись поля, переход на следующую запись и вход в режим ее редактирования. Получается очень удобно для быстрого ввода единственной редактируемой колонки во многих записях подряд.


 
Johnmen ©   (2003-07-18 15:51) [16]

>Sandman25 © (18.07.03 15:47)
>MsGuns © (18.07.03 14:16)
>В принципе, уговорили :)

Ни в коем случае не поддаваться на уговоры !
Оба подхода имеют ПОЛНОЕ ПРАВО на существование !



 
ZrenBy ©   (2003-07-18 16:01) [17]

>>Sandman25 ©

Ну так. Действительно, люди привыкшие работать в экселе,
хотят также действовать и в гриде.
Ну хотят, так хотят. Делаем.
Бамс !!!. Блин. А в екселе на нумпаде ставиться десятичный
разделитель, а в гриде дельфовом какая-то фигня.
Ну ладно. Делаем как говорит MsGuns ©, на лету меняем
что угодно на что угодно, делаем проверки, делаем ... э-э-э
и все довольны.


 
Johnmen ©   (2003-07-18 16:07) [18]

>ZrenBy © (18.07.03 16:01)

М-да... НамЛок то отключи...
И не надо приводить в качестве аргументов чью-либо привычки.


 
Sandman25 ©   (2003-07-18 16:12) [19]

Johnmen © (18.07.03 15:51)

MsGuns меня убеждал, что в большинстве случаев отдельная форма/панель "полезнее". Убедил. Но как я и написал, бывают и исключения, когда лучше использовать грид.

ZrenBy © (18.07.03 16:01)
Дело не только в привычке. В гриде все интуитивно даже для тех пользователей, которые первый раз увидели комп. То есть хочешь изменить поле - иди и изменяй, зачем еще какую-то кнопку жать (особенно если ее еще и не заметили)?


 
Johnmen ©   (2003-07-18 16:20) [20]

>Sandman25 © (18.07.03 16:12)

Причем приведенный тобой пример самый убедительный, я бы даже сказал, "классический".
И не стал бы я говорить "исключения". Это не исключения, а РЕАЛЬНЫЙ равноправный метод.


 
Sandman25 ©   (2003-07-18 16:22) [21]

Johnmen © (18.07.03 16:20)

В принципе, уговорили :)

PS. См. первую фразу в Sandman25 © (18.07.03 15:47)



Страницы: 1 вся ветка

Текущий архив: 2003.08.11;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.017 c
6-33235
Кен
2003-06-02 01:19
2003.08.11
Как заслать текст в один из фрэймов ВэбБраузера ?


4-33397
АТ
2003-05-29 13:01
2003.08.11
Надо нажимать на кнопку в приложении из другого приложения.


8-33227
Lister
2003-04-16 16:26
2003.08.11
Анимированная форма


6-33237
Fants
2003-06-03 13:07
2003.08.11
TNMHTTP


1-33180
tiam
2003-07-28 09:44
2003.08.11
проверить, что компьютер не используется