Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-81563
Alexxxxx
2003-07-28 20:40
2003.08.25
С чего начать изучение трехзвенки


14-81910
Berezne
2003-08-07 14:33
2003.08.25
Вопрос по DBEdit


7-81967
INCOGNITO
2003-06-10 11:09
2003.08.25
Программа для работы с USB портом


4-82019
alexvan
2003-06-20 12:46
2003.08.25
Как отловить сообщение.


8-81848
Alexandr_A
2003-04-26 01:21
2003.08.25
OpenGL - как сохранить в файл картинку? Timage глючит





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский