Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Недостаточно сведений ключевого поля для обновления / 9 сообщений из 9, страница 1 из 1
17.04.2009, 17:56
    #35939471
Mazai-XZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Недостаточно сведений ключевого поля для обновления
Доброго дня! Подскажите, в чём проблема? Есть форма, на ней адодц1 и датагрид1. есть текстовые поля, где отображаются данные из грида. Создаю кнопку "Удалить запись", в коде пишу Adodc1.Recordset.Delete. Удаление не происходит. Вернее сначала запись на секунду исчезает из таблицы, но через секунду выскакивает ошибка "Недостаточно сведений ключевого поля для обновления (run-time error -2147467259(80004005)" удаляемая запись появляется вновь и всё... Не пойму в чём дело, в другом проекте всё работает. База к проекту подключена программно (кодом), а не в настройках adodc. Помогите, плииз! очень надо!!!
...
Рейтинг: 0 / 0
18.04.2009, 10:34
    #35940135
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Недостаточно сведений ключевого поля для обновления
Ключевое поле отсутствует в таблице или выборке. Такое сообщение появляется при попытке удалить одну из нескольких идентичных записей.
...
Рейтинг: 0 / 0
21.04.2009, 11:58
    #35943796
Mazai-XZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Недостаточно сведений ключевого поля для обновления
Проблема решилась непонятным методом: в свойствах таблицы в акцессе поля были изменены с МЕМО на Текстовые и в VB сразуже заработала функция удаления.. непонятный глюк, но всё работает ) Спасибо тем, кто откликнулся. Надеюсь данное решение поможет )
...
Рейтинг: 0 / 0
25.04.2009, 12:18
    #35953828
Mazai-XZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Недостаточно сведений ключевого поля для обновления
Проблема вновь актуальна. Теперь, правда проявляется по другому. Если запись в таблице уникальна, то удаляется без проблем. Если же есть 2 и более одинаковых записей (полностью одинаковые, по причине повторного добавления в базу) , то выскакивает ошибка, проект останавливается, но при повторном открытии оказывается, что всё-таки удалились ... все одинаковые записи, тоесть например если в базе было 2 иванова И.И., при попытке удалить 1 из них - вылетает ошибка, но в итоге из базы удаляются все Ивановы И.И.. Подскажите как исправить сие, либо есть ли какой метод отслеживания записей в базе, например если есть уже в базе Иванов И.И с паспортом 12 34 567890, живущим по адресу ул.Улица д.1 кв.2, то второй раз эта запись больше не добавлялась. Благодарю за внимание! )
...
Рейтинг: 0 / 0
25.04.2009, 17:42
    #35954038
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Недостаточно сведений ключевого поля для обновления
вам нужен составной уникальный индекс в таблице.
...
Рейтинг: 0 / 0
28.04.2009, 12:54
    #35958209
Mazai-XZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Недостаточно сведений ключевого поля для обновления
big-dukeвам нужен составной уникальный индекс в таблице.
тоесть в самой акцессовской базе в каждой таблице создать поле со счётчиком? Или как? Поясните, плз, по подробнее =) Вообще в каждой таблице уже создал счётчик и даже присвоил ему значение ключевого поля. Напрямую из таблицы удаляется вроде-бы без проблем, но когда делаю запрос (когда в гриде остаются только требуемые записи) вылетает ошибка, что " недостаточно сведений из основной таблицы для обновления ". Плдскажите, как исправить. Спасибо! )
...
Рейтинг: 0 / 0
28.04.2009, 15:36
    #35958666
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Недостаточно сведений ключевого поля для обновления
Запрос покажите.
...
Рейтинг: 0 / 0
29.04.2009, 11:05
    #35960260
Mazai-XZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Недостаточно сведений ключевого поля для обновления
Antonariy, алгоритм такой: сначало делаю запрос к базе, если находяться повторяющиеся данные, то лишние копии пытаюсь удалять.
Запрос делаю так:
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\apbase.mdb;Mode=ReadWrite|Share Deny None;Persist Security Info=False"
Adodc1.RecordSource = "SELECT * FROM clients WHERE fio Like '" & apbase.prodavects.Text & "' UNION SELECT * FROM clients WHERE fio Like '" & apbase.pokupatelts.Text & "'UNION SELECT * FROM clients WHERE fio Like '" & apbase.Text19.Text & "'"
Set DataGrid1.DataSource = Adodc1
Adodc1.CommandType = adCmdText
Adodc1.CursorType = adOpenDynamic
Adodc1.Refresh

Юнион использую потому, что в таблице договор (Договор купли-продажи ТС) присутсвуют данные Продавца, покупателя, также могут быть доверенные лица с обеих сторон, Данные о Клиентах (собственно продавце, покупателе и доверенных лицах) хранаяться в отдельной таблице Clients, по-этому в запросе используется ЮНИОН, чтоб по каждому договору выводить ВСЕХ участвующих в нём клиентов. После этого, если найдено например 2 Иванова И.И. я пытаюсь удалить Одного из 2х Ивановых.
Удаляю так:
adodc1.RecordSet.Delete
И вот тут выскакивает ошибка. Если же Иванов вбазе один, то он удаляется без проблем.
Хотя по советам форумчан в таблицу (во все таблицы базы) добавил поле счётчика и задал его ключевым.
...
Рейтинг: 0 / 0
30.04.2009, 16:01
    #35963747
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Недостаточно сведений ключевого поля для обновления
Mazai-XZ,

Попробуйте вместо

adodc1.RecordSet.Delete

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


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