|
Удаление текущей записи
|
|||
---|---|---|---|
#18+
Здравствуйте уважаемые специалисты по Access. Помогите пожалуйста. У меня есть форма с источником в виде таблицы. Пользователь добавляет записи. записи проходят проверку по одному из полей. Если проверка не пройдена, запись нужно удалить. Это текущая запись. Вопрос - как удалить текущую запись, какой командой? Знаю конечно что me.Recordset.Delete , но беда в том, что только первая запись удаляется хорошо, если следующую запись нужно тоже удалить, то возникает ошибка - "текущая запись отсутствует", и так все остальные. видел подсказку на форуме в виде такой строки If Not Me.NewRecord Then DoCmd.RunCommand acCmdDeleteRecord Но смысла ее, увы, не понимаю, всех свойств NewRecord и acCmdDeleterecord ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 13:11 |
|
Удаление текущей записи
|
|||
---|---|---|---|
#18+
А как Вы удаляете? В смысле, нажимаете какую-то кнопку на форме? Или как? Лично я удаляю командой Код: vbnet 1.
Да, если у Вас ленточная форма, то её надо обновить. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 14:10 |
|
Удаление текущей записи
|
|||
---|---|---|---|
#18+
Joss, нет-нет, удаление замысливается автоматическое, если пользователь вводит некорректную цифру, то запись удаляется целиком по событию "После обновления" с выводом предупреждения. Обновлять не очень бы хотелось, так как выбрасывает в начало таблицы. Ведь если руками запись удалить, ничего же не требуется. Те методы, которые я указал как раз такие, но беда в том, что видимо access сбивается со счета, какая запись где, после выполнения me.Recordset.Delete ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 14:20 |
|
Удаление текущей записи
|
|||
---|---|---|---|
#18+
MSerg1968-S, после удаления явно переходина какую-нибудь запись ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 14:21 |
|
Удаление текущей записи
|
|||
---|---|---|---|
#18+
Панург, Конечно, перехожу и явно. Пользователь, если ввел неверные данные, запись потерял, вводит другую. То есть дальше-то работать можно! но при этом, если он опять неверно вводит, то событие пытается и эту запись удалить. Но уже возникает ошибка "текущая запись отсутствует" ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 14:38 |
|
Удаление текущей записи
|
|||
---|---|---|---|
#18+
MSerg1968-SПользователь добавляет записи. записи проходят проверку по одному из полей. Если проверка не пройдена, запись нужно удалить. Это текущая запись. Логичнее выполнять проверки на Form_BeforeUpdate и "если проверка не пройдена" - не сохранять. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 14:43 |
|
Удаление текущей записи
|
|||
---|---|---|---|
#18+
Анатолий ( Киев ), а скажите пожалуйста, как именно не сохранять запись? Я понял ход мысли, мысль хорошая, но что является командой не сохранения записи? Я что-то не знал такой раньше? Что нужно написать в событии чтобы запись не сохранилась? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 14:49 |
|
Удаление текущей записи
|
|||
---|---|---|---|
#18+
MSerg1968-Sкак именно не сохранять запись? Я понял ход мысли, мысль хорошая, но что является командой не сохранения записи? У события BeforeUpdate есть аргумент Cancel. Присвоение любого числа не 0 приведет к отмене сохранения. Запись остается на экране. Ее можно исправить и сохранить или отказаться. Кстати, Cancel есть и у других событий. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 15:00 |
|
Удаление текущей записи
|
|||
---|---|---|---|
#18+
MSerg1968-SЕсли проверка не пройдена, запись нужно удалить делать проверну "на лету" - тогда и удалять нечего не надо будет ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 15:08 |
|
Удаление текущей записи
|
|||
---|---|---|---|
#18+
bubucha, Как я сделаю ее на лету, у меня и так все проверки по событиям. Если я начинаю новую запись делать, то она же в этот момент и образуется и пользователь наполняет поля данными. Но в этот момент в таблице уже (!) есть запись! И вот вдруг на каком-то поле он вводит некорректные данные и запись нужно удалить. Но ведь это уже живая запись в таблице, не виртуальная. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 15:40 |
|
Удаление текущей записи
|
|||
---|---|---|---|
#18+
MSerg1968-S, Это все уже сделано до нас(не изобретайте велосипед)-проверку проводят на событии доОбновления поля и в случае не соответствия данных отменяют его,курсор при этом остается в поле и не выйдет из него пока поле не будет очищено или в него не введут корректные данные - ведь об этом уже говорили. (лично мне было бы очень досадно из-за одной,которую я не заметил, ошибки потерять запись в форме из нескольких десятков полей) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 16:28 |
|
Удаление текущей записи
|
|||
---|---|---|---|
#18+
MSerg1968-SЕсли я начинаю новую запись делать, то она же в этот момент и образуется и пользователь наполняет поля данными. Но в этот момент в таблице уже (!) есть запись! И вот вдруг на каком-то поле он вводит некорректные данные и запись нужно удалить. Но ведь это уже живая запись в таблице, не виртуальная. приведу классиков Литвин П., Гетц К., Гунделой М., Разработка настольных приложений в Access 2002. стр.62 Буферы данных Access Во время редактирования данных в текущей форме Access создает два буфера, которые можно использовать для отмены выполненных действий: - буфер текущей записи; - буфер текущего элемента управления. Эти буферы схематически представлены на рис. 2.3. Когда вы перемещаетесь по записям таблицы, Access загружает в буфер текущей записи значения из текущей записи источника данных. Кроме того, при переходе от поля к полю данные из буфера текущей записи загружаются в буфер текущего элемента управления. В случае изменения значения поля и перехода к другому полю для данного элемента управления вызываются события BeforeUpdate и AfterUpdate . Между вызовами обработчиков этих событий Access записывает в буфер значение, содержащееся в буфере элемента управления. Аналогичным образом, при сохранении текущей записи (путем явного ее сохранения и перехода к другой записи или путем закрытия формы) Access заменяет данные записи значениями, содержащимися в буфере текущей записи. Если во время редактирования данных в элементе управления вы нажмете клавишу Esc или выполните команду Edit -> Undo , Access заменит содержимое буфера текущего элемента управления значением из буфера текущей записи. Но если вы повторно нажмете клавишу Esc или выполните команду Edit -> Undo Record , программа заменит содержимое буфера текущей записи значением таковой. Пользуясь формами, вы всегда будете редактировать данные в буфере элемента управления и никогда не сможете изменять их непосредственно в таблицах. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 16:47 |
|
Удаление текущей записи
|
|||
---|---|---|---|
#18+
Панург, +1 MSerg1968-S, учите матчасть. MSerg1968-S, для интереса, закладки в ленточной форме. Как восстанавливать положение курсора после обновления формы. здесь Почитайте обсуждение. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 08:54 |
|
|
start [/forum/topic.php?fid=45&msg=39611240&tid=1611624]: |
0ms |
get settings: |
13ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 266ms |
total: | 415ms |
0 / 0 |