powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ошибка при (Update) ADO - рекордсета
16 сообщений из 16, страница 1 из 1
ошибка при (Update) ADO - рекордсета
    #32364196
пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
при работе с базой Access ,в VB6 ,в эллементе DataGrid отображена иформация из запроса один - ко - многим .Запрос обновляемый это проверено .
Но после внесения изменений в ячейках DataGrid и попытке сделать Update рекордсета возникает ошибка :
"Insufficient key column information for updating or refreshing".Пожалуйста подскажите как сохранить изменения в БД.
...
Рейтинг: 0 / 0
ошибка при (Update) ADO - рекордсета
    #32364298
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Среди списка полей должны присутствовать первичные ключи всех участвующих в запросе таблиц. Но это не гарантирует. Обновлять представления - порочный и тернистый путь, его надо избегать любыми доступными способами.
...
Рейтинг: 0 / 0
ошибка при (Update) ADO - рекордсета
    #32364333
пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Обновлять представления - порочный и тернистый путь ....." -тогда пожалуйста укажите другой путь сохранения внесённых пользователем изменений в БД ?.
...
Рейтинг: 0 / 0
ошибка при (Update) ADO - рекордсета
    #32364342
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rs.Properties("Unique Table")="ИмяТаблицы"
правда непонятно куды это в грид пихать.
...
Рейтинг: 0 / 0
ошибка при (Update) ADO - рекордсета
    #32364680
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор"Обновлять представления - порочный и тернистый путь ....." -тогда пожалуйста укажите другой путь сохранения внесённых пользователем изменений в БД ?.

Если пользоваться автоматическим построением запросов на изменение, любезно предоставленным ADO, то запрос, формирующий набор данных, должен быть по одной таблице и быть крайне простым, чтобы ADO смогло сгенерировать правильные запросы на обновления. Иначе - subj.

Если запрос, формирующий набор данных, сложный, то надо генерировать запросы на обновление ручками, а не полагаться на автоматику, которая, как известно, работает правильно только в ограниченном диапазоне.
...
Рейтинг: 0 / 0
ошибка при (Update) ADO - рекордсета
    #32444708
Pantalone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если работаешь с True DBGrid, то замечу что грид надо рекверить после изменения данных строки, а точнее не грид, а рекордсет на основе которого он открыт. Тогда данные измененные в одной ячейке изменятся и в других записях которые на эти данные ссылаются. Но с этим реквери связан один трабл - скроллинг грида уезжает на начальные позиции и работать так очень геморно, каждый раз нужно обратно крутить скроллинг, а точно это сделать не получается и пожтому все уезжает.
...
Рейтинг: 0 / 0
ошибка при (Update) ADO - рекордсета
    #32444711
Pantalone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот что делать если к гриду привязана временная таблица? Та же ошибка выдается!
...
Рейтинг: 0 / 0
ошибка при (Update) ADO - рекордсета
    #32444909
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А первичный ключ есть на таблице?
...
Рейтинг: 0 / 0
ошибка при (Update) ADO - рекордсета
    #32447565
Pantalone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот как создается временная таблица из клиента:

CREATE TABLE [dbo].[#client] (
[Id_Client] [int] IDENTITY (1, 1) NOT NULL ,
[Name] [varchar] (500) COLLATE Cyrillic_General_CI_AS NULL
) ON [PRIMARY]

ALTER TABLE [dbo].[#client] WITH NOCHECK ADD
CONSTRAINT [PK_#client] PRIMARY KEY CLUSTERED
([Id_Client]) ON [PRIMARY]

Вроде ключ есть.
Фигня в том что если зайти под админом - грид дает редактировать данные, а если простым юзером - выскакивает вышеозаченная ошибка. Где грабли?
...
Рейтинг: 0 / 0
ошибка при (Update) ADO - рекордсета
    #32447841
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[dbo] попробуй убрать, и #сlient указывай без квадратных скобок
...
Рейтинг: 0 / 0
ошибка при (Update) ADO - рекордсета
    #32448339
Nikita_MV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот, самый надежный путь Не знаю подойдет ли )
Использовать обьект ADODB.Connection
и его метод .Execute
Например:

ADOCon = CREATEOBJECT("ADODB.Connection")
ADOCon.ConnectionString="Driver={Microsoft Visual FoxPro Driver}; SourceType=DBF; SourceDB=D:\maykov"
ADOCon.Open
ADOCon.Execute("INSERT INTO buffer(NUMDOC) Values " 212354")

Естественно SQL запрос может быть и на обновление, и на удаление )
А можно и команду передать :) например:

ADOCon.Execute("SET DELETE OFF")
или
ADOCon.Execute("SET NULL ON")

Может вам и другое надо, но свести к этому програмно всегда можно

А мой вопрос так и висит....
Как в данном случае снять пометки на удаление )
...
Рейтинг: 0 / 0
ошибка при (Update) ADO - рекордсета
    #32448401
Pantalone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dankov
Причем здесь [dbo] и квадратные скобки? Говорю же под админом такая структура отрабатывает отлично.
Почему не редактируется временная таблица из грида вижу две причины:
1) Предположительно у админа права на Update таблиц есть по умолчанию, а у юзеров только на селект, но как повесить разрешение на Uрdate временных таблиц если их не видно в tempdb?
2) Под юзером по какой-то причине при создании временной таблицы не создается ключ.

Как быть-то?
...
Рейтинг: 0 / 0
ошибка при (Update) ADO - рекордсета
    #32448600
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПричем здесь [dbo] и квадратные скобки? Говорю же под админом такая структура отрабатывает отлично.
Почему не редактируется временная таблица из грида вижу две причины:
1) Предположительно у админа права на Update таблиц есть по умолчанию, а у юзеров только на селект, но как повесить разрешение на Uрdate временных таблиц если их не видно в tempdb?
2) Под юзером по какой-то причине при создании временной таблицы не создается ключ.
Как быть-то?

При том, что дельфи генерит запросы на изменения, и подставляет там в качестве owner неизвестно что (под админом подставится dbo и проблем не будет). Квадратные скобки - потому что это неспецифично для временных таблиц, и таблица может вовсе не стать временной - моё предположение, не более того.

Вообщем, открой профайлер и посмотри какие запросы дельфи шлет.
...
Рейтинг: 0 / 0
ошибка при (Update) ADO - рекордсета
    #32449016
Pantalone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dankov
Какое дельфи? Очнись, мы о VB говорим и находимся в разделе VB :)
...
Рейтинг: 0 / 0
ошибка при (Update) ADO - рекордсета
    #32449671
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, перепутал, сорри. Но сути это меняет, ADO оно в Африке - ADO.
...
Рейтинг: 0 / 0
ошибка при (Update) ADO - рекордсета
    #32449792
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 пав
А простой юзер в каких ролях фигурирует?

Magnus
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ошибка при (Update) ADO - рекордсета
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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