Выдача человеческих собощений

Гость74
Дата: 17.10.2006 12:33:03
Есть у меня такая конструкция...
try
 ....
 MyADOSP.ExecProc;
except
 CheckADOError ( MyADOSP.Connection);
end;

В CheckADOError написано примерно следующее
Case ADOConnection.Errors[i].NativeError of
     170, 207: Str := 'Неправильно записан SQL оператор';
     229: Str := 'Вы не имеете прав для выполнения этой операции';
     233, 515: Str := 'Не заполнено одно из полей';
     547: Str := 'Нарушение ссылочной целостности';
     2627, 2601: Str := 'Нарушение уникальности записи';
     50000:  Str := ADOConnection.Errors[i].Description;
      ...
     end;

Т.е. допустим в ХП я втавляю в таблицу новую запись с ключом, который уже есть. В результате пользователь увидит "Нарушение уникальности записи".
Причем в какой бы справочник он не вставлял это, все равно бутет одно и тоже сообщение, т.к везде ХП вызываются так, как указано выше.
Собственно вопрос. Как народ делает обработку таких ошибок? Заморачивается ли для каждого объета выводить что-то более понятное типа "Пользователь с таким таб номером уже есть", "Такой инвентарный номер уже есть", если да, то как покрасивей это реализовать?
VirusXP
Дата: 17.10.2006 12:43:00
делай output параметр в хп и будет тебе щястье в жызни:)
pkarklin
Дата: 17.10.2006 12:52:58
автор
Заморачивается ли для каждого объета выводить что-то более понятное типа "Пользователь с таким таб номером уже есть", "Такой инвентарный номер уже есть", если да, то как покрасивей это реализовать?


Проверку реализовывать в самое хп с выдачей "человеческого сообщения об ошибке".
kontr
Дата: 18.10.2006 11:01:49
Какая СУБД?
Если MsSQL - помещай сообщение в raiserror.
Гавриленко Сергей Алексеевич
Дата: 18.10.2006 11:19:54
Если Вы считаете, что сообщение "Нарушение ссылочной целостности" лучше нативного, то это далеко не так. Пользователю оно ничего не скажет, зато скроет от разработчика то, что предостаило бы нативное.
Гавриленко Сергей Алексеевич
Дата: 18.10.2006 11:21:38
"Неправильно записан SQL оператор. Разработчик накосячил, а тестеры проглядели"
Вот это пользователи оценили бы.
Di_LIne
Дата: 18.10.2006 11:26:46
Гавриленко Сергей Алексеевич
"Неправильно записан SQL оператор. Разработчик накосячил, а тестеры проглядели"
Вот это пользователи оценили бы.

Можно добавить: - Требуйте назад деньги!
Гость74
Дата: 18.10.2006 15:28:02
Гавриленко Сергей Алексеевич
Если Вы считаете, что сообщение "Нарушение ссылочной целостности" лучше нативного, то это далеко не так. Пользователю оно ничего не скажет, зато скроет от разработчика то, что предостаило бы нативное.


Моим пользователям ничего не скажет и запись "Вы не можете удалить эту модель, т.к. она используется там-то", если пользователь дурак. Все равно прибежит к программисту спрашивать "А почему?" Проверенно.
Для умных фраза "Нарушение ссылочной целостности" подробно разьеснена в хелпе.
Главное в этом деле, чтоб программа на английски ничего не писала, хотябы в первых двух строчках сообщения... Люди как-то сразу пугаются...
Нативная информация выводится у мене ниже, под русским сообщением, с заголовком "Информация для программиста"
Гавриленко Сергей Алексеевич
Дата: 18.10.2006 16:38:45
Гость74
Моим пользователям ничего не скажет и запись "Вы не можете удалить эту модель, т.к. она используется там-то", если пользователь дурак. Все равно прибежит к программисту спрашивать "А почему?" Проверенно.
Для умных фраза "Нарушение ссылочной целостности" подробно разьеснена в хелпе.
Главное в этом деле, чтоб программа на английски ничего не писала, хотябы в первых двух строчках сообщения... Люди как-то сразу пугаются...
Нативная информация выводится у мене ниже, под русским сообщением, с заголовком "Информация для программиста"

Мои пользователи уже по названиям констрейнтов научились определять, что они не так делают, и хоть бы кто пожаловался. Тока по логам смотрю и правлю.
По сабжу: мое имхо, что все, что не было предусмотрено на этапе проектирования/кодирования достаточно предварять русскими словами "Произошла ошибка, позвоните в службу поддержки. Текст ошибки такой-то" или что-то в этом духе.( Соответсвенно, все, что можно собрать, в т.ч. и стек вызовов, в писать в лог).