powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка при добавлении записи в ленточную форму .AddNew
25 сообщений из 29, страница 1 из 2
Ошибка при добавлении записи в ленточную форму .AddNew
    #39929733
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столкнулся с ситуацией,когда непонятно для меня почемуто выскакивает ошибка (до этого несколько раз делал то же,ошибки небыло)
На форме1 имеется кнопка1 при нажатии которой открывается ленточная форма frmOtkaziPKI
На ленточной форме имеется кнопка2 (для добавления новой записи на форму) при нажатии которой срабатывает процедура vba:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub кнопка2
Dim narab as string
narab="привет"
Me.AllowAdditions = True
                With Forms!frmOtkaziPKI.Form.Recordset
                    .AddNew
                            !fldEINarabPKI1 = narab 'тут выдается ошибка ЭЛЕМЕНТ НЕ ОБНАРУЖЕН В ДАННОМ СЕМЕЙСТВЕ
                End With
                Me.AllowAdditions = False 


А когда в этой же строке пишу Forms!frmOtkaziPKI.Controls("fldEINarabPKI1") = narab - все срабатывает корректно.
Что не так?
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39929758
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drafty, если код прописываете в модуле подчиненной формы.
Код: vbnet
1.
with me.recordset
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930387
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko
drafty, если код прописываете в модуле подчиненной формы.
Код: vbnet
1.
with me.recordset


Да,действительно работает...
Но мне все-таки хотелось узнать,почему?
Разве обращение me.recordset и Forms!frmOtkaziPKI.Form.Recordset НЕ ИДЕНТИЧНО?
Ведь на момент добавления записи активна форма frmOtkaziPKI (она выполнена отдельно от других),хотя открыта еще и та форма,на которой размещена кнопка1...
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930400
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drafty
...
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub кнопка2
Dim narab as string
narab="привет"
Me.AllowAdditions = True
                With Forms!frmOtkaziPKI.Form.Recordset
                    .AddNew
                            !fldEINarabPKI1 = narab 'тут выдается ошибка ЭЛЕМЕНТ НЕ ОБНАРУЖЕН В ДАННОМ СЕМЕЙСТВЕ
                End With
                Me.AllowAdditions = False 



