|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
Здравствуйте. Есть приложение написанное на Delphi с использованием DAO компонент. На одной из баз Access, с которой работает приложение появляется ошибка "Ключ поиска не найден ни в одной записи" при попытке записи в одну из таблиц БД. С чем может быть связана эта ошибка? Как ее побороть? Что может быть причиной: приложение или Access, при том что проблема только на одной базе на одной таблице? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 07:16 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
TigeraЗдравствуйте. Есть приложение написанное на Delphi с использованием DAO компонент. На одной из баз Access, с которой работает приложение появляется ошибка "Ключ поиска не найден ни в одной записи" при попытке записи в одну из таблиц БД. С чем может быть связана эта ошибка? Как ее побороть? Что может быть причиной: приложение или Access, при том что проблема только на одной базе на одной таблице? изменяете через рекордсет ? изменяете ключевое поле ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 08:13 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
да, изменяю через рекордсет. ключевое поле не трогаю. В нем записан Id строки, по нему просто идет отбор нужной записи для изменения. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 08:15 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
Tigeraда, изменяю через рекордсет. ключевое поле не трогаю. В нем записан Id строки, по нему просто идет отбор нужной записи для изменения. прилож. - многопользов. ? может запись удалена к тому времени ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 08:44 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
да, приложение многопользовательское. Запись не удалена, это проверено на 100%. Он отбирает запись по значению ключевого поля, но вот обновить ее почему-то не потом может. Время меджу отбором и попыткой обновлдения проходит не так уж и много, это около 3 строк кода с установкой новых значений полей. Т.е. происходит примерно следующее(псевдокод): CreateRecordset("select * from table where id=1") - тут все отобрали, получили одну выбранную запись SetField("data1","1") - новое значение указали для колонки data1 SetField("data2","2") - новое значение указали для колонки data2 UpdateRecordset() - тут получили ошибку про ключ. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 09:10 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
Tigera... Т.е. происходит примерно следующее(псевдокод): CreateRecordset("select * from table where id=1") - тут все отобрали, получили одну выбранную запись SetField("data1","1") - новое значение указали для колонки data1 SetField("data2","2") - новое значение указали для колонки data2 UpdateRecordset() - тут получили ошибку про ключ. вы бы псевдокодом не напрягались - выложили бы реальный фрагмент но, навсякий, - в псевдокоде незаметил EditRecordset() ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 10:44 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
просто не хотала засорять форум по Access дельфячим кодом. вот реальный код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
собсвенно спотыкается на loc_TableCalls.Post; ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 11:32 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
Tigera, у таблицы Calls - вообще ключ-то есть ? НЕ поле с автоинкриментом, а ключевое(ые) поле что за компонент loc_TableCalls ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 12:30 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
конечно есть. Такая база не одна. Их много подобных, и со всеми приложение ведет себя нормально, проблем не возникат. А вот с этой такая беда. Проблема вылазит не постоянно. Ориентировочно на 10 нормально обновленных записей из этой таблицы приходится одна с такой проблемой. loc_TableCalls это объект TDAOQuery; ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 12:53 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
Tigeraпоявляется ошибка "Ключ поиска не найден ни в одной записи" при попытке записи в одну из таблиц БД. С чем может быть связана эта ошибка? ... Проблема вылазит не постоянно. Ориентировочно на 10 нормально обновленных записей из этой таблицы приходится одна с такой проблемой. Я помню вы год назад обращались с похожими вопросами. Может быть дело все в том же - в повреждении базы при многопользовательской работе? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 14:09 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
повреждение может быть, покрайней мере у меня такое же ощущение. Вопрос в том, как его починить. Из того что успела уже почитать по этому поводу, вероятно проблемы с индексами. Но вот как эти индексы поправить не знаю. Говорят функция "Сжать и востановить БД..." не помогает при такой проблеме, но я не поверила и попробовала сделать. И вот ведь, действительно НЕ помогло. Проблема осталась. А других способов "борьбы" с Access я не знаю. Ну и плюс может кто подскажет куда еще покопать, вдруг я чего не знаю или сама где накосячила :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 14:18 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
TigeraНу и плюс может кто подскажет куда еще покопать, вдруг я чего не знаю или сама где накосячила :-) Помните прошлый раз были ошибки с блокировками записей. Вы решили эту проблему? Судя по прошлым обсуждением, проблема в том, что вы как-то по-особенному работаете с Access - и у него шарики за ролики из-за этого заезжают... Поиск по ошибке "Ключ поиска не найден ни в одной записи" привел меня к такой информации, что это повреждается база. Тем более ключ-то у Вас есть, как Вы утверждаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 14:36 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
MAYAKOV_SV Помните прошлый раз были ошибки с блокировками записей. Вы решили эту проблему? Да, мы просто перешли с компонентов ADO, на DAO. И забыли про эту проблему как про страшный сон :-) MAYAKOV_SV Судя по прошлым обсуждением, проблема в том, что вы как-то по-особенному работаете с Access - и у него шарики за ролики из-за этого заезжают... Поиск по ошибке "Ключ поиска не найден ни в одной записи" привел меня к такой информации, что это повреждается база. Тем более ключ-то у Вас есть, как Вы утверждаете. Хорошо, остановимся на вариате что повреждается база. Вопрос как ее починить? "Сжать и восстановить БД..." как я уже сказала не помогает. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 14:41 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
TigeraДа, мы просто перешли с компонентов ADO, на DAO. И забыли про эту проблему как про страшный сон :-) Я очень рад. TigeraХорошо, остановимся на вариате что повреждается база. Вопрос как ее починить? "Сжать и восстановить БД..." как я уже сказала не помогает. В конце года мне дали задание - писать прогу. Приложение получилось многопоточное. У меня были всякие проблемы - портился BLOB в DBF, и еще какие-то. Все таки знаний меня где-то тоже бывает немного. Не знал как быть. Решил их при помощи критических секций - на операции с базой повесил блокировку на уровне кода DELPHI: Код: 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.
Смысл этого в том, что разных потоков данная операция будет не будет выполнятся одновременно. Если это не поможет, можно побробовать блокировки делать на все операции для данной таблицы или даже для всей базы. Ну это эксперимент провести можно. Хотя не факт, что это то, что Вам нужно... А два коннекта в одной программе остались? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 14:58 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
MAYAKOV_SVХотя не факт, что это то, что Вам нужно... А два коннекта в одной программе остались? Нет, он теперь один. Блокировки это хорошо конечно, но что-то пока не тянет лезть в код, ради одной "сумашедшей" базы. Да и клиент далеко и на нем экспериментровать с ПО не совсевсем корректно из определенных соображений(не прямой заказчик). Попробую еще с Access повоевать, если знаете действенные средства для этого, буду рада попробовать сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 15:08 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
Tigera... Но вот как эти индексы поправить не знаю. Говорят функция "Сжать и востановить БД..." не помогает при такой проблеме, но я не поверила и попробовала сделать. И вот ведь, действительно НЕ помогло. Проблема осталась. А других способов "борьбы" с Access я не знаю. импорт в новую пустую БД ещё попробуйте ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 15:14 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
ёимпорт в новую пустую БД ещё попробуйте Да, хороший совет. В первую очередь это лучше сделать. Если это не поможет, значит сама программа базу повреждает, как мне кажется. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 15:22 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
наконец дождалась ответ от клиента. Они попробовали импорт в новую БД, действия не помогли. Прога может и повреждает данные, но вот где и как тогда. И как можно еще попробовать починить ключи в БД Access. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 11:17 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
TigeraИ как можно еще попробовать починить ключи в БД Access. 1) Открыть таблицу. 2) В ключевом поле убрать признак "Ключевое поле" (Желтый ключик). 3) Нажать "Сохранить" 4) Опять установить данного поле как ключевое и сохранить. Вы писали, что это в одной базе только происходит, а что в других? Другие базы связанны с этой поврежденной? Если нет, то Вам нужно будет как-то восстановить ее, либо в программе разбиратся. Ну там SELECT на UPDATE можно поменять попробовать, к примеру. А лучше всего запросить у них базу, если возможно, и самой потестировать/поремонтировать - так вы быстрее разберетесь. Лучше, конечно, заранее тестировать все, перед опытной эксплуатацией. Мои пользователи, бывают в шоке иногда и начинают паниковать, когда в моих программах появляются неожиданно ошибки. Да и начальство бывает этим недовольно. Теперь стараюсь уделять больше внимание тестированию. Ну это так, лирическое отступление. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 15:02 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
Спасибо всем большое за помощь! Проблема найдена в несколько кривоватых настройках прав доступа к БД, а так же не совсем правильных действиях пользователя. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2011, 09:07 |
|
Ключ поиска не найден ни в одной записи
|
|||
---|---|---|---|
#18+
TigeraСпасибо всем большое за помощь! Проблема найдена в несколько кривоватых настройках прав доступа к БД, а так же не совсем правильных действиях пользователя. А расскажите поподробнее, плиз!! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 09:50 |
|
|
start [/forum/topic.php?fid=45&fpage=57&tid=1611704]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 158ms |
0 / 0 |