Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];

Вниз

Ошибка при удалении   Найти похожие ветки 

 
VAleksey   (2002-04-03 10:16) [0]

Привет всем. Для доступа к Оркалу использую ODAC. При
удалении записи возникает ошибка :
Update Failed: Found 0 records
С чем это иожет быть связано ?


 
Lusha   (2002-04-03 10:24) [1]

Я думаю с тем, что критериям в условии WHERE оператора UPDATE не удовлетворяет ни одна запись таблицы...


 
Johnmen   (2002-04-03 10:30) [2]

>Lusha © : Вообще говоря, это не должно приводить к.-л. ошибке...


 
VAleksey   (2002-04-03 10:37) [3]

Причем сдесь Update если я говорю про Delete


 
Lusha   (2002-04-03 10:42) [4]

Ну, извините. Невнимательно прочитал вопрос. Зато очень внимательно прочитал сообщение об ошибке :)


 
Johnmen   (2002-04-03 10:43) [5]

Надобно бы привести тексту немного... :)


 
VAleksey   (2002-04-03 10:44) [6]

Я использую ТOraTable в этом случае .
Так почему она может возникнуть ?


 
Alexandr   (2002-04-03 10:44) [7]

ага, просто запрос послан на сервер, и по результату запроса delete было удалено 0 записей, а не одна, как ты и ODAC думали. О чем тебя и известили.


 
VAleksey   (2002-04-03 10:45) [8]

Это я как раз понимаю. Из - за чего такая ситуация может возникнуть ????????????????????????


 
VAleksey   (2002-04-03 10:47) [9]

>Johnmen © Какого текста ?? tbChair.Delete; - это что-ли ?
Или чего нибудь еще ?


 
Alexandr   (2002-04-03 10:49) [10]

повторяю для тех кто в бронепоезде.

ты серверу через ODAC сказал "удали запись", ODAC послала запрос на удаление на сервер, а сервер ответил, что удалил 0 записей, вот ODAC и подумал "странно все это..."

А возникта такая ситуация из-за тебя :)


 
Lusha   (2002-04-03 10:53) [11]

Не мешало бы посмотреть запрос, который на сервер приходит. Там и ответ на Ваш вопрос...


 
Johnmen   (2002-04-03 11:05) [12]

>VAleksey : А про текст я говорил потому, что из твоего вопроса не видно, что же и как же ты удаляешь : запись из НД (и далее происходит...Alexandr © (03.04.02 10:44)) или напрямую DELETE FROM ...


 
Yuvich   (2002-04-03 11:20) [13]

Все очень просто - фантомная запись.
Т.е. в буфере запись есть и ее ты пытаешься удалить, а в базе ее нет - вот и выдается ошибка.

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


 
VAleksey   (2002-04-03 11:36) [14]

Шишь с маслом. При закрытии таблицы и открытии ее снова эта , так называемая "буферная" запись тутаньки. И никуда не пропадает. Как это сочетается с "фантомной записью" ?

Небольшие комментарии :
Таблица Chairs
Поле NameChair Char(20) Primary Key
FullNameChair Char(80)

На запись, которую я пытаюсь удалить, нет ссылок в дочерних таблицах.


 
VAleksey   (2002-04-03 11:39) [15]

RefreshRecord не помог


 
VAleksey   (2002-04-04 06:33) [16]

Ну спасибо. Ну прямо помогли !
>Alexandr © Я не просил перевести текст ошибки которую мне сервер вернул. Я спросил из-за чего эта ситуация возникнуть могла.
>Alexandr © >А возникта такая ситуация из-за тебя :)
Ежу понятно из-за кого. Вопрос-то ведь не в этом. Я так понимаю мы здесь для того и сидим чтобы помогать друг другу, а не говорить что в своих ошибках человек сам виноват.
>Lusha © Как посмотреть запрос который OraTable на сервер отправляет ?


 
roottim   (2002-04-04 08:55) [17]

а что говорит oratable.isEmpty ?


 
VAleksey   (2002-04-04 09:19) [18]

false


 
Johnmen   (2002-04-04 09:36) [19]

>VAleksey : Если ты действительно заинтересован в помощи, а не просто побазарить, приводи подробности : какой НД, как получен, как удаляешь, структура НД и соотв.таблицы и пр.


 
roottim   (2002-04-04 09:45) [20]

еще раз чтобы ситуация была ясна!
- картеж существует и в кэше и в базе!
- табл соотв не пуста
- текущая запись ни с чем не связана
- и это только на данной таблице (в других такого нет?)

и вот что... как-то наковырял еще сырую версию 3.5 там глюков была куча...
какую используеш ты?


 
VAleksey   (2002-04-04 10:29) [21]

