Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
04.01.2016, 05:51
|
|||
---|---|---|---|
Рекордсет и ошибки в базе MS SQL |
|||
#18+
Доброго. Коллеги, написал процедуру на акцессе + сторку на ms sql. Access 2010/MS SQL 2012 Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
подразумевается, что я передам на сервер значение и вернется мне рекордсет, а потом из него одно значение. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
declare @ret int; exec @ret = dbo.p_myproc_delete @id =2; select @ret as ret; И, соответственно, с сервера я получаю через Return коды возврата. И все было хорошо ровно до того, как попался foreingn key. Я пытаюсь удалять, обрабатываю ошибку 547 и получаю код возврата -400, мечтая обработать его в акцессе. Однако вместе с ним выдается и ошибка на сервере, Msg 547, Level 16, State 0, Procedure p_myproc_delete, Line 13 The DELETE statement conflicted with the REFERENCE constraint ссылки на мои таблиц The statement has been terminated. Как результат - генерится ошибка в моей функции OpenRecordset. И вот вопрос - как эту ошибку на сервере корректно обрабатывать и где? Либо переписать код на сервере на try - catch (как?) либо оставить как есть, но изменить код акцесса(как)? Заранее спасибо вам за ответы. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
04.01.2016, 09:08
|
|||
---|---|---|---|
|
|||
Рекордсет и ошибки в базе MS SQL |
|||
#18+
Если мечтаешь обрабатывть ошибки на Аксе, то и обрабатывай на нем: Как-то так Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
ЗЫ: Писал по памяти, могут быть неточности. Но идея, надеюсь, понятна ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.01.2016, 02:59
|
|||
---|---|---|---|
Рекордсет и ошибки в базе MS SQL |
|||
#18+
Rivkin Dmitry, Нет, это не то. По религиозно-политическим соображением я никогда не работаю с sql сервером напрямую, только через сторки. И плюс у меня DAO. И как показали эксперименты, с ним такое не проходит. Хотя, может, я и не так экспериментировал. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.01.2016, 03:40
|
|||
---|---|---|---|
Рекордсет и ошибки в базе MS SQL |
|||
#18+
Users, Сам себе отвечаю, если кто-то будет искать. Для DAO надо вот так коллекцию ошибок обрабатывать: For Each oErr In DBEngine.Errors Next ... |
|||
:
Нравится:
Не нравится:
|
|||
|
07.01.2016, 09:15
|
|||
---|---|---|---|
|
|||
Рекордсет и ошибки в базе MS SQL |
|||
#18+
UsersRivkin Dmitry, Нет, это не то. По религиозно-политическим соображением я никогда не работаю с sql сервером напрямую, только через сторки. И плюс у меня DAO. И как показали эксперименты, с ним такое не проходит. Хотя, может, я и не так экспериментировал. Ну, ежели религиозные соображнгия, тогда продолжай мучаться. Я, как раз, без всякой религии, исходя из логики (как мне кажется), предпочитаю искать наиболее эффетивные решения. С как можно меньшим количеством заморочек. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
10.01.2016, 18:48
|
|||
---|---|---|---|
Рекордсет и ошибки в базе MS SQL |
|||
#18+
Rivkin Dmitry, Вот если ты ищешь наиболее эффективное решение при работе с sql сервером - то забудь вообще про прямую работу с таблицами. Только сторки и ничего большего. Ну, а если "эффетивные" решения - то можно, да, и права юзерам давать на таблицы и забывать про то, что процедуры прекомпилятся и так далее. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
18.01.2016, 16:35
|
|||
---|---|---|---|
|
|||
Рекордсет и ошибки в базе MS SQL |
|||
#18+
Users, Мне кажется, тобою неправильно понято правило недопускать юзера напрямую в базу данных. На твоем же примере, из того куска кода, который приведен в первом топике: весь смысл заморочки заключается только в том, что есть опасность удаления вторичного ключа. Но это означает, что юзеру такие права даны. Он может это делать! Так почему бы не проверить наличие записей под этим ключем любыми другими доступными способами? И не заморачиваться с такими сложными выворотами? Уж простой селект, без возврата конкретных данных, а только на предмет наличия присутствия (или отсутствия точнее) можно делать любому юзеру. Но даже если и это нельзя, то тебе, как супервайзеру можно? А юзер код твой не увидит. С другой стороны, хочешь-не хочешь, а права юзеру определять надо. И в пределах своих прав он (юзер) вправе делать то, что ему позволяет делать программист. (Под незримым присутствием оного) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
18.01.2016, 18:27
|
|||
---|---|---|---|
Рекордсет и ошибки в базе MS SQL |
|||
#18+
Users, религия, говоришь, не позвляет? А ODBCDirect используешь? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=45&tablet=1&tid=1614055]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 154ms |
0 / 0 |