Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Объект Recordset не является обновляемым ? / 22 сообщений из 22, страница 1 из 1
09.01.2005, 10:31
    #32856680
Евгений1234-5
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объект Recordset не является обновляемым ?
А-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
09.01.2005, 11:44
    #32856707
aleks2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объект Recordset не является обновляемым ?
Все очень просто:

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

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

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

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

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

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

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

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

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

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

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

Гадом буду, она еще me.Dirty=false делает, либо есть обработчик на BeforeUpdate.
...
Рейтинг: 0 / 0
10.01.2005, 13:12
    #32857414
Евгений1234-5
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объект Recordset не является обновляемым ?
Вот код...
Код: 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
10.01.2005, 13:43
    #32857457
aleks2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объект Recordset не является обновляемым ?
Чудес не бывает. Полный код модуля формы приведи.
...
Рейтинг: 0 / 0
10.01.2005, 14:27
    #32857545
Евгений1234-5
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объект Recordset не является обновляемым ?
Без кода на событиях 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
10.01.2005, 15:17
    #32857625
Евгений1234-5
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объект Recordset не является обновляемым ?
Эта строка сохраняет (копирует) еще не измененные данные...
Код: plaintext
If Me.Dirty And Not Me.NewRecord Then DoCmd.OpenQuery ("СохрДоИзмененияIst"), acViewNormal, acAdd
...
Рейтинг: 0 / 0
11.01.2005, 06:41
    #32858238
aleks2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объект Recordset не является обновляемым ?
Пардон... пардон. Сроду не писывал такой длинный код в формах Access-а.
Всегда было лень...

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

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

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

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

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


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