![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка при удалении [D5, Oracle]
VAleksey © (2002-04-03 10:16:00)Привет всем. Для доступа к Оркалу использую ODAC. При
удалении записи возникает ошибка :
Update Failed: Found 0 records
С чем это иожет быть связано ?
VAleksey (2002-04-04 12:16:00) [1]Спасибо, что намекнули на VARCHAR2. Вроде пока все корректно удаляется и редактируется. Завтра с новыми силами за работу. Спасибо еще раз ВСЕМ за помощь. До новых ошибок !
VAleksey (2002-04-04 12:02:00) [2]> roottim Вышли 3.3
Окей всем спасибо за помощь. Особенно тем кто действительно давал дельные советы и внимательно читал вопрос (Johnny Smith © & roottim ).
XCB (2002-04-04 12:00:00) [3]VAleksey: Rowid он всегда есть... коцни ты запись своим sql...
могу порекомендовать NCOCI не плохо работающие компоненты...
roottim (2002-04-04 11:54:00) [4]это точно!... и лучше использовать varchar2.. так говорит оракл!
а 3.6 я не искал.. да он вроде как под д6... 3.5 пытался использовать... только пошли от него баги.. толи левый он совсем толи сырой просто... сам использую 3.3 ничего плохого не замечал!
Johnny Smith (2002-04-04 11:47:00) [5]RowId есть в любой таблице.
Насчет "ИУС" для CHAR(8) однозначно сказать не могу, но ведь тип VarChar и отличается от CHAR тем, что последний имеет фиксированную длину и возможно (сам не пробовал), заполняет свободное место пробелами.
VAleksey (2002-04-04 11:24:00) [6]Еще вопрос : RowId присутствует в любой таблице или для него надо поле создавать (попрошу без сарказма. с Оракл просто работаю впервые.)
VAleksey (2002-04-04 11:22:00) [7]Спасиба Johnny Smith ©. Вразумительное объяснение. Все правильно
опцию TrimFixedChar в false все удаляется. Не подскажешь для CHAR(8) строка "ИУС" будет "ИУС" или "ИУС " ?
> roottim Прошу прощения опечатка (посмотрел на название exe файла )
на самом деле ( к сожалению ) именно 3.50 если можешь вышли на мыло 3.60 или ссылочку кинь плиииз. Или можь к нему заплатки есть ?
Lusha (2002-04-04 11:16:00) [8]>Johnmen ©
Oracle, разумеется, не выдаст ошибки. А вот ODAC сгенерирует... Он же просил удалить ТЕКУЩУЮ запись, а этот долбанный Oracle говорит ему, что таких не записей нет...
Johnny Smith (2002-04-04 11:12:00) [9]2Johnmen Пардон, конечно, не Оракл, а ODAC!
roottim (2002-04-04 10:58:00) [10]>VAleksey
прошу прощения... где это вы ODAC 4.0 раздобыли, если последня вышедшая у них версия это 3.60
Johnmen (2002-04-04 10:56:00) [11]>Johnny Smith © : И что, Оракул действительно выдает ошибку, если при выполнении запроса DELETE ... WHERE ... ни одна запись не удовлетворяет условию ?
Johnny Smith (2002-04-04 10:45:00) [12]2VAlexey: а почему бы тебе не попробовать удалять записи с помощью обычного SQL (пользуясь той же ODAC-овской библиотекой)? Слишком примитивно, что-ли? Ну, может быть... Зато сработает гораздо быстрее и ПРАВИЛЬНО. А то КАК удаляет их Table записи, ты точно знаешь? Я думаю, проблема в том, что он генерит запрос типа "DELETE FROM CHAIR WHERE NameChair=""+Column1+"" and FullNameChair=""+Column2+""", где Column1 и Column2 - это значения соответствующих столбцов в удаляемой строке.
НО! Эти значения на этапе первоначального запроса к ORACLE можно получить и как "Вася" и как "Вася " (зависит от того, как реализована соответствующая функция OCI для Table), где пустыми пробелами будет дополнено реальное содержимое столбца в соответствии с его типом (например, Varchar2(20)). И тогда в генерируемый запрос будет ВСТАВЛЕНА СТРОКА С ПРОБЕЛАМИ, и ORACLE, соответственно, не найдя таковой в таблице, вернет означенную ошибку.
VAleksey (2002-04-04 10:29:00) [13]>roottim ODAC4
> All
НД : TOraTable - положен в модуль данных. Для него созданы компоненты поля. Он отображается в дб гриде, но это не важно так как такая же ошибка возникает при использовании собственного ODAC редактора таблицы.
Соединение настраивается ч/з TOraSession.
Дочерние таблицы вообще ВСЕ пустые !!!!!!!!!!!!!
Структура
NameChair Char(20) Primary Key
FullNameChair Char(80)
всего два поля.
Есть еще такой же глюк в таблице с аналогичной структурой
roottim (2002-04-04 09:45:00) [14]еще раз чтобы ситуация была ясна!
- картеж существует и в кэше и в базе!
- табл соотв не пуста
- текущая запись ни с чем не связана
- и это только на данной таблице (в других такого нет?)
и вот что... как-то наковырял еще сырую версию 3.5 там глюков была куча...
какую используеш ты?
Johnmen (2002-04-04 09:36:00) [15]>VAleksey : Если ты действительно заинтересован в помощи, а не просто побазарить, приводи подробности : какой НД, как получен, как удаляешь, структура НД и соотв.таблицы и пр.
VAleksey (2002-04-04 09:19:00) [16]false
roottim (2002-04-04 08:55:00) [17]а что говорит oratable.isEmpty ?
VAleksey (2002-04-04 06:33:00) [18]Ну спасибо. Ну прямо помогли !
>Alexandr © Я не просил перевести текст ошибки которую мне сервер вернул. Я спросил из-за чего эта ситуация возникнуть могла.
>Alexandr © >А возникта такая ситуация из-за тебя :)
Ежу понятно из-за кого. Вопрос-то ведь не в этом. Я так понимаю мы здесь для того и сидим чтобы помогать друг другу, а не говорить что в своих ошибках человек сам виноват.
>Lusha © Как посмотреть запрос который OraTable на сервер отправляет ?
VAleksey (2002-04-03 11:39:00) [19]RefreshRecord не помог
VAleksey (2002-04-03 11:36:00) [20]Шишь с маслом. При закрытии таблицы и открытии ее снова эта , так называемая "буферная" запись тутаньки. И никуда не пропадает. Как это сочетается с "фантомной записью" ?
Небольшие комментарии :
Таблица Chairs
Поле NameChair Char(20) Primary Key
FullNameChair Char(80)
На запись, которую я пытаюсь удалить, нет ссылок в дочерних таблицах.