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

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

При попытке редактировать запрос получаю сообщение. [D7, MS Access+ADO]


Fynjy ©   (2004-07-30 07:14:00) 

Есть проблемка! При попытке редактировать запрос получаю сообщение: "Key column information is insufficient or incorrect. Too many rows were affected by update." Причем это возникает при попытке редактировать записи, которые совпадают с другими записями.Причем здесь ключ?


sniknik   (2004-08-11 23:22:00) [1]

> Если сервер дает ошибку - пусть будет добр отменить операцию
пожалуйста, нарисуй алгоритм, ... напомню ключа нет (!!!)
поля в гриде
f1
-
a
a
b
a
b

редактируем 2-ю строку, сервер сделал апдейт и вернул что под изменение попало больше чем одна запись, выдало передупреждение, меняли к примеру a на b... получилось
f1
-
b
b
b
b
b

давай, делай откат.
(частный случай, когда ключь есть в базе но не в запросе не рассматриваем, т.к. нужен унивесальный и унифицированный метод)

а лучше поверь, сделано все наилутшем из возможных методов, и учи и используй то что есть а не придумывай как оно бы было если бы...

> Все-таки мне кажется здесь недоработка
перекрестись, может перестанет. ;о))


сергей1   (2004-08-11 21:44:00) [2]

странно то, что при выдаче ошибки действие выполняется. Если сервер дает ошибку - пусть будет добр отменить операцию, если проводит операцию - не надо показывать никаких ошибок. Такая ситуация нелогична. Ведь проблема действительно есть - с одной стороны запрос на update законен и должен быть выполнен без проблем, с другой - когда ты редактируешь грид или dbedit ты имеешь в виду совершенно конкретную строку. Все-таки мне кажется здесь недоработка


sniknik   (2004-08-11 10:52:00) [3]

> это странно, может глюк ?
какая же это странность? в запросе update явно указывается where f1=a
условие совпадает - апдейтится. а в случае редактирования в гриде попытка обновления 1-й записи! с неопределенным(и неопределяемым) условием, вот и глюк/предупреждение.
все логично, и по другому не получится.


сергей1   (2004-08-11 09:07:00) [4]

ответ же уже был, даже если таблица с ключем :

p_key | f1
-----------
1     | a  
2     | a
3     | b
4     | a  

при попытке редактирования запроса типа :

select f1 from Table1 where f1 = 'a'

будет вываливаться эта ошибка, потому-что сервак не в состоянии определить, какую из трех строк ты имеешь в виду.
Правда есть такой прикол, что, при попытке update'ить этот запрос, после появления этой ошибки, все записи , где f1 = 'a' все равно меняются, это странно, может глюк ?
(D7, MS SQL)


sniknik   (2004-08-11 07:58:00) [5]

> Но первичный ключ в таблице есть!
а в запросе? или там только выбранные поля? + menart ©   (11.08.04 07:45) [6]. ???


menart   (2004-08-11 07:45:00) [6]


> I need help   (11.08.04 02:11) [5]
> Помогите, пожалуйста. При удалении записи получаю такую
> же ошибку (Key column insufficent ...). Но первичный ключ
> в таблице есть! В чём тогда проблема?


Чем пользуешься (СУБД+технология доступа+(таблица или запрос))?


I need help   (2004-08-11 02:11:00) [7]

Помогите, пожалуйста. При удалении записи получаю такую же ошибку (Key column insufficent ...). Но первичный ключ в таблице есть! В чём тогда проблема?


сергей1   (2004-08-03 19:36:00) [8]

такой косяк может появиться, если ты редактируешь запрос типа :

select distinct * from Table1

если таблица содержит что-то типа :
______
value1
value1
value2
value3

то результат получится :
______
value1
value2
value3

тогда, при попытке изменить value1 на что-то другое, откуда сервак может знать какую строчку ты имеешьв виду в оригинальной таблице - первую или вторую ?


sniknik   (2004-07-30 08:53:00) [9]

ну если бы ты знал внутреннюю структуру, ты бы тоже мог, а так тебе ждя общения с базой есть внешний "управленец" SQL, а у него вся идеология даотупа к записям на ключах построена.

кстати у аксеса другие заморочки зато (по той же причине по которой он мет редактировать), попробуй там удалить часть таблицы, солидную такую часть гдето в 15 (лучше больше) тыс. записей. думаю он тебе скажет что букмарков ему не хватает (поиши инфу про них и сам сможеш так же, только не в дельфевском хелпе ;).


Fynjy   (2004-07-30 08:15:00) [10]


> sniknik


А как же сам MS Acces справляется без него?


sniknik   (2004-07-30 08:12:00) [11]

должен быть.


Наверх

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