Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Невозможно изменить запись присоединенной таблицы / 25 сообщений из 34, страница 1 из 2
12.06.2004, 18:19
    #32559433
caper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
Есть таблица на SQL сервере
CREATE TABLE [dbo].[zaprosy] (
[id_zapros] [int] IDENTITY (1, 1) NOT NULL ,
[data] [datetime] NULL ,
[is_sended] [bit] NULL ,
[user_name] [nvarchar] (50) COLLATE Cyrillic_General_CI_AS NULL
) ON [PRIMARY]

Пишу в нее данные:
Код: 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.
Dim MyODBC As Workspace
Dim MyConn As Connection
Dim Conn_Str As String
Conn_Str = "ODBC;DATABASE=workbase;UID=sa;PWD=;DSN=workbase"
MyODBC.BeginTrans
If MsgBox("ВОПРОС", vbYesNo + vbExclamation) = vbNo Then
    Exit Sub
End If
Set rstZapros = MyConn.OpenRecordset("select * from zaprosy where is_sended=0 order by data", dbOpenDynaset,  0 , dbOptimistic)
If rstZapros.RecordCount =  0  Then
    rstZapros.AddNew
        rstZapros!data = Date
        rstZapros!user_name = CurrentUser
    rstZapros.Update
    k = rstZapros!id_zapros
Else
    rstZapros.MoveLast
    k = rstZapros!id_zapros
End If
...
....
MyODBC.CommitTrans
MyConn.Close
MyODBC.Close
Set MyConn = Nothing
Set MyODBC = Nothing

Все прелестно. Пишет. При открытии этой же таблицы руками вижу эту новую запись. Но редактировать или удалить не дает, пишет "процесс остановлен ядром джет так как другой пользователь пытается изменить те же данные".
Все - транзакцию завершил, переменные убил.

В чем я торможу?
...
Рейтинг: 0 / 0
12.06.2004, 18:22
    #32559434
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
Первичный ключ в таблице есть? Аксесс его видит?
...
Рейтинг: 0 / 0
12.06.2004, 18:36
    #32559437
caper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
есть, видит
открываю таблицу вручную, добавляю запись, закрываю таблицу - дает делать все (удалять и изменять). Блокирует только те строки, которые добавил код.
...
Рейтинг: 0 / 0
12.06.2004, 18:46
    #32559441
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
авторMyODBC.BeginTrans
If MsgBox("ВОПРОС", vbYesNo + vbExclamation) = vbNo Then
Exit Sub
End If
Вот это подозрительная штука (хотя дело скорее всего не в ней). Начинаем транзакцию и выходим из процедуры.
...
Рейтинг: 0 / 0
12.06.2004, 18:52
    #32559446
caper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
Да нет, тут проходим дальше - если выход по нет, то и писать ничего не будет...
...
Рейтинг: 0 / 0
12.06.2004, 18:53
    #32559447
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
Но транзакция-то открылась до выхода и осталась незакрытой.
...
Рейтинг: 0 / 0
12.06.2004, 18:54
    #32559448
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
А следующая транзакция ее не отменит, она будет вложенной в нее. Таким образом:

начали транзакцию
начали транзакцию
закончили транзакцию

А первую не закончили.
...
Рейтинг: 0 / 0
12.06.2004, 19:24
    #32559459
caper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
сделал так:
перегрузил сервер
перегрузил рабочий комп
очистил таблицу через ЕМ
перенес begintrans после вопроса
прогнал - результат тот же
...
Рейтинг: 0 / 0
12.06.2004, 19:35
    #32559464
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
А в той части программы, где многоточия, есть ли где-нибудь rstZapros.Close?
...
Рейтинг: 0 / 0
13.06.2004, 09:58
    #32559600
caper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
нету
...
Рейтинг: 0 / 0
13.06.2004, 10:08
    #32559604
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
странный код:
Код: plaintext
1.
2.
3.
 
MyConn.close есть    - но нет создания
Conn_Str присвоена - но не использована
давай всё целиком может - ляпа в скрытой части
...
Рейтинг: 0 / 0
13.06.2004, 10:22
    #32559607
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
caperнету
Тоже нехорошо. Таблица может запираться.
...
Рейтинг: 0 / 0
13.06.2004, 10:27
    #32559612
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
Уверен на 99.9, что проблема в
автор[is_sended] [bit] NULL

Должен быть default !!!!!!!!
Без него Акцес падает в полях типа bit
...
Рейтинг: 0 / 0
13.06.2004, 11:48
    #32559645
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
caperесть, видит
открываю таблицу вручную, добавляю запись, закрываю таблицу - дает делать все (удалять и изменять). Блокирует только те строки, которые добавил код.

