|
|
|
Как при ошибке определить ее тип?
|
|||
|---|---|---|---|
|
#18+
У меня в таблице составной ключ из 2-х полей. Как при вводе записей юзером определить , что он ввел уже существующий внешний ключ (ключ состоит из абонентского номера и названия города). Т.е как опеределить тип ошибки дублирования ключа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2004, 18:34 |
|
||
|
Как при ошибке определить ее тип?
|
|||
|---|---|---|---|
|
#18+
А какие типы могут быть? Если ввел сочетание, которое уже есть, то ошибка во всем сочетании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2004, 18:49 |
|
||
|
Как при ошибке определить ее тип?
|
|||
|---|---|---|---|
|
#18+
Из хелпа: В данном примере демонстрируется замена стандартного сообщения об ошибке на специальное сообщение. При обнаружении Microsoft Access повторяющегося значения в ключевом поле (код ошибки 3022) данная процедура обработки события выводит сообщение об ошибке, содержащее информацию, специфическую для выполняющегося приложения. Для проверки работы данного примера следует добавить процедуру обработки события в форму с базовой таблицей, каждая запись которой содержит сведения о сотруднике, а также уникальный код сотрудника в качестве ключа. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 00:33 |
|
||
|
Как при ошибке определить ее тип?
|
|||
|---|---|---|---|
|
#18+
2 ВС Могут быть ошибки в процедуре разного типа , но мне из них надо выделить и как говорится идентифицировать именно ошибку дублирования ключа. 2 Alexander G Ты меня понял. Спасибо. Я остолоп забыл указать, что добавляю запись ч/з DAO. Как пресечь именно эту ошибку дублирование ключа ч/з DAO? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 09:30 |
|
||
|
Как при ошибке определить ее тип?
|
|||
|---|---|---|---|
|
#18+
Пресечь или отловить? Отловить (Table1, поле aa - ключевое) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 13:15 |
|
||
|
Как при ошибке определить ее тип?
|
|||
|---|---|---|---|
|
#18+
Спасибо , разобрался! На форуме подсказали , что нужно использовать err. Твой пример на "отловить". Если например юзер вообще не фига не введет в поле тогда код_ошибки 3058. Если надо и ее отловить , тогда. Public Sub lalala() On Error GoTo LErr Dim dbs As DAO.Database Dim rst As DAO.Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset("Table1") rst.AddNew rst![aa] = 1 rst.Update Exit Sub LErr: select case err.Number case 3022 MsgBox "Что ж ты, гад, делаешь!?Это уже есть!" case 3058 MsgBox "Ну ты бы ввел хоть что нибудь!" End select End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2004, 13:38 |
|
||
|
Как при ошибке определить ее тип?
|
|||
|---|---|---|---|
|
#18+
Вот черт! Крышняк едет уже от агентства брачных объявлений. Пишу в событии формы Form_Error перехват ошибки и фиг не перехватывает, вылезает стандартное сообщение Access "Изменения не были успешно внесены из за повторяющихся значений в индексоах ... трали вали ..." Форма имеет в качестве источника запрос. Юзер на этой форме должен редактировать записи. И мне надо поймать его на вводе уже существующего значения ключа. Да вот что то закопался. вот код (хорошие ребята посоветовали) Private Sub Form_Error(DataErr As Integer, Response As Integer) If DataErr = 3022 Then Response = acDataErrContinue MsgBox "Такой абонентский номер уже существует ..." End If В форме использую список для перехода к нужной записи. После обновления списка вот что работает. Me.RecordsetClone.FindFirst "[id1] = " & Me![listfio] Me.Bookmark = Me.RecordsetClone.Bookmark Кстати индекс составной абонентский номер / название города. Ну это думаю не важно. Помогите, почему не могу отловить ошибку 3022 дубляжа индекса? Или спать пора уже ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2004, 01:00 |
|
||
|
Как при ошибке определить ее тип?
|
|||
|---|---|---|---|
|
#18+
В списке свойств формы, в строке OnError, написано ли [Event Procedure]? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2004, 11:29 |
|
||
|
Как при ошибке определить ее тип?
|
|||
|---|---|---|---|
|
#18+
2 ВС Да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2004, 11:55 |
|
||
|
Как при ошибке определить ее тип?
|
|||
|---|---|---|---|
|
#18+
А если поставить BreakPoint, программа до нее дойдет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2004, 11:56 |
|
||
|
Как при ошибке определить ее тип?
|
|||
|---|---|---|---|
|
#18+
НЕТ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2004, 14:25 |
|
||
|
Как при ошибке определить ее тип?
|
|||
|---|---|---|---|
|
#18+
А ошибка вызывается действиями юзера на экране или какой-то строкой программы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2004, 14:30 |
|
||
|
Как при ошибке определить ее тип?
|
|||
|---|---|---|---|
|
#18+
вот эта строка дает ошибку Me.Bookmark = Me.RecordsetClone.Bookmark код в событии form_load при этом не срабатывает. Может он и не должен срабатывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2004, 14:40 |
|
||
|
Как при ошибке определить ее тип?
|
|||
|---|---|---|---|
|
#18+
Тьфу ты , в событии form_error ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2004, 14:42 |
|
||
|
Как при ошибке определить ее тип?
|
|||
|---|---|---|---|
|
#18+
Забыл ВС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2004, 15:05 |
|
||
|
Как при ошибке определить ее тип?
|
|||
|---|---|---|---|
|
#18+
Если ошибку дает строка, то надо пользоваться On Error GoTo, а не Form_Error. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2004, 15:27 |
|
||
|
Как при ошибке определить ее тип?
|
|||
|---|---|---|---|
|
#18+
Я уже пробовал. Вот . Private Sub listfio_AfterUpdate() On Error GoTo fuck Me.RecordsetClone.FindFirst "[id1] = " & Me![listfio] Me.Bookmark = Me.RecordsetClone.Bookmark exit_listfio_AfterUpdate: Exit Sub fuck: If Err.Number = 3022 Then MsgBox "Double Key ! " End sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2004, 15:45 |
|
||
|
Как при ошибке определить ее тип?
|
|||
|---|---|---|---|
|
#18+
И что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2004, 16:15 |
|
||
|
Как при ошибке определить ее тип?
|
|||
|---|---|---|---|
|
#18+
2 ВС Решил по другому "защититься" от действий юзера. В форме поля абонентского номера и названия города сделал enable=false. Рядом сделал кнопку " изменить ... " по которой на экране появляется диалоговое окно, где можно указать другой номер и название города. После делаю проверку на поиск дублирования ключа и если есть дублирование предупреждаю юзера. В любом случае он не может ввести существующий уже ключ. Как думаете, тоже вроде выход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2004, 08:58 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32382687&tid=1677101]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
231ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 528ms |

| 0 / 0 |
