powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ошибка при открытии набора данных (FIBDataSet)
6 сообщений из 6, страница 1 из 1
Ошибка при открытии набора данных (FIBDataSet)
    #32290855
Виктор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При открытии набора данных (TpFIBDataSet) получаю такую ошибку
"The cursor identified in the update or delete statement is not positioned on a row. no current record for fetch operation".
Причем запрос такой :
select ID, CODE, NAME, ID_PARENT, ID_GROUP
from VIEW_REF_GOODS RG, REF_GROUP_ITEMS RGI
where RG.ID = RGI.id_object and RG.id=:ID

VIEW_REF_GOODS - это вьюха, REF_GROUP_ITEMS - обычная таблица
В дизайнтайме если у датасета выставить AllowedUpdateKinds в [], то запрос срабатывает, а в рантайме не срабатывает.
Если вместо вьюхи подсовывать обычную таблицу, то все работает.
Затем поменял текст запроса так:
select ID, CODE, NAME, ID_PARENT, ID_GROUP
from VIEW_REF_GOODS RG
JOIN ref_group_items RGI ON RG.ID = RGI.id_object
where RG.id=:ID

И всё стало нормально!
Кто объяснит, в чем глюк?
Компоненты вроде как последние, FireBird 1.0.3
...
Рейтинг: 0 / 0
Ошибка при открытии набора данных (FIBDataSet)
    #32291105
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в эксперте работает этот запрос?
...
Рейтинг: 0 / 0
Ошибка при открытии набора данных (FIBDataSet)
    #32292087
Виктор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, проверил в IBExpert, не работает.
Ну а почему? Синтаксис ему не нравится или еще чего ?
...
Рейтинг: 0 / 0
Ошибка при открытии набора данных (FIBDataSet)
    #32292373
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы попробуйте это обязательно на FB1.5, т.к. Дмитрий Еманов сказал, что релиз уже готовят к выпуску. Это похоже на багу какую-то, но, возможно, она исправлена в полуторке. Если будет ругаться - напишите сразу на news://forums.demo.ru/epsylon.public.interbase чтоб её исправить успели перед релизом.
...
Рейтинг: 0 / 0
Ошибка при открытии набора данных (FIBDataSet)
    #32293783
Виктор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак, написал на news://forums.demo.ru/epsylon.public.interbase, по порядку:
1. Я пишу
Итак, есть две таблицы :
CREATE TABLE REF_GOODS (
ID INTEGER NOT NULL,
CODE VARCHAR(32),
NAME VARCHAR(128) NOT NULL,
ID_MANUFACTURER INTEGER NOT NULL,
ID_ORGAN INTEGER
);
CREATE DOMAIN NAME AS VARCHAR(128) CHARACTER SET WIN1251 COLLATE WIN1251;

CREATE TABLE REF_CUSTOMERS (
ID INTEGER NOT NULL,
NAME NAME NOT NULL,
GENDER CHAR(1),
PHONES VARCHAR(128),
ADDRESS VARCHAR(128),
BIRTHDATE DATE,
DISCOUNT INTEGER
);
В FB1.0.3 создал вьюху на основе такого запроса
SELECT G.ID, G.CODE, G.NAME, G.ID_MANUFACTURER, M.NAME M_NAME,
G.ID_ORGAN, O.NAME O_NAME
FROM REF_GOODS G, REF_CUSTOMERS M
LEFT JOIN REF_CUSTOMERS O ON G.ID_ORGAN=O.ID
WHERE G.ID_MANUFACTURER=M.ID

Вьюха создалась, но не работал запрос типа
select ID, CODE, NAME, ID_PARENT, ID_GROUP
from VIEW_REF_GOODS RG, REF_GROUP_ITEMS RGI
where RG.ID = RGI.id_object and RG.id=:ID
VIEW_REF_GOODS - это вьюха, REF_GROUP_ITEMS - обычная таблица
Получаю ошибку "The cursor identified in the update or delete statement is
not positioned on a row. no current record for fetch operation".

Переделал запрос на
select ID, CODE, NAME, ID_PARENT, ID_GROUP
from VIEW_REF_GOODS RG
JOIN ref_group_items RGI ON RG.ID = RGI.id_object
И всё стало нормально.

Затем поставил FB1.5 (RC4, а затем и RC6), так там даже такой запрос не
проходит
SELECT G.ID, G.CODE, G.NAME, G.ID_MANUFACTURER, M.NAME M_NAME,
G.ID_ORGAN, O.NAME O_NAME
FROM REF_GOODS G, REF_CUSTOMERS M
LEFT JOIN REF_CUSTOMERS O ON G.ID_ORGAN=O.ID
WHERE G.ID_MANUFACTURER=M.ID

И вот я не пойму, где грабли?

2. Ответ
> FROM REF_GOODS G, REF_CUSTOMERS M
> LEFT JOIN REF_CUSTOMERS O ON G.ID_ORGAN=O.ID
Готовся, будут бить :-)
Нельзя смешивать явные и неявные join'ы

---------------
С уважением
Андрей Прохоров

3. Опять я
Не знал про такое ограничение. Я на оракле работаю, а там вообще всё не так (до 9i).
А щас есть маленький проект, который под оракл не стоит писать, решил на FB.
А тут столько подводных камней :-)
Ну если нельзя, так нельзя.
А, кстати, где про это явно написано, что нельзя?

4. А вот тут мы долго смеялись. Очень весело :-)

> Ну если нельзя, так нельзя.
> А, кстати, где про это явно написано, что нельзя?

А это недокументоровано. Просто у оптимайзера крышу срывает, и все ;-)

--
Дмитрий Еманов

Вот так то... Типа, крышу... А задокументировать ...
Ну и ладно :-)
...
Рейтинг: 0 / 0
Ошибка при открытии набора данных (FIBDataSet)
    #32293901
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если б ты с самого начала текст вьюхи привёл - я бы тебе сразу сказал, т.к. на эти грабли уже куча народу наступила и широко известно, что они там лежат - надо их обходить ;-).
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ошибка при открытии набора данных (FIBDataSet)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]