|
|
|
Нарушение первичного ключа
|
|||
|---|---|---|---|
|
#18+
В таблице первичный ключ по дате и подразделению (один документ в день). Как показала практика юзера постоянно про это забывают и пытаются создать еще один (или просто ошибаются), естественно получают месагу о нарушении первичного ключа. После такого сообщения у них истерика. Как бы мне не дать им сохранить неправильные данные? Интересует именно момент сохранения, т.к. документ создается со значениями по-умолчанию, приводящими к ошибке при сохранении, юзера их потом должны поменять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 19:23 |
|
||
|
Нарушение первичного ключа
|
|||
|---|---|---|---|
|
#18+
попробуй создать форму для ввода данных с обработчиком ошибок например ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 19:30 |
|
||
|
Нарушение первичного ключа
|
|||
|---|---|---|---|
|
#18+
А что, нельзя проверять данные которые сохраняються? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 19:35 |
|
||
|
Нарушение первичного ключа
|
|||
|---|---|---|---|
|
#18+
Можно, конечно. На BeforeInsert: if dcount(...)>0 then msgbox... cancel=true end if ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 19:39 |
|
||
|
Нарушение первичного ключа
|
|||
|---|---|---|---|
|
#18+
Саныч, а разве BeforeInsert не тогда когда я вставляю данные в контрол? Идея такая: вставляйте все что угодно, главное не сохраняйте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 19:45 |
|
||
|
Нарушение первичного ключа
|
|||
|---|---|---|---|
|
#18+
BeforeInsert - это событие формы. Пока у записи сбоку нарисован карандашик, она находится только в памяти. Потом юзер ее сохраняет физически (простейший случай - путем перехода на другую запись), и вот тогда-то происходит BeforeInsert. При этом если в обработчике сделано cancel=true, то сохранение отменяется, переход на другую запись тоже отменяется, а эта запись остается только в памяти и с карандашиком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 19:50 |
|
||
|
Нарушение первичного ключа
|
|||
|---|---|---|---|
|
#18+
Почему это событие возникает когда я перехожу на следующую запись и заполняю дефами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 19:58 |
|
||
|
Нарушение первичного ключа
|
|||
|---|---|---|---|
|
#18+
Кто такие дефы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 20:03 |
|
||
|
Нарушение первичного ключа
|
|||
|---|---|---|---|
|
#18+
Звиняюсь :) Defaults, значения по-умолчанию. Заполняю скриптом. Если не заполняю- событие не возникает. Как я это определил? Просто вывел месадж. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 20:09 |
|
||
|
Нарушение первичного ключа
|
|||
|---|---|---|---|
|
#18+
Каким образом создается запись? И каким образом заносятся дефы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 20:10 |
|
||
|
Нарушение первичного ключа
|
|||
|---|---|---|---|
|
#18+
Новая запись создается без моего участия. В заголовке формы всего 2 поля, пусть будут Field1 и Field2 Field1 - дата, Field2- число (код подразделения) Заполняется дефаултами: Private Sub Form_Current() Dim ADate As String If IsNull(Field1.Value) Or (Field1.Value = Empty) Then Field1.Value = CDate("01/" + CStr(DatePart("m", Date)) + "/" + CStr(DatePart("yyyy", Date))) Field2.Value = 1 End If End Sub Кстати, по ходу еще один вопрос: как мне ограничить для пользоватеолей доступ на документы с определенными значениями поля Field2? Насколько я понимаю нужно установить ServerFilter (проект adp). В каком событии? OnOpen? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 20:18 |
|
||
|
Нарушение первичного ключа
|
|||
|---|---|---|---|
|
#18+
1. Насчет серверных фильтров - я в этом не разбираюсь. Будем ждать, пока кто-то другой ответит. :^) 2. Занесение дИфолтов (у нас говорят так) - вижу. Оно производится через контролы формы, поэтому процесс их занесения переводит форму в режим редактирования. Если она в нем не была, то она в него перейдет, но я не понимаю: это что, уже существующая запись? Тогда никакого OnInsert не будет. 3. Кстати, странно, что это сделано на OnCurrent. Это значит, что они туда будут заноситься даже тогда, когда юзер по ошибке встанет на какую-нибудь старую запись. Не баг ли это? 4. Странно и то, что в поле типа дата заносится не дата, а стринг. Это значит, что Аксесс сам превращает стринг в дату. Если поменять региональные настройки, то он будет это делать неправильно. Не баг ли и это тоже? 5. А как создается запись, я так и не понял. Мы ведь говорим про момент создания записи и про возможность отследить создание записи с ключом, который уже существует. Как я могу дать какой-то совет, если я не вижу, как создается запись? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 20:29 |
|
||
|
Нарушение первичного ключа
|
|||
|---|---|---|---|
|
#18+
Я проверяю одно из полей на "пустость" и если пустое, устанавливаю дату- первое число месяца. При переходе между записями поле оказаться пустым не может (оно обязательное). С этим глюков нет- народ работает потихоньку. > 5. А как создается запись, я так и не понял. Сам не знаю. По нажатии кнопки "создать" и при переходе на новую запись. Никаких моих обработок при этом нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 20:37 |
|
||
|
Нарушение первичного ключа
|
|||
|---|---|---|---|
|
#18+
> 2. Занесение дИфолтов (у нас говорят так) - вижу. Оно производится через контролы формы,... Подскажи плизз, а как можно по другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 20:39 |
|
||
|
Нарушение первичного ключа
|
|||
|---|---|---|---|
|
#18+
Итак: 1. Ждем других. 2+5. Момент добавления записи виден на экране? В этот момент карандашик появляется? 3. Понял. 4. Думаю, что это все-таки баг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 20:40 |
|
||
|
Нарушение первичного ключа
|
|||
|---|---|---|---|
|
#18+
авторПодскажи плизз, а как можно по другому? Через свойство DefaultValue. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 20:41 |
|
||
|
Нарушение первичного ключа
|
|||
|---|---|---|---|
|
#18+
У нас тут единые стандарты - у всех одна винда, юзера не имеют прав что-то менять, так что не баг. Естественно лучше было бы сначала взять системный разделитель... Фиг с ним :) Карандашик... У меня форма имеет вид стандартного электронного документа- заголовок в виде формы, детальная часть в виде таблицы. Когда создаешь новый документ карандашика я не вижу. Статус-бар пишет Calculating. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 20:53 |
|
||
|
Нарушение первичного ключа
|
|||
|---|---|---|---|
|
#18+
Не только разделитель, но и порядок частей. Ну и фиг с ним. :^))) А насчет создания записи - неужели нельзя посмотреть код кнопки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 20:55 |
|
||
|
Нарушение первичного ключа
|
|||
|---|---|---|---|
|
#18+
Эххх, Саныч, спаибо огромное, жаль конечно что не закончили но надо иттить. Happy holidays! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2004, 21:05 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1617&tid=1674087]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 404ms |

| 0 / 0 |
