Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Access - как измененить значение поля? [D5, Win95/98]


Максим ©   (2004-07-30 01:44:00) 

Подскажите, пожалуйста.
Прямо в DBGrid редактирую таблицу базы (Ms Access). Добавляю новую строку, устанавливаю значения полей, сохраняю, все работает. А изменить значения уже существующих строк не могу. Возникает  “Запись не может быть обновлена, так как с момента последнего чтения значения некоторых полей могли быть изменены”. Если редактировать таблицу не непосредственно в DBGrid, а так:
ADOConnection.BeginTrans;
ADOTable.Insert;
ADOTable.Fields[0]:= 1;
…
ADOTable.Post,
…
все работает, но при измении значение поля существующей записи  
ADOConnection.BeginTrans;
ADOTable.Edit;
ADOTable.Fields[0]:= 1;
ADOTable.Post, метод Post генерирует ту же ошибку.
(Access 97, ADOConnection.ConnectionString:=  'Provider=Microsoft.Jet.OLEDB.4.0;
Persist Security Info=False; User ID=Admin;Data Source=db.mdb'. Не пойму где допускаю ошибку.


sniknik   (2004-07-31 10:48:00) [1]

> Есть или нет ключ по моему безразлично!
да ну?
тогда попробуй SQL запросом удалить 3ю(/любую) позицию в таблице из совершенно одинаковых записей, одинаковых по всем полям.  
а ведь в случае SQL сервером, общение идет именно на языке SQL.
(только без всяких обходных путей типа завести новую таблицу и перекачать туда все -1 запись, это уже признак интелектуального решения, чего нельзя требовать от компонент)
можеш также попробовать изменить 1 запись в ряду одинаковых, только именно одну. если даш решение тогда пожалуй все с тобой согласятся, ключь не нужен.
(аксес не совсем хороший пример конечно, у него есть режим локального доступа, лучше бы было взять "чистый" сервер у которого нет скрытых ключей(/уникальных идентификаторов), но ладно пусть будет аксесс)

> и в частной переписке, в конце концов он со мной согласился :)
наверняка только потому чтобы ты отстал, обьяснять основы упорствуюшим дилетантам часто очень утомительно.


starcomputer   (2004-07-31 09:38:00) [2]

Есть или нет ключ по моему безразлично!
Я уже долгое время пытаюсь решить этот вопрос и убедился, что пока не выполнишь close - open новые записи невозможно редактировать!
Так что если у кого-нибудь получиться сообщите плиз!!!

А ссылки на Королевство конечно не плохие, автор статей Shabal, мы с ним обсуждали этот вопрос и на форуме, и в частной переписке, в конце концов он со мной согласился :)


Leran2003   (2004-07-30 19:59:00) [3]

CursorLocation=clUseServer и будет тебе счастье :))


OhYoMaFa!   (2004-07-30 14:41:00) [4]

Вот несколько статей на эту тему:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=408
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=413
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=420
http://www.delphikingdom.com/mastering/ado.htm


ЮЮ   (2004-07-30 03:59:00) [5]

В таблице нет первичного ключа, а в записи до редактирования есть NULL-евые поля, поэтому запрос на модификацию и удаление не может найти эту запись в тавлице и считает, что она была уже кем-то изменена


Наверх

Титульная страница Поиск, карта сайта Написать письмо