Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.06;
Скачать: CL | DM;

Вниз

как сделать чтоб поле calculated один раз расчиталось запомнило   Найти похожие ветки 

 
AVP_opck   (2004-05-18 08:31) [0]

использую fibplus,ehlib.
дело в следующем. есть таблица cards - в ней ID и Name1
вторая таблица strukt - ID и Name2
третья таблица - id, cardsid, struktid соответственно из первой и второй таблице.
есть 2 грида - gridcards
и gridstrukt
они через датасет показывают записи своих таблиц.
делаю чтоб нажав на запись в cards в strukt показывало какие записи strukt.id сопоставленны cards.id в третьей таблице.
для этого долбавил в datasetstrukt поле IN_ST calcukated типа булево.
и процедурку

procedure TForm1.DataSourceCARDSDataChange(Sender: TObject; Field: TField);
VAR
STRUKTBOOK:TBOOKMARKSTR;  //закладка
begin
if datasetstrukt.Active=true and datasetcardstrukt.Active=true then
  BEGIN
    if datasetcardstrukt.Active=true then
begin
 STRUKTBOOK:=DATASETSTRUKT.Bookmark;
DATASETSTRUKT.First;
WHILE NOT DATASETSTRUKT.Eof DO
BEGIN
datasetSTRUKT["in_st"]:=false;
if datasetcardstrukt.Locate("cardid;struktid",VarArrayOf([datasetcards["id"],datasetSTRUKT["id"]]),[]) then
  begin
    datasetSTRUKT["in_st"]:=true;

  end;
  DATASETSTRUKT.Next
 END;

DATASETSTRUKT.Bookmark:=STRUKTBOOK;
end;

ЕСЛИ DATASETSTRUKT.Bookmark:=STRUKTBOOK; закоментировать то все нормально показывает, но если это исполнять то все in_st становятся серыми и ниче не показывают. в чем дело???
как сделать чтоб они оставались такими какими я их сделал и после перехода на закладку


 
AVP_opck   (2004-05-18 08:45) [1]

вобщем наверно все можно свести к одному.
как сделать чтоб поле калькулятед один рас посчиталось и больше не пересчитывалось. сохраняя и показывая свои значения.


 
Виталий Панасенко   (2004-05-18 08:55) [2]

Почитай о Master-Detail связи.. Все на-а-а-амного проще окажется...:-)))... См. статьи на сайте FIBPlus... Там как раз то, что тебе нужно... Правда, только для двух таблиц... Но серое вещество не только ж для навара используется ?.. :-)))


 
AVP_opck   (2004-05-18 09:11) [3]

все с этими связями понятно.
только не подходит чуть чуть.. или скажи как сделать
чтоб было:
всего два грида в одном записи кардс в другом структ. и в этом гриде структ надо как то отметить что соответствует записям кардс
но показывать и там и там надо все записи.


 
AVP_opck   (2004-05-18 09:20) [4]

и чтоб при переходе в cards на другу запись
в strukt менялся  этот Checkbox


 
Anatoly Podgoretsky ©   (2004-05-18 09:25) [5]

AVP_opck   (18.05.04 09:11) [3]
Чем же не подходит
Ну тогда делай фильтрами, запросами


 
Sergey13 ©   (2004-05-18 09:42) [6]

2AVP_opck   (18.05.04 09:11) [3]
Если и можно так сделать, то ИМХО шибко геморойно. Тем более на "много-много" отношении.
>но показывать и там и там надо все записи.
А зачем?


 
AVP_opck   (2004-05-18 09:52) [7]

Sergey13
>>но показывать и там и там надо все записи.
>А зачем?

чтоб пользователь кликал на те записи которые не отмечены и они отмечались(обрабатываю cellClick по гриду)


 
ЮЮ ©   (2004-05-18 09:55) [8]

В Gride структ. показываить не Table, а запрос
SELECT
 Strukt.*,
 (SELECT Count(Id) AS Cnt
  FROM третья
  WHERE (Struct.Id = третья.StruktId) AND (третья.CardId = :ID))
 ) AS Cnt
FROM Strukt

который сделай Детайл по отночению к таблице CARDS, в результате и получишь то самое поле Сnt, которое считается один раз при перемещении по первому гриду


 
AVP_opck   (2004-05-18 09:56) [9]

вобще то что я сделал в начале вполне работает без закладки.
просто каждый раз при выборе в cards другой записи в  strukt курсор становица на последнюю запись из за цикла.
хм. а может добавить этот чекбокс в гриде ехлиб вроде позволяет)
надо попробовать



Страницы: 1 вся ветка

Текущий архив: 2004.06.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.047 c
1-1085065722
volkodav
2004-05-20 19:08
2004.06.06
Цвет на форме


4-1083405942
Игорь
2004-05-01 14:05
2004.06.06
Расширения Windows


14-1084720952
SergeyM
2004-05-16 19:22
2004.06.06
Как узнать Count на CD-ROM e


14-1085313677
GanibalLector
2004-05-23 16:01
2004.06.06
почему так ???


14-1084973432
slaga
2004-05-19 17:30
2004.06.06
как узнать какие значения принемает кнопка на клавиатуре ?