Форум: "Базы";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];
Внизповедение ADODataSet в Master-Detal Найти похожие ветки
← →
АлеКо (2005-08-08 08:27) [0]Добрый день господа.
Пытаюсь связать два ADODataSet в Master-Detal. Связка не работает, если в результате подчиненного DataSet выступает результат отработки хранимой процедуры (свойство CommandType = cmdStoredProc). Если выполняются запросы (CommandType = cmdText) то связка работает.
Подскажите, как решить проблему.
← →
evvcom © (2005-08-08 08:45) [1]
> Подскажите, как решить проблему.
А ты толком ничего и не описал. Ноль информации.
← →
Anatoly Podgoretsky © (2005-08-08 08:49) [2]У тебя наверно ошибка.
← →
sniknik © (2005-08-08 08:49) [3]странная разница... полученные рекордсеты ничем различатся не должны, а значит и поведение должно быть одинаковым.
но раз говориш изза этого (проверять не буду), т.е. дагноз тебе ясен... ну тогда что мешает составить команду на вызов процедуры и вызвать ее с CommandType = cmdText? елементарно
EXEC MyProc :Par1, :Par2
и все. проблема решена. (вернее проведено лечение по диагнозу поставленному самим пациентом ;о)))
← →
АлеКо (2005-08-08 08:50) [4]А что конкретно добавить?
Два ADODataSet связаны соотношением мастер-деталь. Если связанный ADODataSet это результат выполнения хронимой процедуры то связка не работает, если результат выполнения запроса то работает вот в этом весь вопрос. Если нужно что-то конкретное подскажи.
← →
Anatoly Podgoretsky © (2005-08-08 08:51) [5]sniknik © (08.08.05 08:49) [3]
О" Генри.
← →
АлеКо (2005-08-08 08:57) [6]Либо это ограничение ADO или моя ошибка. Сколько работал с компонентом с подобными ограничениями я не сталкивался.
Хотел бы обратить внимание что хранимая процедура возвращает данные в виде SELECT временной глобальной таблицы, в конце процедуры таблица удаляется на чем собственно процедура и заканчивается.
Может в этом моя ошибка.
← →
АлеКо (2005-08-08 09:52) [7]Вот какую закономерность я выяснил.
Если хранимая процедура имеет входные параметры то связка Мастер-Деталь не работает, если их нет то все Ок.
Как это можно объяснить????
И тем более как с этим бороться???
← →
АлеКо (2005-08-08 09:58) [8]Так работает
CREATE PROCEDURE [dbo].[DemoProc]
AS
SELECT Name2, Sort, Link_Up, Link FROM V_KOMM_Ext ORDER BY Sort
GO
а так нет
CREATE PROCEDURE [dbo].[DemoProc]
@Mod Int
AS
SELECT Name2, Sort, Link_Up, Link FROM V_KOMM_Ext ORDER BY Sort
GO
← →
sniknik © (2005-08-08 12:05) [9]хм... а ведь действительно не работает при cmdStoredProc... (проверил) требует параметр с именем поля (вместо создания индекса для фильтра) по которому связь, т.е. хотя рекордсет такой же но обработка отличается изза этого параметра...
и кстати виртуальное "лечение" по диагнозу пациента дало положительные результаты. ;о))
в общем причина "пациентом" указана верно.
← →
АлеКо (2005-08-09 03:16) [10]Мне кажется, что при наличии входного параметра предполагается передача данных из процедуры тоже в виде выходных параметров.
Или еще вариант. При связи Мастер-Деталь не происходит фильтрация по DataSet а происходит повторный запуск процедуры с указанием параметра. Этот параметр и является критерием отбора. Например так:
CREATE PROCEDURE [dbo].[DemoProc]
@Link Int
AS
SELECT Name2, Sort, Link_Up, Link FROM V_KOMM_Ext
WHERE Link=@Link
ORDER BY Sort
GO
← →
АлеКо (2005-08-10 10:18) [11]Для интерисующихся хочу сказать что данныю ошибку побороть не смог. Пришлось для связки Мастер-Деталь ручками фильтровать DataSet.
Все.
← →
sniknik © (2005-08-10 14:40) [12]> Для интерисующихся хочу сказать что данныю ошибку побороть не смог.
?
> [3]
не пробовал значит? в [9] писал что проверил и это помогло. а потом... руками сделать фильтр - ADODataSet1.Sort:
= "Link"; да это проблемно, это за "побор" ошибки не считается... ;о))
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.09.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.036 c