Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизНабор редактируется в гриде. Найти похожие ветки
← →
DROWSY (2010-03-18 18:59) [0]Вводимое в поле значение должно быть больше
"верхнего и "левого".
1. Где лучше проверять корректность вводимого значения на сервере или
клиенте?
2. На каком событии перехватывать?
← →
Anatoly Podgoretsky © (2010-03-18 19:05) [1]> DROWSY (18.03.2010 18:59:00) [0]
Что такое левое и верхнее и знаком ли сервер с этими понятиями?
← →
Юрий Зотов © (2010-03-18 19:07) [2]В базу можно влезть и другим клиентом, поэтому проверку лучше делать на сервере. Перехватывать можно в триггере.
← →
DROWSY (2010-03-18 19:51) [3]
> Anatoly Podgoretsky © (18.03.10 19:05) [1]
1. Если набор из таблицы:
x11, x12, x13, x14 ,x15
x21, x22, x23, x24 ,x25
x31, x32, x33, x34 ,x35
то,
Для каждого вводимого xIJ д.б. xI, J-1("левое") <= xIJ и xI-1 ,J ("верхнее") <= xIJ
2. Вопрос в том, "объяснять" ли эти правила серверу,
чтобы проверку вводимых значений проверять при передаче на сервер,
или проверять раньше, например на гриде?
> Юрий Зотов © (18.03.10 19:07) [2]
Клиент один.
Для обработки в триггере, наверное, надо будет в триггер помещать процедуру с параметрами? Так?
← →
Медвежонок Пятачок © (2010-03-18 20:02) [4]это у тебя один. а в соседней комнате есть второй, в котором проверка не запрограммирована
← →
Медвежонок Пятачок © (2010-03-18 20:03) [5]например это микрософт ёксель или sqlexplorer делфийский
← →
DROWSY (2010-03-18 20:10) [6]
> Медвежонок Пятачок © (18.03.10 20:02) [4]
Программа пишется под локальный сервер и одного клиента.
> Медвежонок Пятачок © (18.03.10 20:03) [5]
Delphi 6, Firebird 1.5
← →
Anatoly Podgoretsky © (2010-03-18 20:30) [7]> DROWSY (18.03.2010 20:10:06) [6]
Создай локальный массив и рули им.
← →
Jeer © (2010-03-18 20:34) [8]
> DROWSY (18.03.10 20:10) [6]
>
>
> > Медвежонок Пятачок © (18.03.10 20:02) [4]
>
> Программа пишется под локальный сервер и одного клиента.
>
Не слушай апологетов исключительно серверной бизнес-логики.
Ни одна, солидная по архитектуре, база данных еще не была польностью нормализована, т.к. это теоретический изыск.
Точно также и размещение исключений на ввод данных может быть выполнено где-угодно, а должно выполняться там, где удобно разработчику, с учетом известных ему архитектурных ограничений.
← →
Jeer © (2010-03-18 20:37) [9]
> Медвежонок Пятачок © (18.03.10 20:02) [4]
>
> это у тебя один. а в соседней комнате есть второй, в котором
> проверка не запрограммирована
> <Цитата>
>
> Медвежонок Пятачок © (18.03.10 20:03) [5]
>
> например это микрософт ёксель или sqlexplorer делфийский
Вот не надо ля-ля..
Если каждая уборщица получит доступ к заветной кнопке..
В общем, динозавры еще много пожили, прежде чем откинуться.
← →
DROWSY (2010-03-18 20:47) [10]
> Jeer © (18.03.10 20:34) [8]
Если на уровне грида, то в TCustomDBGrid.OnDrawDataCell проверку делать?
← →
Jeer © (2010-03-18 21:14) [11]Могу сказать свое ИМХО
Редактирование в DBGrid-e - зло
← →
MsGuns © (2010-03-18 21:23) [12]>Юрий Зотов © (18.03.10 19:07) [2]
>проверку лучше делать на сервере. Перехватывать можно в триггере.
Очень спорное решение. Проверку корректности вводимых на клиенте данных без крайней необходимости не следует "поручать" серверу. А уж задействовать для этой цели триггер вообще мина :)
← →
MsGuns © (2010-03-18 21:24) [13]>Jeer © (18.03.10 21:14) [11]
>Редактирование в DBGrid-e - зло
Тут проблема вовсе не в гриде :)
← →
DROWSY (2010-03-18 21:26) [14]
> Jeer © (18.03.10 21:14) [11]
Почему?
Именно о редактировании Ваше ИМХО или о проверке корректности вводимых значений?
Что Вы используете?
← →
Jeer © (2010-03-18 21:40) [15]
> DROWSY (18.03.10 21:26) [14]
> Почему?
> Именно о редактировании Ваше ИМХО или о проверке корректности
> вводимых значений?
> Что Вы используете?
Редактирование в DBAware компонентах - это начальная, учебная практика.
При более/менее серьезных объемах редактирования - отдельные функциональные компоненты ввода ( грубо - текст, цифра, даты, время )
Там же, в окне ввода, производится проверка корректности данных на уровне каждого компонента или окончательного Ok от пользователя.
В последнем же случае - уже могут участвовать серверные проверки.
← →
DROWSY (2010-03-18 22:15) [16]
> Jeer © (18.03.10 21:40) [15]
Спасибо.
← →
Игорь Шевченко © (2010-03-18 22:24) [17]Jeer © (18.03.10 21:40) [15]
> Редактирование в DBAware компонентах - это начальная, учебная
> практика
А мы и не знали...редактируем. Где стенка, об которую нам убиться ?
← →
Германн © (2010-03-19 01:20) [18]
> А мы и не знали...редактируем. Где стенка, об которую нам
> убиться ?
Такая стенка точно есть! Но вот точное её расположение пока неизвестно. Увы.
:)
← →
Юрий Зотов © (2010-03-19 01:29) [19]> MsGuns © (18.03.10 21:23) [12]
> Очень спорное решение.
Возможно. Но обоснование я привел. Может, и спорное - но привел. А вот серьезных возражений не услышал. Потому что два ничем не подкрепленных утверждения:
> Проверку корректности вводимых на клиенте данных без крайней
> необходимости не следует "поручать" серверу. А уж задействовать для
> этой цели триггер вообще мина
считать серьезными возражениями никак не могу. До тех пор, пока они не будут хоть как-то обоснованы.
← →
DROWSY (2010-03-19 01:41) [20]Я итак запутанный был, а вы меня окончательно запутали...
← →
Германн © (2010-03-19 02:15) [21]
> DROWSY (19.03.10 01:41) [20]
>
> Я итак запутанный был, а вы меня окончательно запутали..
> .
>
"Учись студент"! (с)
:)
← →
Германн © (2010-03-19 02:35) [22]Для начала объясни сей бред.
> DROWSY (18.03.10 19:51) [3]
>
>
> > Anatoly Podgoretsky © (18.03.10 19:05) [1]
>
>
> 1. Если набор из таблицы:
>
>
Из какой таблицы? Откуда сия взялась?
← →
DROWSY (2010-03-19 02:43) [23]Таблица, в которой только целочисленные поля.
Набор из такой таблицы нужно редактировать, проверяя корректность новых значений.
← →
Германн © (2010-03-19 03:05) [24]
> DROWSY (19.03.10 02:43) [23]
Эта таблица имеет хоть какое-то отношение к Базам Данных?
Если да, то какое?
← →
DROWSY (2010-03-19 03:12) [25]Это таблица базы данных СУБД Firebird 1.5
← →
Германн © (2010-03-19 03:15) [26]Тогда я пас.
← →
Sergey13 © (2010-03-19 08:44) [27]> [25] DROWSY (19.03.10 03:12)
Ты редактируешь/вводишь так ВСЮ таблицу или какой то ограниченный набор данных? Что это в предметной области?
← →
MsGuns © (2010-03-19 09:12) [28]>Юрий Зотов © (19.03.10 01:29) [19]
>До тех пор, пока они не будут хоть как-то обоснованы.
Вот хотя бы одно обоснование.
Запись БД состоит из N полей-реквизитов. В любом из них на клиенте может быть допущена
ошибка. Если проверка выполняется на сервере, то надо эти ошибки как-то конкретизировать "клиенту", для чего потребуется написать много кода в ХП. Кроме того, затруднительно диагностировать сразу ВСЕ ошибки, а не первую встретившуюся. Ну и главное, пожалуй: ошибки могут быть семантическими и "привязанными" к конкретной реализации клиента (задачи). Т.е. одному "клиенту" можно внести отрицательное значение, а другому - нет. Как это гармонично разрулить на сервере, не загромождая код сиквеля и привязывая жостко сервер к клиенту ?
Ну и при работе с удаленным сервером такая технология вообще тормознутая на всю голову.
Но какую именно технологию выбрать зависит, конечно, от конкретной ситуации.
← →
MsGuns © (2010-03-19 09:18) [29]Вдогонку пример из жизни.
Есть сервер, на котором "крутится" производственная БД, в которой есть к примеру состав изделий. У этой базы много задач-клиентов (Оперативное управление, Подготовка производства, Отгрузка продукции, Логистика и т.д. и т.п.), которые активно используют этот самый состав, в том числе и корректируют его какждый по-своему, в рамках своей "компетенции".
"Строить" сервер под каждую задачу (имеется в виду проверять данные в полном объеме) сложно, да и не нужно. На сервере выполняются лишь"системные" проверки на целостность. "Логика" же на "совести" приложений-клиентов.
← →
Jeer © (2010-03-19 23:43) [30]
> Игорь Шевченко © (18.03.10 22:24) [17]
>
> Jeer © (18.03.10 21:40) [15]
>
>
> > Редактирование в DBAware компонентах - это начальная,
> учебная
> > практика
>
>
> А мы и не знали...редактируем. Где стенка, об которую нам
> убиться ?
Рядом с тобой - только повернись.
← →
Германн © (2010-03-20 02:59) [31]
> Рядом с тобой - только повернись.
>
:)
http://www.aviaport.ru/digest/2008/10/02/158604.html
← →
DROWSY (2010-03-29 22:42) [32]Если перехватывать ошибку ввода данных в BeforePost, то как можно сделать так, чтобы сохранился режим dsEdit или dsInsert, то есть чтобы Post не проходил?
← →
Amoeba_ (2010-03-29 23:10) [33]
> как можно сделать так, чтобы сохранился режим dsEdit или
> dsInsert, то есть чтобы Post не проходил?
Вызовом процедуры Abort
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.078 c