Форум: "Базы";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
ВнизНеобновляемое поле Найти похожие ветки
← →
Beginner3000 (2003-07-28 23:12) [0]Существует план работ (PlanLK), разделённый по видам,
у каждого вида работ есть ID (SectionID) и номер (SectionN)
у каждой работы помимо ID (ListID) есть подвидовой номер (INSectionN)
имеем таблицы
PlanLk: PlanID, PersonID, ListID ...
ListLK: ListID, SectionID, INSectionN ...
ListSectionLK: SectionID, SectionN ...
Data sets:
ADOtListSecLk: (таблица ListSectionLK)
ADOdsPlanLK: (запрос PlanID, PersonID, ListID, SectionID),
lookup SectionN по SectionID, lookup INSectionN по ListID
для реализации выпадающего списка второго лукапа создал датасет
ADOdsFilteredListLk
( SELECT ListID, InSectionN, SectionID
FROM ListLK
ORDER BY InSectionN;)
в гриде вывода ADOdsPlanLK видны: ..., SectionN, INSectionN, ...
в гриде создал обработчик:
procedure TPlanFrame.DBGrid1ColEnter(Sender: TObject);
var temp:TDataSetState;
begin
MainDataModule.ADOdsFilteredListLk.Filtered:=False;
MainDataModule.ADOdsFilteredListLk.Filter:= "SectionID="+
( MainDataModule.ADOdsPlanLK["SectionID"]) Существует план работ (PlanLK), разделённый по видам,
у каждого вида работ есть ID (SectionID) и номер (SectionN)
у каждой работы помимо ID (ListID) есть подвидовой номер (INSectionN)
имеем таблицы
PlanLk: PlanID, PersonID, ListID ...
ListLK: ListID, SectionID, INSectionN ...
ListSectionLK: SectionID, SectionN ...
Data sets:
ADOtListSecLk: (таблица ListSectionLK)
ADOdsPlanLK: (запрос PlanID, PersonID, ListID, SectionID),
lookup SectionN по SectionID, lookup INSectionN по ListID
для реализации выпадающего списка второго лукапа создал датасет
ADOdsFilteredListLk
( SELECT ListID, InSectionN, SectionID
FROM ListLK
ORDER BY InSectionN;)
в гриде вывода ADOdsPlanLK видны: ..., SectionN, INSectionN, ...
в гриде создал обработчик:
procedure TPlanFrame.DBGrid1ColEnter(Sender: TObject);
var temp:TDataSetState;
begin
MainDataModule.ADOdsFilteredListLk.Filtered:=False;
MainDataModule.ADOdsFilteredListLk.Filter:= "SectionID="+
inttostr(MainDataModule.ADOdsPlanLK["SectionID"]);
MainDataModule.ADOdsFilteredListLk.Filtered:=True;
end;
т.е. список задач для второго лукапа фильтруется по значению SectionID
отображаемого в той же строке SectionN (первый лукап)
в модуле данных:
procedure TMainDataModule.ADOdsPlanLkAfterOpen(DataSet: TDataSet);
begin
ADOdsPlanLk.Properties["Unique Table"].Value:="PlanLK";
end;
всё замечательно работает в одной строке
при переходе на другую ADO выдаёт
тыры пыры EOleException with message
"Невозможно обновить поле "SectionID"; Необновляемое поле"
фактически SectionID временное поле, нужное только для формирования и отображения
лукапов
проблема в первом лукапе
как указать адо что по нему отсылать ничего в базу не надо (редактирую только PlanLK)?
если делаю поле ReadOnly ошибки нет но первый лукап не работает
← →
Beginner3000 (2003-07-29 23:53) [1]перефразирую
как отключить запрос на обновление записи
(чтобы подменить своим запросом)
или как исключить из запроса некоторое поле?
запрос
изначально такой
SELECT PlanLK.PlanID, PlanLK.PersonID, PlanLK.MonthID,
PlanLK.ListID, ListLkSection.SectionID
FROM PlanLK, ListLK, ListLkSection
WHERE PlanLK.ListID=ListLK.ListID and
ListLkSection.SectionID=ListLK.SectionID;
менял ListLkSection.SectionID на ListLk.SectionID
выдаёт другую ошибку, но всё равно ошибку обновления
а мне трогать это поле не надо
почему не работает
["Unique Table"].Value ?
← →
Beginner3000 (2003-07-31 01:40) [2]при изменении в запросе SELECT ... ListLkSection.SectionID
на ListLk.SectionID выдаёт
Insufficient key column information for updating or refreshing
ProviderFlags
pfInUpdate и pfInWhere
тоже никакого влияния не оказывают
вижу пока выход в замене DBGrid на Grid и ручной обработке
всего этого безобразия
но что-то не верится, что нельзя отключить этот Post нафиг
хотелось бы прочитать ответ
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c