powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Объект Recordset не является обновляемым ?
22 сообщений из 22, страница 1 из 1
Объект Recordset не является обновляемым ?
    #32856680
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А-97

Как запрос сделать обновляемым?
В таблице "Таблица1" поля: Поле1-данные, ПолеId (идентефикатор от 0 до 8)
В таблице "ТаблицаId" поля: ПолеId - только идентефикаторы необходимые для выборки (0-1-2)
Делаю запрос
Код: plaintext
1.
2.
SELECT Таблица1.Поле1, Таблица1.ПолеId
FROM Таблица1 INNER JOIN ТаблицаId ON Таблица1.ПолеId = ТаблицаId.ПолеId;
Естественно при попытке изменить данные после выборки пишет "Объект Recordset не является обновляемым " это понятно отношение один-ко многим, но как этот запрос переделать в обновляемый.
Использовать WHERE не хочу, идентефикаторов много и форм тоже много, причем они(идентефикаторы) будут пополнятся.

P.S.
Нужен для формы
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #32856707
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все очень просто:

ТаблицаId не имеет PK. Назначь поле ПолеID ключом и будет тебе щастье...
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #32856713
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Откуда ВЫ такой умный?
Попробовал-все получилось.
ОГРОМНОЕ СПАСИБО
Где про это почитать? Аксовскую справку я читал что-то не нашел.

И еще кому интересно у меня есть две формы которые РАБОТАЮТ по этому запросу (без ключа ) . Я сам не знал, что запрос-то необновляемый пока не стал делать третью простую форму(в превых двух много кода). Дак вот если из этих форм код убираешь - начинает ругатся "Необновляемым". ЧТО ЭТО ТАКОЕ ЕЩЕ НЕ РАЗОБРАЛСЯ - ГЛЮК ?
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #32857117
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Дак вот если из этих форм код убираешь - начинает ругатся "Необновляемым".

Твой предшественник объехал необновляемость на ПРОГРАММНОМ обновлении. Т.е. он сам в коде отправляет команду обновления на нужную таблицу.
Этот выход есть всегда, но код... писать надо.
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #32857257
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Твой предшественник объехал необновляемость на ПРОГРАММНОМ обновлении.

Нет... эти формы я сам делал. Сначала набор записей для формы был на базе одной таблицы, и было условие по where+ фильтры на форме. Потом переделал так как написал.

P.S.
Сейчас понемногу убираю код и проверяю на необновляемость.

...а форма глючить может ?
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #32857317
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> ...а форма глючить может ?
Отвечаю сам - наверное может. В форме на событии "текущая запись" стоит вызов функции. Функция меняет цвет шрифта на некоторых полях( Если me.Dirty=true то изменить цвет-вот и весь КОД!!!).
УБИРАЮ ВЫЗОВ ФУНКЦИИ начинает РУГАТСЯ КАК И ПОЛОЖЕНО!!!

Заметил, что если перед функцией поставить doEvents - также начинает ругатся как и положено.

Что это такое не понимаю...
Может пока Акс(или Jet) обрабатывает функцию забывает про свои прямые обязанности???
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #32857330
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>...а форма глючить может ?

Может, но чаще глючит программист.
-----------------
Проверка обновляемости представления очень проста для MDB:
делаем запрос,
открываем запрос (безо всякой формы),
если в таблице есть строка для ввода => обновляемый.
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #32857335
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений1234-5>> ...а форма глючить может ?
Отвечаю сам - наверное может. В форме на событии "текущая запись" стоит вызов функции. Функция меняет цвет шрифта на некоторых полях( Если me.Dirty=true то изменить цвет-вот и весь КОД!!!).
УБИРАЮ ВЫЗОВ ФУНКЦИИ начинает РУГАТСЯ КАК И ПОЛОЖЕНО!!!

Заметил, что если перед функцией поставить doEvents - также начинает ругатся как и положено.

Что это такое не понимаю...
Может пока Акс(или Jet) обрабатывает функцию забывает про свои прямые обязанности???

Гадом буду, она еще me.Dirty=false делает, либо есть обработчик на BeforeUpdate.
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #32857414
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот код...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Form_Current()

MyFunc

If Me.RecordsetClone.RecordCount <  1  Then Exit Sub
Forms!П1.СписокIstor = (Me.CurrentRecord -  1 )
Me.Dregs.SetFocus

