powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Нарушение первичного ключа
20 сообщений из 20, страница 1 из 1
Нарушение первичного ключа
    #32549257
_Alexander_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таблице первичный ключ по дате и подразделению (один документ в день).
Как показала практика юзера постоянно про это забывают и пытаются создать еще один (или просто ошибаются), естественно получают месагу о нарушении первичного ключа. После такого сообщения у них истерика. Как бы мне не дать им сохранить неправильные данные?
Интересует именно момент сохранения, т.к. документ создается со значениями по-умолчанию, приводящими к ошибке при сохранении, юзера их потом должны поменять.
...
Рейтинг: 0 / 0
Нарушение первичного ключа
    #32549265
bazaea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй создать форму для ввода данных с обработчиком ошибок например
...
Рейтинг: 0 / 0
Нарушение первичного ключа
    #32549269
_Alexander_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, нельзя проверять данные которые сохраняються?
...
Рейтинг: 0 / 0
Нарушение первичного ключа
    #32549272
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Можно, конечно. На BeforeInsert:

if dcount(...)>0 then
msgbox...
cancel=true
end if
...
Рейтинг: 0 / 0
Нарушение первичного ключа
    #32549281
_Alexander_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саныч, а разве BeforeInsert не тогда когда я вставляю данные в контрол?
Идея такая: вставляйте все что угодно, главное не сохраняйте.
...
Рейтинг: 0 / 0
Нарушение первичного ключа
    #32549283
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
BeforeInsert - это событие формы. Пока у записи сбоку нарисован карандашик, она находится только в памяти. Потом юзер ее сохраняет физически (простейший случай - путем перехода на другую запись), и вот тогда-то происходит BeforeInsert. При этом если в обработчике сделано cancel=true, то сохранение отменяется, переход на другую запись тоже отменяется, а эта запись остается только в памяти и с карандашиком.
...
Рейтинг: 0 / 0
Нарушение первичного ключа
    #32549294
_Alexander_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему это событие возникает когда я перехожу на следующую запись и заполняю дефами?
...
Рейтинг: 0 / 0
Нарушение первичного ключа
    #32549298
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Кто такие дефы?
...
Рейтинг: 0 / 0
Нарушение первичного ключа
    #32549303
_Alexander_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Звиняюсь :)
Defaults, значения по-умолчанию. Заполняю скриптом. Если не заполняю- событие не возникает. Как я это определил? Просто вывел месадж.
...
Рейтинг: 0 / 0
Нарушение первичного ключа
    #32549305
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Каким образом создается запись? И каким образом заносятся дефы?
...
Рейтинг: 0 / 0
Нарушение первичного ключа
    #32549310
_Alexander_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новая запись создается без моего участия.
В заголовке формы всего 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?
...
Рейтинг: 0 / 0
Нарушение первичного ключа
    #32549314
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
1. Насчет серверных фильтров - я в этом не разбираюсь. Будем ждать, пока кто-то другой ответит. :^)

2. Занесение дИфолтов (у нас говорят так) - вижу. Оно производится через контролы формы, поэтому процесс их занесения переводит форму в режим редактирования. Если она в нем не была, то она в него перейдет, но я не понимаю: это что, уже существующая запись? Тогда никакого OnInsert не будет.

3. Кстати, странно, что это сделано на OnCurrent. Это значит, что они туда будут заноситься даже тогда, когда юзер по ошибке встанет на какую-нибудь старую запись. Не баг ли это?

4. Странно и то, что в поле типа дата заносится не дата, а стринг. Это значит, что Аксесс сам превращает стринг в дату. Если поменять региональные настройки, то он будет это делать неправильно. Не баг ли и это тоже?

5. А как создается запись, я так и не понял. Мы ведь говорим про момент создания записи и про возможность отследить создание записи с ключом, который уже существует. Как я могу дать какой-то совет, если я не вижу, как создается запись?
...
Рейтинг: 0 / 0
Нарушение первичного ключа
    #32549321
_Alexander_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я проверяю одно из полей на "пустость" и если пустое, устанавливаю дату- первое число месяца. При переходе между записями поле оказаться пустым не может (оно обязательное). С этим глюков нет- народ работает потихоньку.

> 5. А как создается запись, я так и не понял.
Сам не знаю. По нажатии кнопки "создать" и при переходе на новую запись. Никаких моих обработок при этом нет.
...
Рейтинг: 0 / 0
Нарушение первичного ключа
    #32549322
_Alexander_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> 2. Занесение дИфолтов (у нас говорят так) - вижу. Оно производится через контролы формы,...

Подскажи плизз, а как можно по другому?
...
Рейтинг: 0 / 0
Нарушение первичного ключа
    #32549324
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Итак:

1. Ждем других.

2+5. Момент добавления записи виден на экране? В этот момент карандашик появляется?

3. Понял.

4. Думаю, что это все-таки баг.
...
Рейтинг: 0 / 0
Нарушение первичного ключа
    #32549325
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
авторПодскажи плизз, а как можно по другому?
Через свойство DefaultValue.
...
Рейтинг: 0 / 0
Нарушение первичного ключа
    #32549334
_Alexander_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас тут единые стандарты - у всех одна винда, юзера не имеют прав что-то менять, так что не баг. Естественно лучше было бы сначала взять системный разделитель... Фиг с ним :)

Карандашик... У меня форма имеет вид стандартного электронного документа- заголовок в виде формы, детальная часть в виде таблицы. Когда создаешь новый документ карандашика я не вижу. Статус-бар пишет Calculating.
...
Рейтинг: 0 / 0
Нарушение первичного ключа
    #32549336
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Не только разделитель, но и порядок частей. Ну и фиг с ним. :^)))

А насчет создания записи - неужели нельзя посмотреть код кнопки?
...
Рейтинг: 0 / 0
Нарушение первичного ключа
    #32549344
_Alexander_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эххх, Саныч, спаибо огромное, жаль конечно что не закончили но надо иттить.
Happy holidays!
...
Рейтинг: 0 / 0
Нарушение первичного ключа
    #32549345
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Ну, иттить так иттить... Happy!
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Нарушение первичного ключа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]