-
DiamondShark © (14.05.08 14:19) [198]
> И пугать пользователя ексепшеном со страшными инопланетянскими > словами?
В приложении как бы Exception-ы обычно перехватываются и представляются на понятном машинистке языке. При запросах таки да, на языке клиента СУБД ругаться будет.
-
Пользователи - они разные.
У одного кладовщица со средним. У другого служащий банка с двумя институтами. И приоритеты в их работе разные.
И конторы у них разные: дисциплина, требования, ответственность и т.д. Поменяй в их программных инструментах подходы при программировании - обе взвоют - неудобно!! Вот вы про разных и спорите.
Я лично не вижу противоречий в двух подходах. И тот и другой вполне годны.
-
> Игорь Шевченко © (14.05.08 14:40) [200]
Оракла у меня нет, но MS SQL для следующего случая:
create table foo(date1 datetime, date2 datetime, constraint CK_VALID_DATE check(date2>date1))
insert into foo values('20050101', '20050101')
Сообщает: Server: Msg 547, Level 16, State 1, Line 1 INSERT statement conflicted with TABLE CHECK constraint 'CK_VALID_DATE'. The conflict occurred in database 'ExPress', table 'foo'.
Это в Query Analizer.
При исполнении той же команды в Дельфи через ADOConnection получаю EOleException.
Предложите способ получить из этой информации сообщение для секретарши: "Дата 2 должна быть больше Даты 1".
Способ должен требовать не больше программного кода, и этот код должен быть не сложнее, не тормознее и не трудночитаемее, чем код:
if DateEdit2.Value <= DateEdit1.Value then raise EInvalidInput.Create('Дата 2 должна быть больше Даты 1')
-
DiamondShark © (14.05.08 15:28) [202]
> Способ должен требовать не больше программного кода, и этот > код должен быть не сложнее, не тормознее и не трудночитаемее, > чем код: > > if DateEdit2.Value <= DateEdit1.Value > then raise EInvalidInput.Create('Дата 2 должна быть больше > Даты 1')
С такими условиями не предложу. Хочется дублировать проверку данных на клиенте - бога ради, никто не препятствует.
Более сложный код предложить могу.
-
> Более сложный код предложить могу.
А можно? Интересно же.
> Хочется дублировать проверку данных на клиенте - бога ради, > никто не препятствует.
Да просто как-то не кошерно напрягать сервер данными, которые заведомо будут отвергнутыми.
На деле приходится всё вместе делать: и превалидацию, и декларативную целостность на сервере, и обработку исключений с приведением к машинисткочитаемости. :(
-
DiamondShark © (14.05.08 16:37) [204]
> А можно? Интересно же.
Для оракла в свое время напряглись и сделали в приложении, по номеру сообщения и имени CONSTRAINT, про MS SQL ничего не могу сказать, так как не в курсе, что он возвращает при EOleException
> Да просто как-то не кошерно напрягать сервер данными, которые > заведомо будут отвергнутыми.
Дык оно некошерно, но если кроме ввода через форму существуют еще какие-то методы ввода, то все одно придется читать сообщения на другом языке.
> На деле приходится всё вместе делать: и превалидацию, и > декларативную целостность на сервере, и обработку исключений > с приведением к машинисткочитаемости.
И это тоже
-
> Игорь Шевченко © (14.05.08 16:42) [205] > Для оракла в свое время напряглись и сделали в приложении, > по номеру сообщения и имени CONSTRAINT
Я так и думал ;)
-
>[188] Anatoly Podgoretsky © (2008-05-14 13:25:00) нет, триггер должен бережно сохранять удалённые записи для последующего восстановления, если что. ну, и заодно записывать в логи, кто это был такой умный, кого премии лишать.
--- Understanding is not required. Only obedience.
|