End Sub
Вот функция...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Function MyFunc()
Select Case True
    Case Me.Dirty = False And Me.NewRecord = False 'Просмотр записи
        Me.НадписьСостояниеЗаписи.Caption = "Состояние: Просмотр записи..."
        Me.НадписьСостояниеЗаписи.ForeColor =  0 
        Me.NORMA.ForeColor =  0 
        Me.Dregs.ForeColor =  0 
        Me.Причина.ForeColor =  0 
        Me.NPROZ.ForeColor =  0 
        Me.Прим.ForeColor =  0 
        Me.Poliv.ForeColor =  0 
        
    Case Me.Dirty = True And Me.NewRecord = False 'Редактирование записи
        Me.НадписьСостояниеЗаписи.Caption = "Состояние: Редактирование записи..."
        Me.НадписьСостояниеЗаписи.ForeColor =  255 
        Me.NORMA.ForeColor =  255 
        Me.Dregs.ForeColor =  255 
        Me.Причина.ForeColor =  255 
        Me.NPROZ.ForeColor =  255 
        Me.Прим.ForeColor =  255 
        Me.Poliv.ForeColor =  255 
    Case Me.Dirty = True And Me.NewRecord = True 'Редактирование новой записи
        Me.НадписьСостояниеЗаписи.Caption = "Состояние: Редактирование новой записи..."
        Me.НадписьСостояниеЗаписи.ForeColor =  16711680 
        Me.NORMA.ForeColor =  16711680 
        Me.Dregs.ForeColor =  16711680 
        Me.Причина.ForeColor =  16711680 
        Me.NPROZ.ForeColor =  16711680 
        Me.Прим.ForeColor =  16711680 
        Me.Poliv.ForeColor =  16711680 
 End Select
End Function
Если к функции не обращаюсь то ругается!!!

P.S.
Затметил еще одну особенность
В начале функции ставлю
Application.Echo False
в конце
Application.Echo true
и тоже начинает ругатся необновляемостью как и должно.
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #32857457
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чудес не бывает. Полный код модуля формы приведи.
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #32857545
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без кода на событиях Open Close Timer Unload Load и некоторых полей.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
Private Sub Form_BeforeUpdate(Cancel As Integer)
If Flg Then
Else
КодПоследов = Me.Код_Последов
End If
curRecDel = Me.CurrentRecord
If Flg Then
Flg = False
End If
If Me.Dirty And Not Me.NewRecord Then DoCmd.OpenQuery ("СохрДоИзмененияIst"), acViewNormal, acAdd

Dim Ki As Variant
 Me.IDENT = ОписаниеПеремен.IDENT
 Me.DATID = Date + Time
 Ki = Nz(Me.Код_Обработки,  0 )
If Ki <>  2  And Ki <>  8  And Ki <>  82  And Ki <>  81  Then
Me.Код_Обработки =  1 
End If

Set rsFrm = Me.RecordsetClone
RecCount = rsFrm.RecordCount
If rsFrm.BOF And rsFrm.EOF Then
curRec =  0 
Exit Sub
End If
rsFrm.MoveFirst
curRec =  1 
Do While rsFrm![Id_Sequence] <> КодПоследов
rsFrm.MoveNext
If rsFrm.EOF Then Exit Do
Loop
rsFrm.MovePrevious

If rsFrm.BOF Then rsFrm.MoveNext

кодПоследовПред = rsFrm![Id_Sequence]

If Not rsFrm.EOF Then rsFrm.MoveNext
If rsFrm.EOF Then
rsFrm.MovePrevious
кодПоследовCлед = rsFrm![Id_Sequence]
End If
rsFrm.MoveNext
If rsFrm.EOF Then
rsFrm.MovePrevious
кодПоследовCлед = rsFrm![Id_Sequence]
Else
кодПоследовCлед = rsFrm![Id_Sequence]
End If

End Sub
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
Private Sub Form_AfterUpdate()

FlgНеНач = True
Me.AllowAdditions = False
If Not Me.ФлажокНеНачислять Then
Call Обновление2
Else
Call ОбновлениеLight2
End If

Me.SetFocus
Me.Requery

If flgButDel Then
flgButDel = False
Exit Sub
End If

If curRec =  0  Then Exit Sub
If НаправлениеСтрелки <>  0  Then
    If НаправлениеСтрелки = vbKeyDown Then
curRec =  1 

rsFrm.MoveFirst
Do While rsFrm![Id_Sequence] <> кодПоследовCлед
rsFrm.MoveNext
If rsFrm.EOF Then Exit Do
curRec = curRec +  1 
Loop
rsFrm.Close
Set rsFrm = Nothing
DoCmd.GoToRecord acDataForm, "ФормаОбработкаIstor", acGoTo, curRec
Exit Sub
    End If

