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

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

Ошибка при удалении записей таблицы Firebird


Страницы:   1 2

Novicer ©   (2014-02-25 13:04:00) 

Здравствуйте! Подскажите пожалуйста как побороть ошибку XSQLDA index out of range? Возникает при выполнении запроса delete from mytable where mycount=0 Если есть записи в которых условие запроса выполняется, ошибки нет, в противном случае получаю error message :( Была мысль перед удалением считать записи соответствующие условию, если их нет, то не выполнять удаление, но наверно можно как-то лучше сделать, без доп.запросов. Посоветуйте как? Спасибо!


Novicer   (2014-02-27 21:01:00) [1]

Нашел! Сразу после удаления строчки
IbQuery1.Close;
IbQuery1.Open;
вызывали ошибку :( выполнялся запрос с ранее заданными параметрами не соответствующими действительности после удаления :)


Novicer   (2014-02-27 13:51:00) [2]

Ок, бум искать... Спасибо за подсказки...


Труп Васи Доброго   (2014-02-27 13:41:00) [3]


> блин...

Я тебе сказал где искать. Смотри в визуальных элементах и всяких переменных, которые данные из БД отображают и обрабатывают. Где то ты поставил "взять данные из строки №1".


Novicer   (2014-02-27 12:40:00) [4]

В новом проекте и в IbExpert запрос delete from mytable where mycount=0 выполняется без ошибок любое число раз, один за другим... блин...


Novicer   (2014-02-27 12:34:00) [5]

Думкин? :/


Труп Васи Доброго   (2014-02-27 11:31:00) [6]


> Почему труп?

Потому что меня Думкин убил.


Inovet   (2014-02-27 10:38:00) [7]

> [28] Novicer   (27.02.14 09:38)

Создай новый проект, положи на форму правильные (см выше) компоненты, заполни поле для запроса, выполни. О результатах отпишись.


Novicer   (2014-02-27 09:38:00) [8]

Не по сабжу. Почему труп? :)


Труп Васи Доброго   (2014-02-27 08:19:00) [9]


> Ошибки быть не должно?

Нет. Если запрос составлен корректно, он всегда выполнится без ошибок, даже если ему нечего делать. Ошибка будет, если запрос нарушает целостность структуры БД или правильность данных.
З.Ы. Запрос через IBExpert отрабатывает? Если нет, то может у тебя в таблице триггер UD криво написан?


Novicer   (2014-02-26 20:14:00) [10]

А что будет если в таблице нет записей, а я выполняю запрос на их удаление с помощью IbQuery, например так: delete from mytable Ошибки быть не должно?


Novicer   (2014-02-26 19:24:00) [11]

Спасибо за советы! Буду искать...


Труп Васи Доброго   (2014-02-26 10:07:00) [12]

Не хочешь искать - думай и действуй.
Первая мысль, которая должна прийти в голову - ошибка в запросе. Для проверки мысли возьми офигенный инструмент IBExpert, подключись к своей базе и сделай свой запрос вручную, будет ошибка или нет? Ошибки не будет, значит сам запрос правильный и надо искать в Delphi. 99% что ошибка, как сказал clickmaker ©   (25.02.14 15:30) [11], в том, что происходит после запроса. Обычно на index out of range напарываются, когда в полях вывода (в экранных таблицах, едитах, лэйблах и т.п., указывают номер записи (как правило первую [1]), полагая, что она всегда есть, без проверки её существования. Вот и у тебя где-то стоит компонент, который отображает первую запись из таблицы, и после выполнения запроса и обновления таблицы компонент лезет в первую запись, которой уже нет, и получает фигу в виде index out of range.
Как-то так. Но это обычно..., возможно у тебя косяк где-то ещё.


Novicer   (2014-02-25 17:30:00) [13]

:) намек понял...


Inovet   (2014-02-25 17:19:00) [14]

> [21] Inovet ©   (25.02.14 17:18)
> Лившец

Лившиц


Inovet   (2014-02-25 17:18:00) [15]

> [18] Novicer   (25.02.14 16:44)
> Справочники и книги у меня есть...

У меня есть Ландау и Лившец "Квантовая механика" 768 страниц, только я её не знаю. А ещё есть "Теория поля" этих же авторов 512 страниц, её я тоже не знаю. А всего Теоретическая Физика этих авторов в 10-ти томах, но 8-ми из них у меня нет, содержание даже не видел.

Я решил создать альтернативную теорию, которая опровергнет Теорию Относительности. Нет, лучше сразу создать Теорию Всего, которая всё опровергнет. Взял ручку, бумагу. А что писать? Надо полазить по форумам сначала. Полазил с полчаса. Ага вот кде-то там кто-то что-то говорит, что, вроде, Энштейн неправ, а Планк лучше. Ага так и запишем. Будем опровергать Планка, щас схожу на форум физиков, спрошу чем лучше Планк, потом допишу.


sniknik   (2014-02-25 16:53:00) [16]

> мнение экспертов что лучше IbQuery или IbSql?
а что лучше чай или зеленый? скрипач дальтоник?


Inovet   (2014-02-25 16:49:00) [17]

> [18] Novicer   (25.02.14 16:44)

По ссылке всё сказано - IBQuery костыль. Что лучше яблоки или помидоры?


Novicer   (2014-02-25 16:44:00) [18]

Меня интересовало мнение экспертов что лучше IbQuery или IbSql? Справочники и книги у меня есть...


Inovet   (2014-02-25 15:50:00) [19]

IBSQL

Предназначен для выполнения операторов Insert/update/delete, execute procedure, или select для небуферизированного перебора записей (например при импорте/экспорте данных или при массовой обработке записей на клиенте).

Что ещё тебе найти?


Inovet   (2014-02-25 15:46:00) [20]

> [15] Inovet ©   (25.02.14 15:44)

Ну и ещё 30 секунд
IBDataSet

TIBDataSet = class(TIBCustomDataSet)

Основной компонент, пришедший из FreeIBComponents. Остальные, то есть IBTable, IBQuery (+IBUpdateSQL) - всего лишь модификации, либо чуть расширенные, либо усеченные. Возможностей этого компонента хватает практически для любых целей.


Страницы:   1 2

Наверх

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