И еще такой момент.
После добавления записи в эту ленточную форму я нажимаю на кнопку УДАЛИТЬ (которая располагается на ней же и у меня выполняется такой код:
Код: vbnet
1.
2.
3.
Me.RecordSource = "SELECT OtkaziPKI.Kod ...... WHERE OtkaziPKI.ZavNomOtkazPKI='" & Me.Caption & "' ORDER BY OtkaziPKI.Kod;"
DoCmd.RunSQL "DELETE OtkaziPKI.* FROM OtkaziPKI WHERE OtkaziPKI.Kod=" & Me.Kod & ";"
Me.Requery 'Тут выдается ошибка Run Time Error 3167 Запись удалена


В чем суть ошибки?
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930416
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drafty
В чем суть ошибки?

Откройте для себя пошаговую отладку кода ( Access breakpoint in VBA ). И Вы поймете в чем суть ошибки.
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930418
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drafty
Разве обращение me.recordset и Forms!frmOtkaziPKI.Form.Recordset НЕ ИДЕНТИЧНО?
идентично. ты чего-то накосячил получением объекта из коллекции. Потому рекомендуется использовать первое обращение. Выделенное излишне.
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930419
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drafty
В чем суть ошибки?
не стоит так делать. Пользуйся в данном случае методами объекта Recordset .
Суть ошибки тебе написали в описании ошибки.
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930423
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drafty
И еще такой момент.
А форма ленточная у тебя случаем не субформа? Ты как-то исторически так сложилось умалчиваешь этот нюанс.
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930441
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
drafty
И еще такой момент.
А форма ленточная у тебя случаем не субформа? Ты как-то исторически так сложилось умалчиваешь этот нюанс.

22086122
(там же сказано:"Ведь на момент добавления записи активна форма frmOtkaziPKI ( она выполнена отдельно от других ),хотя открыта еще и та форма,на которой размещена кнопка1...")
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930476
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMan
drafty
В чем суть ошибки?

Откройте для себя пошаговую отладку кода ( Access breakpoint in VBA ). И Вы поймете в чем суть ошибки.

Я менно так и делаю.На методе(строке) Requery выдается ошибка (у меня в строках формы при этом значения такие: #УДАЛЕНО)
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930497
drafty
Код: vbnet
1.
2.
3.
4.
                With Forms!frmOtkaziPKI.Form.Recordset
                    .AddNew
                    !fldEINarabPKI1 = narab 'тут выдается ошибка ЭЛЕМЕНТ НЕ ОБНАРУЖЕН В ДАННОМ СЕМЕЙСТВЕ
                End With


Есть подозрение, что поле в Recordset-е (т.е. в запросе-источнике) называется иначе, чем связанный с ним элемент формы.
Кстати, а где метод Update?
draftyПосле добавления записи в эту ленточную форму я нажимаю на кнопку УДАЛИТЬ (которая располагается на ней же и у меня выполняется такой код:
Код: vbnet
1.
2.
3.
Me.RecordSource = "SELECT OtkaziPKI.Kod ...... WHERE OtkaziPKI.ZavNomOtkazPKI='" & Me.Caption & "' ORDER BY OtkaziPKI.Kod;"
DoCmd.RunSQL "DELETE OtkaziPKI.* FROM OtkaziPKI WHERE OtkaziPKI.Kod=" & Me.Kod & ";"
Me.Requery 'Тут выдается ошибка Run Time Error 3167 Запись удалена


В чем суть ошибки? Зачем вы перед удалением записи меняете источник? Вы уверены, что после этого записи есть? Если записей нет и у вас Me.AllowAdditions = False, то тогда в области данных нет полей, в т.ч. и Me.Kod, отсюда и ошибка. А если записи есть, то вы удалите первую из них. Вы уверены, что это ТА запись? И вообще, если вы хотите удалить запись в форме, то почему не удаляете ее так же в ее Recordset-е. Или источник не обновляемый?
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930535
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drafty
там же сказано:
— Кто на ком стоял??? Потрудитесь излагать Ваши мысли яснее.(с)
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930540
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолий
drafty
Код: vbnet
1.
2.
3.
4.
                With Forms!frmOtkaziPKI.Form.Recordset
                    .AddNew
                    !fldEINarabPKI1 = narab 'тут выдается ошибка ЭЛЕМЕНТ НЕ ОБНАРУЖЕН В ДАННОМ СЕМЕЙСТВЕ
                End With


Есть подозрение, что поле в Recordset-е (т.е. в запросе-источнике) называется иначе, чем связанный с ним элемент формы.
Кстати, а где метод Update?
draftyПосле добавления записи в эту ленточную форму я нажимаю на кнопку УДАЛИТЬ (которая располагается на ней же и у меня выполняется такой код:
Код: vbnet
1.
2.
3.
Me.RecordSource = "SELECT OtkaziPKI.Kod ...... WHERE OtkaziPKI.ZavNomOtkazPKI='" & Me.Caption & "' ORDER BY OtkaziPKI.Kod;"
DoCmd.RunSQL "DELETE OtkaziPKI.* FROM OtkaziPKI WHERE OtkaziPKI.Kod=" & Me.Kod & ";"
Me.Requery 'Тут выдается ошибка Run Time Error 3167 Запись удалена


В чем суть ошибки? Зачем вы перед удалением записи меняете источник? Вы уверены, что после этого записи есть? Если записей нет и у вас Me.AllowAdditions = False, то тогда в области данных нет полей, в т.ч. и Me.Kod, отсюда и ошибка. А если записи есть, то вы удалите первую из них. Вы уверены, что это ТА запись? И вообще, если вы хотите удалить запись в форме, то почему не удаляете ее так же в ее Recordset-е. Или источник не обновляемый?
По поводу апдейт - поступил по совету 22010149
А по поводу изменения источника - косяк понял...(клинА словил)
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930564
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нажимая на кнопку2 Вы работаете в модуле формы frmOtkaziPKI.
Forms!frmOtkaziPKI.Form.Recordset -эта конструкция вообще некорректна
должно быть имя контрола-контейнера, (если речь про подчиненную форму) т.е.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim withevents sfrm1 as form, rst as recordset, PodForm as subform
set PodForm =Forms!frmOtkaziPKI!subform2 ' подформа
set sfrm1=PodForm.Form ' форма в контейнере подформы
set rst=sfrm1.recordset' рекордсет формы, которая находится в контейнере подчиненной формы
with rst
' ...
end with


если же работаете с отдельной формой, то к чему эти конструкции? какой смысл дергать коллекцию форм? не говоря про то что когда Вы когда нибудь сподобитесь работать с формой через модуль класса её в этой коллекции не будет.
Код: vbnet
1.
Forms!frmOtkaziPKI.Controls("fldEINarabPKI1")


при чем тут надпись на корешке формы?
Код: vbnet
1.
Me.RecordSource = "SELECT OtkaziPKI.Kod ...... WHERE OtkaziPKI.ZavNomOtkazPKI='" & Me.Caption & "' ORDER BY OtkaziPKI.Kod;"


Код: vbnet
1.
DoCmd.RunSQL "DELETE OtkaziPKI.* FROM OtkaziPKI WHERE OtkaziPKI.Kod=" & Me.Kod & ";" 'а закрывать этот запрос разве не надо?


вообще эта конструкция непонятна, неправильно описана и спрограммирована;
хочется удалить текущую запись?
Код: vbnet
1.
Currentdb.execute "DELETE FROM OtkaziPKI WHERE ([Kod]=" & Me.Kod & ")" ' здесь имя контрола Код и его .controlsource="Код"

...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930617
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko
нажимая на кнопку2 Вы работаете в модуле формы frmOtkaziPKI.
Forms!frmOtkaziPKI.Form.Recordset -эта конструкция вообще некорректна
должно быть имя контрола-контейнера, (если речь про подчиненную форму) т.е.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim withevents sfrm1 as form, rst as recordset, PodForm as subform
set PodForm =Forms!frmOtkaziPKI!subform2 ' подформа
set sfrm1=PodForm.Form ' форма в контейнере подформы
set rst=sfrm1.recordset' рекордсет формы, которая находится в контейнере подчиненной формы
with rst
' ...
end with


если же работаете с отдельной формой, то к чему эти конструкции? какой смысл дергать коллекцию форм? не говоря про то что когда Вы когда нибудь сподобитесь работать с формой через модуль класса её в этой коллекции не будет.
Код: vbnet
1.
Forms!frmOtkaziPKI.Controls("fldEINarabPKI1")


при чем тут надпись на корешке формы?
Код: vbnet
1.
Me.RecordSource = "SELECT OtkaziPKI.Kod ...... WHERE OtkaziPKI.ZavNomOtkazPKI='" & Me.Caption & "' ORDER BY OtkaziPKI.Kod;"


Код: vbnet
1.
DoCmd.RunSQL "DELETE OtkaziPKI.* FROM OtkaziPKI WHERE OtkaziPKI.Kod=" & Me.Kod & ";" 'а закрывать этот запрос разве не надо?


вообще эта конструкция непонятна, неправильно описана и спрограммирована;
хочется удалить текущую запись?
Код: vbnet
1.
Currentdb.execute "DELETE FROM OtkaziPKI WHERE ([Kod]=" & Me.Kod & ")" ' здесь имя контрола Код и его .controlsource="Код"


DoCmd.RunSQL "DELETE OtkaziPKI.* FROM OtkaziPKI WHERE OtkaziPKI.Kod=" & Me.Kod & ";" 'а закрывать этот запрос разве не надо?
разве после DoCmd.RunSQL надо еще и закрывать запрос? (не обессутьте за тупой вопрос)
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930644
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko,
Currentdb.execute "DELETE FROM OtkaziPKI WHERE ([Kod]=" & Me.Kod & ")" ' здесь имя контрола Код и его .controlsource="Код"
Все равно результат тот-же...
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930652
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно это происходит от того,что у меня курсор в момент удаления записи находится на удаляемой записи (у меня нет области выделения)?
Т.е. я получаю значения кода (критерий удаления) вставая на нужную запись.
Теперь тогда вопрос,как можно "обойти"этот фактор (курсор удаления на удаляемой записи в момент удаления)?
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930658
Фотография drafty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drafty
Возможно это происходит от того,что у меня курсор в момент удаления записи находится на удаляемой записи (у меня нет области выделения)?
Т.е. я получаю значения кода (критерий удаления) вставая на нужную запись.
Теперь тогда вопрос,как можно "обойти"этот фактор ( курсор удаления на удаляемой записи в момент удаления )?

Все парни,нашел косяк....
Вместо того,чтобы делать DoCmd.Run SQL (или CurrentDB.Execute ), а потом делать Requery - вспомнил,что у меня уже было "такое"...
Нашел вот тут 21956629 Еще раз спасибо автору совета court !!!
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930725
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drafty
Все парни,нашел косяк...
ну вообще-то тебе об этом говорили тут несколько человек.
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930727
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko
если же работаете с отдельной формой, то к чему эти конструкции? какой смысл дергать коллекцию форм? не говоря про то что когда Вы когда нибудь сподобитесь работать с формой через модуль класса её в этой коллекции не будет .
Код: vbnet
1.
Forms!frmOtkaziPKI.Controls("fldEINarabPKI1")'вполне корректно, осталось только проверить или установить свойство

Выделенное о чём?

alecko
Forms!frmOtkaziPKI.Form.Recordset -эта конструкция вообще некорректна
Почему? Вполне корректна. Только свойство Form излишне.
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930744
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Выделенное о чём?"
при открытии формы не через Docmd.openform (создание в модуле класса Set frm= New Form_Форма1), либо при открытии её в качестве подчиненной- она не попадает в коллекцию форм (а ещё бывает открыто несколько экземпляров-и они все по одному адресу).

для обращения к модулю формы есть Me. это удобно, понятно, правильно, соответствует ооп (абстракция данных)

"Почему? Вполне корректна. Только свойство Form излишне."
может и излишнее, а может чего то недостает, но эта конструкция в этом виде работать не может и не будет.
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930748
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko
(создание в модуле класса Set frm= New Form_Форма1),...- она не попадает в коллекцию форм (а ещё бывает открыто несколько экземпляров-и они все по одному адресу).
И давно так стало? Прямо не попадает? А куда оно попадает?
alecko
для обращения к модулю формы есть Me. это удобно, понятно, правильно, соответствует ооп (абстракция данных)
Ого! Вона как! Аабббссстттттрррраааааккккццццииииияяяя!

alecko
"Почему? Вполне корректна. Только свойство Form излишне."
может и излишнее, а может чего то недостает, но эта конструкция в этом виде работать не может и не будет.
Ой! А у меня взяла и заработала. Чудеса?
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930768
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
alecko
(создание в модуле класса Set frm= New Form_Форма1),...- она не попадает в коллекцию форм (а ещё бывает открыто несколько экземпляров-и они все по одному адресу).
И давно так стало? Прямо не попадает? А куда оно попадает?

А я не знаю, но функция
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Function IsLoadedFrm(strFormName As String) As Boolean
On Error GoTo Err_IsLoadedFrm
Dim fm As Form
Set fm = Forms(strFormName)
IsLoadedFrm = True
Exit Function
Err_IsLoadedFrm:
'Debug.Print Err.Number
IsLoadedFrm = False
End Function


выдает False
Панург
alecko
для обращения к модулю формы есть Me. это удобно, понятно, правильно, соответствует ооп (абстракция данных)
Ого! Вона как! Аабббссстттттрррраааааккккццццииииияяяя!

Вобщем да, весна близко... пройдет!
Панург
alecko
"Почему? Вполне корректна. Только свойство Form излишне."
может и излишнее, а может чего то недостает, но эта конструкция в этом виде работать не может и не будет.
Ой! А у меня взяла и заработала. Чудеса?

а у меня точно нет- а что там должно заработать (если только обработчик ошибок)?, даже пробовать не буду- чудес не бывает.
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930794
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drafty
....
На форме1 имеется кнопка1 при нажатии которой открывается ленточная форма frmOtkaziPKI
На ленточной форме имеется кнопка2 (для добавления новой записи на форму) при нажатии которой срабатывает процедура vba: ...
Никак не "вкурю":Если в свойствах формы2 установить изменение и удаление в НЕТ а добавление в ДА получится Ваша "хотелка" (зачем для добавления нажимать какую-то кнопку-ведь она есть в области переходов)
...
Рейтинг: 0 / 0
Ошибка при добавлении записи в ленточную форму .AddNew
    #39930854
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko
выдает False
Да? В одну коллекцию они попадают - Forms . Только по OpenForms в коллекцию попадает с ключом ИмяФормы (и замещает(?) если там уже есть экземпляр с этим ключом), а вот по New добавляет каждый раз новый экземпляр и без ключа. Отсюда невозможность вызвать по ИмениФормы (ключу).
alecko
Вобщем да, весна близко... пройдет!
Согласен, главное не переживай и не неси околесицу.
alecko
а у меня точно нет- а что там должно заработать (если только обработчик ошибок)?, даже пробовать не буду- чудес не бывает.
Что я могу сказать? Я то проверил прежде чем утверждать. А ты?
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка при добавлении записи в ленточную форму .AddNew
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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