Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];

Вниз

как сделать чтоб поле 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.031 c
4-1083758886
Ragazor
2004-05-05 16:08
2004.06.06
Инфа по COM и LPT


4-1083286885
Gollum
2004-04-30 05:01
2004.06.06
WinApi only (NO VCL) JpegFromResource - Delphi


1-1085123571
MegaVolt
2004-05-21 11:12
2004.06.06
Правильно ли я работаю с PChar?


1-1085138877
DIS
2004-05-21 15:27
2004.06.06
меню к MsAgent


14-1084811049
Knight
2004-05-17 20:24
2004.06.06
Как вы относитесь к профессиональному спорту?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский