Конференция "Прочее" » override or overload ?
 
  • Игорь Шевченко © (14.05.08 14:40) [200]
    DiamondShark ©   (14.05.08 14:19) [198]


    > И пугать пользователя ексепшеном со страшными инопланетянскими
    > словами?


    В приложении как бы Exception-ы обычно перехватываются и представляются на понятном машинистке языке. При запросах таки да, на языке клиента СУБД ругаться будет.
  • boriskb © (14.05.08 15:06) [201]
    Пользователи - они разные.

    У одного кладовщица со средним.
    У другого служащий банка с двумя институтами.
    И приоритеты в их работе разные.

    И конторы у них разные: дисциплина, требования, ответственность и т.д.
    Поменяй в их программных инструментах подходы при программировании - обе взвоют - неудобно!!
    Вот вы про разных и спорите.

    Я лично не вижу противоречий в двух подходах. И тот и другой вполне годны.
  • DiamondShark © (14.05.08 15:28) [202]

    > Игорь Шевченко ©   (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')
  • Игорь Шевченко © (14.05.08 15:45) [203]
    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]

    > Более сложный код предложить могу.

    А можно? Интересно же.


    > Хочется дублировать проверку данных на клиенте - бога ради,
    >  никто не препятствует.

    Да просто как-то не кошерно напрягать сервер данными, которые заведомо будут отвергнутыми.

    На деле приходится всё вместе делать: и превалидацию, и декларативную целостность на сервере, и обработку исключений с приведением к машинисткочитаемости.
    :(
  • Игорь Шевченко © (14.05.08 16:42) [205]
    DiamondShark ©   (14.05.08 16:37) [204]


    > А можно? Интересно же.


    Для оракла в свое время напряглись и сделали в приложении, по номеру сообщения и имени CONSTRAINT, про MS SQL ничего не могу сказать, так как не в курсе, что он возвращает при EOleException


    > Да просто как-то не кошерно напрягать сервер данными, которые
    > заведомо будут отвергнутыми.


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


    > На деле приходится всё вместе делать: и превалидацию, и
    > декларативную целостность на сервере, и обработку исключений
    > с приведением к машинисткочитаемости.


    И это тоже
  • DiamondShark © (14.05.08 17:01) [206]

    > Игорь Шевченко ©   (14.05.08 16:42) [205]
    > Для оракла в свое время напряглись и сделали в приложении,
    >  по номеру сообщения и имени CONSTRAINT

    Я так и думал ;)
  • ketmar © (14.05.08 21:02) [207]
    >[188] Anatoly Podgoretsky © (2008-05-14 13:25:00)
    нет, триггер должен бережно сохранять удалённые записи для последующего восстановления, если что. ну, и заодно записывать в логи, кто это был такой умный, кого премии лишать.

    ---
    Understanding is not required. Only obedience.
 
Конференция "Прочее" » override or overload ?
Есть новые Нет новых   [134435   +13][b:0.001][p:0]