|
|
|
И снова про русский sysmessages
|
|||
|---|---|---|---|
|
#18+
Уважаемые коллеги! Просмотрел архив форума по столь животрепещущей теме, очень много полезных советов, но к сожалению все они больше похожи на рукопашную. Согласитесь перелопачивать таблицу системных сообщений, в которой не меньше 3000 записей, не барское дело, а обрабатывать их на клиенте и подавно. Подскажите, есть ли какой нибудь системный подход к этой проблеме. Наверняка ведь кто нибудь уже всё перевёл и выложил на интернет соответствующий скрипт или горячо любимый майкрософт выпустил соответствующий патч. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2002, 11:30:36 |
|
||
|
И снова про русский sysmessages
|
|||
|---|---|---|---|
|
#18+
Переводы системных сообщений... Не надоело? Юзверям будешь показывать? Не поймут всё равно. Добьёшься только того, что к тебе будут прибегать с квадратными глазами после прочтения сообщения типа "Невозможно добавить дублирующую ключевую строку в объект тра-ля-ля с уникальным индексом тра-ля-ля" (Cannot insert duplicate key row in object '%.*ls' with unique index '%.*ls'.) Им надо показывать удобочитаемые сообщения, обрабатывая ошибку по её номеру, который что на русском, что на английском одинаков до безобразия. А сам будешь читать, так почти 100% риск запутаться. Я как-то с дури заказал экзамен по WinNT4Wrkst на русском... Намучился переводя с русского на английский, чтобы понять о чём речь. Иллюстрация: при переводе MS-DOS на русский язык системное сообщение "Abort, retry or ignore?" было переведено как "Нефиг, нафиг или пофиг?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2002, 12:01:54 |
|
||
|
И снова про русский sysmessages
|
|||
|---|---|---|---|
|
#18+
Ну с duplicate key row согласен не поймут. А вот "Cannot insert the value NULL into column 'name', table 'serv.dbo.table'; column does not allow nulls. UPDATE fails." "Невозможно установить пустое значение в поле 'name', таблицы 'serv.dbo.table'; пустое значение в поле недопустимо. ОБНОВЛЕНИЕ не состоялось." после пяти раз у юзера, если он конечно не совем потерянный, обморок вызывать не будет, да и причину, из-за которой у него не сохраняется форма, немого пояснит. Обработка ошибок денег стоит, а заказчики их платить не любят. Так вот и хочется сделать дёшево и сердито. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2002, 12:50:39 |
|
||
|
И снова про русский sysmessages
|
|||
|---|---|---|---|
|
#18+
Пользователю можно выдовать только два сообщения: 1. Ты что, ОХРЕНЕЛ!!! 2. Хватай пиво и беги за админом!!! :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2002, 16:29:48 |
|
||
|
И снова про русский sysmessages
|
|||
|---|---|---|---|
|
#18+
Может ему это, того ... ничего не выдавать то, а ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2002, 16:42:07 |
|
||
|
И снова про русский sysmessages
|
|||
|---|---|---|---|
|
#18+
To: akuz Жуткую вещь просто описываете. У вас что пользователь из формы прямо на сервер пишет, без какого-либо промежуточного слоя? Вобще-то ошибки принято исправлять , а не пользователю показывать. Их можно в лог писать, а пользователям действительно сообщать только, что действие обломилось. Имеются в виду ошибки синтаксиса, отсутствие таблиц/процедур на сервере и т.п. А то, что было перечислено, ошибками не является, так как легко может быть выявлено и показано пользователю до того, как сервер начнет это обрабатывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2002, 05:08:52 |
|
||
|
И снова про русский sysmessages
|
|||
|---|---|---|---|
|
#18+
все тихо должно писаться в лог ... а потом тихо исправляться ... а пользователю временно можно и соврать ... или сообщение о плохой погоде выдать ... РАБОТАТЬ НУЖНО ПРОСТО И ВЕСЕЛО!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2002, 08:05:24 |
|
||
|
И снова про русский sysmessages
|
|||
|---|---|---|---|
|
#18+
To: Sergey Vinogradov Промежуточный слой простой - сторед просида в которую через параметры передаются значения с адошного клиента. В начале просиды открывается транзакция и, если нет ошибок, в конце она закрывается, а если ошибка произошла то откатывается и вызывается исключение. ОК назовём это не ошибками, а нарушением целостности данных, попросту различные констрейнты, которые в очень удобной форме можно поддерживать на сервере SQL, вместо того, чтобы проверять на клиенте во всех возможных местах. Если же пользователя просто обламывать, то он тут-же побежит к админу, а тот к разработчику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2002, 09:49:13 |
|
||
|
И снова про русский sysmessages
|
|||
|---|---|---|---|
|
#18+
To akuz можно поддерживать на сервере SQL, вместо того, чтобы проверять на клиенте во всех возможных местах. Так наверное процедура - это и есть сервер, откуда не вызови :) Обычно при любой ошибке пишется что-то типа: "Ошибка при изменении (удалении или чего еще)" И все, что можно и так проверить, проверяется до начала транзакции, тогда и ошибка конкретная выдается - нет наименования, например. Системные сообщения наверно уж не для юзеров сделаны, а для программеров :))))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2002, 10:31:34 |
|
||
|
И снова про русский sysmessages
|
|||
|---|---|---|---|
|
#18+
To: akuz SP есть - уже лучше. Там и проверять, и как правильно заметил tigra, до начала транзакции. А в на клиенте все равно можно кое-что продублировать - чтоб он не MessageBox-ами сразу кидался, а допустим, поля/кнопки подсвечивал/блокировал и т.п. Юзабилити, так сказать. Хотя, конечно, смотря какой клиент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2002, 11:16:54 |
|
||
|
И снова про русский sysmessages
|
|||
|---|---|---|---|
|
#18+
А есть ещё такая штучка - "ограничения" называется, её даже к отдельному полю можно прикрутить... Так вот, если милый юзарь захочет к примеру в поле даты своё имя любимое прописать, ему сразу можно по мозгам дать, фразой типа: "Ты что братишка творишь, документацию поди почитай!!!"... Не гневитесь на мою иронию, я с сегодняшнего дня в отпуске, т.ч. мыслить по серьёзному не получается :)) Кстати, в реляционной теории очень много фичей предусмотрено, именно для того, что бы ошибки пользователей гасить ещё на подлёте, вспомните хотя бы того же Дейта... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2002, 12:11:15 |
|
||
|
И снова про русский sysmessages
|
|||
|---|---|---|---|
|
#18+
To: Sergey Vinogradov Это ж сколько строчек кода надо написать вместо! On Error GoTo err_check 'Вызов процедуры err_check: MsgBox err.Description, vbCritical err.Clear А зачем тогда нужны констрейнты, проверил всё на клиенте и вперёд! Нет уж, за сиквел сервер работать не собираюсь. Лучше подскажите как из сообщения параметры вытащить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2002, 14:01:24 |
|
||
|
И снова про русский sysmessages
|
|||
|---|---|---|---|
|
#18+
Вот упрямый какой. :) Если в процедуре написать Код: plaintext 1. 2. а затем сделать все тот же On Error GoTo ..., что появится в том MessageBox-е? Все равно все ограничения бизнес-логики на констрейнты тяжело посадить, а в процедуре им самое место (и как раз все будет в одном месте). А sysmessages я сам года три назад, когда был молодой и такой же глупый, переводил на русский ... Сократом. :) Сразу же и обнаружил, что это совершенно бессмысленно и нормальной обработки ошибок нисколько не заменяет. Так что тот sysmessages был благополучно похерен через пару месяцев при переезде на другой сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2002, 05:09:42 |
|
||
|
И снова про русский sysmessages
|
|||
|---|---|---|---|
|
#18+
Короче говоря, получается, способа использовать системные сообщения для обработки ошибок в TSQL не существует. Всё что можно добиться от сикуля - это код ошибки. "Невозможно вставить NULL в какое-то поле какой-то таблицы." Даже текст сообщения с проставленными параметрами можно увидеть только на клиенте. Так что девелопер бери лопату и копай! Или я что-то не так понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2002, 11:19:31 |
|
||
|
И снова про русский sysmessages
|
|||
|---|---|---|---|
|
#18+
Все верно. Такая уж у нас работа. :) Что-то я слышал про то, что на констрейны можно вешать собственные сообщения, но как это сделать, понятия не имею. В BOL про это ни слова. Может народ подскажет, можно таки или нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2002, 12:06:56 |
|
||
|
И снова про русский sysmessages
|
|||
|---|---|---|---|
|
#18+
Есть правда один способ, вытащить сообщение с параметрами из ADO, а затем запихнуть обратно в сикуль в какую нибудь специальную просиду типа error_check. Сравнить с маской из sysmessages по коду ошибки, вычленить параметры и спокойненько их обрабатывать. А в конце вернуть через параметр подготовленную строку. В этом случае вся обработка будет в одном месте и на сикуле. А в бейсюке останется: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Согласитесь неплохо. Но всё-таки русский sysmessages было бы проще :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2002, 19:33:15 |
|
||
|
И снова про русский sysmessages
|
|||
|---|---|---|---|
|
#18+
Ну ты посмотри, а может SQL сервер заставить и базу самому разрабатывать, вот хорошо, только программер тогда зачем? :))) Если хочешь sysmessages юзерам показывать, то тогда представь, что тебе, как программеру, разработчики сервака (микрософтовские) решили не показывать sysmessages - на фиг, программер сам разберется, а решили показывать типа того: В объекте № 123 на странице данных №345 произошла ошибка №678 по причине прерывания №890. В случае непонятия обращайтесь в службу поддержки MS Ну попугаешься первые пол-года, потом все сообщения запишешь на листочек, чтобы потом не звонить лишний раз, и будешь сверять, чего такое произошло. :))))) Я тоже пытался что-нибудь сделать с sysmessages, но понял, что если юзер это увидит, то инфаркт будет у него, а нас всех - программеров - начальство повешает :) Нет, есть еще способ - можно констрайнам давать имена по-русски, типа create constrain "Не указан год рождения пациента" on table и т.д. Оно так и будет выдаваться, с этим именем. Но это маразм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2002, 10:52:11 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32043100&tid=1821031]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
38ms |
get topic data: |
7ms |
get forum data: |
5ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 325ms |

| 0 / 0 |