>roottim ODAC4
> All
НД : TOraTable - положен в модуль данных. Для него созданы компоненты поля. Он отображается в дб гриде, но это не важно так как такая же ошибка возникает при использовании собственного ODAC редактора таблицы.
Соединение настраивается ч/з TOraSession.
Дочерние таблицы вообще ВСЕ пустые !!!!!!!!!!!!!
Структура
NameChair Char(20) Primary Key
FullNameChair Char(80)
всего два поля.
Есть еще такой же глюк в таблице с аналогичной структурой



 
Johnny Smith   (2002-04-04 10:45) [22]

2VAlexey: а почему бы тебе не попробовать удалять записи с помощью обычного SQL (пользуясь той же ODAC-овской библиотекой)? Слишком примитивно, что-ли? Ну, может быть... Зато сработает гораздо быстрее и ПРАВИЛЬНО. А то КАК удаляет их Table записи, ты точно знаешь? Я думаю, проблема в том, что он генерит запрос типа "DELETE FROM CHAIR WHERE NameChair=""+Column1+"" and FullNameChair=""+Column2+""", где Column1 и Column2 - это значения соответствующих столбцов в удаляемой строке.
НО! Эти значения на этапе первоначального запроса к ORACLE можно получить и как "Вася" и как "Вася " (зависит от того, как реализована соответствующая функция OCI для Table), где пустыми пробелами будет дополнено реальное содержимое столбца в соответствии с его типом (например, Varchar2(20)). И тогда в генерируемый запрос будет ВСТАВЛЕНА СТРОКА С ПРОБЕЛАМИ, и ORACLE, соответственно, не найдя таковой в таблице, вернет означенную ошибку.


 
Johnmen   (2002-04-04 10:56) [23]

>Johnny Smith © : И что, Оракул действительно выдает ошибку, если при выполнении запроса DELETE ... WHERE ... ни одна запись не удовлетворяет условию ?


 
roottim   (2002-04-04 10:58) [24]

>VAleksey
прошу прощения... где это вы ODAC 4.0 раздобыли, если последня вышедшая у них версия это 3.60


 
Johnny Smith   (2002-04-04 11:12) [25]

2Johnmen Пардон, конечно, не Оракл, а ODAC!


 
Lusha   (2002-04-04 11:16) [26]

>Johnmen ©
Oracle, разумеется, не выдаст ошибки. А вот ODAC сгенерирует... Он же просил удалить ТЕКУЩУЮ запись, а этот долбанный Oracle говорит ему, что таких не записей нет...


 
VAleksey   (2002-04-04 11:22) [27]

Спасиба Johnny Smith ©. Вразумительное объяснение. Все правильно
опцию TrimFixedChar в false все удаляется. Не подскажешь для CHAR(8) строка "ИУС" будет "ИУС" или "ИУС " ?

> roottim Прошу прощения опечатка (посмотрел на название exe файла )
на самом деле ( к сожалению ) именно 3.50 если можешь вышли на мыло 3.60 или ссылочку кинь плиииз. Или можь к нему заплатки есть ?




 
VAleksey   (2002-04-04 11:24) [28]

Еще вопрос : RowId присутствует в любой таблице или для него надо поле создавать (попрошу без сарказма. с Оракл просто работаю впервые.)


 
Johnny Smith   (2002-04-04 11:47) [29]

RowId есть в любой таблице.
Насчет "ИУС" для CHAR(8) однозначно сказать не могу, но ведь тип VarChar и отличается от CHAR тем, что последний имеет фиксированную длину и возможно (сам не пробовал), заполняет свободное место пробелами.


 
roottim   (2002-04-04 11:54) [30]

это точно!... и лучше использовать varchar2.. так говорит оракл!
а 3.6 я не искал.. да он вроде как под д6... 3.5 пытался использовать... только пошли от него баги.. толи левый он совсем толи сырой просто... сам использую 3.3 ничего плохого не замечал!


 
XCB   (2002-04-04 12:00) [31]

VAleksey: Rowid он всегда есть... коцни ты запись своим sql...
могу порекомендовать NCOCI не плохо работающие компоненты...


 
VAleksey   (2002-04-04 12:02) [32]

> roottim Вышли 3.3
Окей всем спасибо за помощь. Особенно тем кто действительно давал дельные советы и внимательно читал вопрос (Johnny Smith © & roottim ).


 
VAleksey   (2002-04-04 12:16) [33]

Спасибо, что намекнули на VARCHAR2. Вроде пока все корректно удаляется и редактируется. Завтра с новыми силами за работу. Спасибо еще раз ВСЕМ за помощь. До новых ошибок !



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.174 c
14-81071
Алексей Петров
2002-03-18 16:54
2002.04.25
Периодически пролетает


1-80841
AlexP
2002-04-12 19:54
2002.04.25
Ну где взять?


3-80832
Tolstomordik
2002-04-05 17:12
2002.04.25
Получить значение выбранной ячейки в DBGrid


1-80914
VEG
2002-04-14 19:25
2002.04.25
Загрузка файла в массив типа byte.


4-81119
masik
2002-02-20 12:02
2002.04.25
System Devices?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский