|
Тема |
Re: Релация [re: Hoвak] |
|
Автор |
Reptile (REAPER) |
|
Публикувано | 05.01.05 10:04 |
|
|
А за много години!
Техниката се нарича Мастър-Детайл, МАЛЕ как мъ мързи да приказвъм:
C:\Program Files\Borland\Delphi7\Demos\Db\CtrlGrid - това са демо примерите за работа с бази данни.
Този пример не е лош, но има много по елегантен начин с DataSources(те са източника на данни за твоите комбобоксове)
Този метод е сложен за обяснение. Най-общо имаш захранен от SQL(от Query) DataSource, той е Master, избираш го да е DataSource за един DataSet(детайла).
В SQL-а на този DataSet, стойностите на полетата от DataSource са обявени, като параметри т.е:
SQL-а на Query-то
select
KLIID,
KLIIME,
KLILICE,
KLITELEFON,
DILIME,
RAIIME
from
KLIENTI, DILARI, RAIONI
where
KLIDILID=DILID and KLIRAIID=RAIID
order by
KLIIME
SQL-а на DataSet-а
select
PRODATA,
PROKLIID as KLIID,
PROARTID,
PROKASHONI,
PROKILOGRAMI,
PROBROIUC,
PROGRAMAJ,
PROCENAKG,
PROCENAKGDILAR
from
PRODAJBI
where
PRODATA=:PRODATA and
PROKLIID=:KLIID
order by
PROKLIID
Забележи полето ":KLIID", как е параметър във втората заявка. Полето ":PRODATA " в случая се подава от друго място и е постоянно през цялото вереме т.е не те интересува.
Когато се обхожда(стрелка на горе, стрелка на долу или мишка) комбобокса, към който е закачен DataSource(Мастъра) стойността на ":KLIID" се променя от там и върнатия резултат от втората заявка.
За подчинения DataSet ще има нужда от друг DataSource, който да ти достави данните в "подчинения" комбобокс или таблица.
Т'ва е!!
|
| |
|
|
|