нету первичного при генерации по твоему скрипту
при линковке спрашивает "кто кей"

sql2000
...
Рейтинг: 0 / 0
13.06.2004, 11:58
    #32559652
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
при наличии ключа скрипт выглядет вот так
проверь себя
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[zaprosy]') and OBJECTPROPERTY(id, N'IsUserTable') =  1 )
drop table [dbo].[zaprosy]
GO

CREATE TABLE [dbo].[zaprosy] (
	[id_zapros] [int] IDENTITY ( 1 ,  1 ) NOT NULL ,
	[data] [datetime] NULL ,
	[is_sended] [bit] NULL ,
	[user_name] [nvarchar] ( 50 ) COLLATE Cyrillic_General_CI_AS NULL 
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[zaprosy] WITH NOCHECK ADD 
	CONSTRAINT [PK_zaprosy] PRIMARY KEY  CLUSTERED 
	(
		[id_zapros]
	)  ON [PRIMARY] 
GO
...
Рейтинг: 0 / 0
13.06.2004, 12:07
    #32559655
caper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
Уверен на 99.9, что проблема в
автор[is_sended] [bit] NULL

Должен быть default !!!!!!!!
Без него Акцес падает в полях типа bit

ДАААААААААААААААА!
Именно после установки дефолта все пашет!
Всем спасибо!!! Особенно Rivkin Dmitry!!!
...
Рейтинг: 0 / 0
13.06.2004, 12:08
    #32559657
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
А я с самого начала спросил, видит ли Аксесс ключ. Выходит, надо спрашивать несколько раз и разными голосами.
...
Рейтинг: 0 / 0
13.06.2004, 12:11
    #32559658
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
рабочий код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Dim MyODBC As Workspace
Dim MyConn As Connection
Dim rstZapros As DAO.Recordset
Dim Conn_Str As String
Dim Sedd_String As String
Dim k As Variant
Set MyODBC = CreateWorkspace("", "admin", "", dbUseODBC)
MyODBC.BeginTrans
Conn_Str = "ODBC;DATABASE=workbase;UID=sa;PWD=;DSN=workbase"
Set MyConn = MyODBC.OpenConnection("", , , Conn_Str)
Sedd_String = "select * from zaprosy where is_sended=0 order by data"
Set rstZapros = MyConn.OpenRecordset(Sedd_String, dbOpenDynamic,  0 , dbPessimistic)
     rstZapros.AddNew
     rstZapros!Data = Date
     rstZapros!user_name = CurrentUser
     rstZapros.Update
    rstZapros.Close
  MyConn.Close
MyODBC.CommitTrans
MyODBC.Close
...
Рейтинг: 0 / 0
13.06.2004, 12:23
    #32559664
caper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
2Саныч: первичный ключ был и есть, иначе бы не писалось в таблицу!
Все заработало после того, как установил дефолтовое значение поля [is_sended] в таблице.
...
Рейтинг: 0 / 0
13.06.2004, 12:28
    #32559673
caper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
2Shuhard: сорри, не стояла галочка включать в скрипт индексы и проч... ключик был.
У тебя работает без установки дефолта на поле [is_sended]?
...
Рейтинг: 0 / 0
13.06.2004, 12:34
    #32559678
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
Ой... А почему оно стерлось???
...
Рейтинг: 0 / 0
13.06.2004, 12:36
    #32559682
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
Владимир СанычОй... А почему оно стерлось???
мутаторов много - рушиться транзакционность
...
Рейтинг: 0 / 0
13.06.2004, 12:37
    #32559683
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
Саныч, я не трогал. Чессно слово.
...
Рейтинг: 0 / 0
13.06.2004, 12:37
    #32559684
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
caper2Shuhard: сорри, не стояла галочка включать в скрипт индексы и проч... ключик был.
У тебя работает без установки дефолта на поле [is_sended]?
верх - руками
низ - VBA
...
Рейтинг: 0 / 0
13.06.2004, 12:38
    #32559686
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно изменить запись присоединенной таблицы
Всем: дело не в первичном ключе, а в том, как я понимаю, что в Акцесе тип
bit не иожет принимать значение NULL, что и происходит, когда такое поле определено без дифолта. Почему то это влияет на всю таблицу, а сообщение при этом, если выдается - то не разумное. Я долго мучался, пока не понял что к чему. Я уже как то писал о том, что подобный эффект происходит и в случае объявления типов, которые Акс не распознает, например, bigint; или если в IDENTITY определить тип отличный от int ...
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Невозможно изменить запись присоединенной таблицы / 25 сообщений из 34, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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