If НаправлениеСтрелки = vbKeyUp Then
   curRec =  1 

rsFrm.MoveFirst
If rsFrm.BOF Then Exit Sub
Do While rsFrm![Id_Sequence] <> кодПоследовПред
rsFrm.MoveNext
If rsFrm.EOF Then Exit Do
curRec = curRec +  1 
Loop
rsFrm.Close
Set rsFrm = Nothing
DoCmd.GoToRecord acDataForm, "ФормаОбработкаIstor", acGoTo, curRec
Exit Sub
    End If
    
End If

End Sub
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)


    Select Case KeyCode
Case vbKeyF5 'добавить и копировать запись
    KeyCode =  0 
    Call Кнопка33_Click
    Exit Sub
Case  46  'Удалить запись клав Del
    KeyCode =  0 
    Call Кнопка39_Click   'Удаление записи
    Exit Sub
Case  35  ''Закрытие формы end
    KeyCode =  0 
    Call Кнопка24_Click
    Exit Sub

End Select


Dim bolReturn As Boolean
ОписаниеПеремен.FrmHwnd = Me.hwnd
bolReturn = fIsComboOpen()
If bolReturn Then Exit Sub

   On Error GoTo HandleErrors
   Err.Clear
   НаправлениеСтрелки =  0 
    Select Case KeyCode
        Case vbKeyDown
        НаправлениеСтрелки = KeyCode
        KeyCode =  0 
            DoCmd.GoToRecord Record:=acNext
            Case vbKeyUp
        НаправлениеСтрелки = KeyCode
        KeyCode =  0 
            DoCmd.GoToRecord Record:=acPrevious
    End Select
On Error Goto  0 
    Exit Sub

HandleErrors:
    Select Case Err.Number
        Case  2105 
            KeyCode =  0 
        Case Else
            MsgBox "Error: " & Err.Number & " " & Err.Description
            Err.Clear
    End Select
On Error Goto  0 

End Sub
Код: plaintext
1.
2.
3.
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
MyFunc
End Sub
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #32857625
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта строка сохраняет (копирует) еще не измененные данные...
Код: plaintext
If Me.Dirty And Not Me.NewRecord Then DoCmd.OpenQuery ("СохрДоИзмененияIst"), acViewNormal, acAdd
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #32858238
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон... пардон. Сроду не писывал такой длинный код в формах Access-а.
Всегда было лень...

Честно говоря вникать не охота.
Но событие Form_BeforeUpdate обработано и, видимо, где-то в нем прямо или косвенно сброшено состояние Dirty формы или Recordset-а.
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #32858298
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks2 я попробую облегчить эту форму(но чтоб не ругалась не обновляемостью) и выложить базу примерно часа через 4-5. Сегодня работы много.

P.S.
Ну а как ты(если можно) говорил я сделал и получаю щастье...
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #32858859
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks2 >> база в архиве 523 кб меньше сделать не могу(начинает ругатся). Если хочешь - по почте отправлю.
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #32859494
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну отправь, взгляну из любопытства: smol(dog)dpt.ustu.ru
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #32859778
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лови, отправил.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Объект Recordset не является обновляемым ?
    #39345771
igv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
igv
Гость
Столкнулась с такой же проблемой, милые знатоки, помогите пожалуйста. Почему мой запрос не является обновляемым?
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #39345799
igv, у вас связь многие-ко-многим, поэтому не обновляемый. Должно быть 1 ко многим.
Вы связываете не по тем полям, тем более, что у них разный числовой тип. Не понял, какая из таблиц должна быть на стороне 1, но при правильной организации БД ключевое поле (счетчик) должно связываться с индексированным полем типа "Длинное целое" в таблице на стороне "многие". И связь эту нужно создать в схеме данных с поддержкой целостности.

ЗЫ. Увидеть объекты смог только при открытии с нажатым Shift-ом. Это защита от советчиков?
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #39345926
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев ),
Это защита от Некомпетентных советчиков.
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #39348077
aleks2>>Дак вот если из этих форм код убираешь - начинает ругатся "Необновляемым".

Твой предшественник объехал необновляемость на ПРОГРАММНОМ обновлении. Т.е. он сам в коде отправляет команду обновления на нужную таблицу.
Этот выход есть всегда, но код... писать надо.

где можно посмотреть как это сделано?
...
Рейтинг: 0 / 0
Объект Recordset не является обновляемым ?
    #39349063
igv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
igv
Гость
Анатолий ( Киев ), огромное спасибо, Вы мне очень помогли
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Объект Recordset не является обновляемым ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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