Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

У каждой фирмы свой прайс [Access+ADO]


able ©   (2004-11-24 05:46:00) 

Как это лучше реализовать? Чтобы когда фирма выделена (например, в DBGrid) появился прайс (например, в другом DBGrid), выделил другую фирму, другой прайс..


YurikGL   (2004-11-25 16:22:00) [1]


> able ©   (25.11.04 15:40) [11]

товары, если я что-то понимаю в английском :-)


able   (2004-11-25 15:40:00) [2]

А что за таблица "GOODS"?


msguns   (2004-11-25 14:14:00) [3]

>able ©   (25.11.04 13:37) [9]
>В предложенных вариантах прайсы всех фирм в одной таблице. Это нормально?

Да. Вообще примерная схема приведена у asp © (25.11.04 11:44) [8]
Хотя я делаю иначе. Исходя из того, что первичен все же товар, а не прайс.

GOODS
 ID
 NAME
 MEAGURE
 PACKAGE
 NDS
 TERMKEEP
 ...

FIRM
 ID
 NAME
 PHONE
 ...

PRICES
 ID
 NAME

PRICES_ST
 ID
 PID -> PRICES
 GID -> GOODS
 FID -> FIRM
 PRICE

Такая схема имеет след.достоинства:
- сколько угодно прайсов по одной фирме.
- наличие любого кол-ва колонок прайса (PID)
- отсутсвие любого товара в любом прайсе (колонке прайса)


able   (2004-11-25 13:37:00) [4]

msguns ©   (25.11.04 10:18) [7]
Нет. В предложенных вариантах прайсы всех фирм в одной таблице. Это нормально?


asp   (2004-11-25 11:44:00) [5]

Примерно так:
FIRM (ID INTEGER, NAME VARCHAR(64))
GOODS (ID INTEGER NAME VARCHAR(64))
GOODS_PRICE (FIRM INTEGER, GOODS INTEGER, PRICE DOUBLE)


msguns   (2004-11-25 10:18:00) [6]

Т.е. прайсы и фирмы в одной таблице ?


able   (2004-11-24 20:03:00) [7]

Всё это будет в одной таблице. А в каждом прайсе докучи позиций, фирм ~2000. Нормально, потянет? :)


able   (2004-11-24 16:02:00) [8]

thanks


msguns   (2004-11-24 10:32:00) [9]

Использовать 2 таблицы: Основная-перечень фирм + Дочерняя-прайсы
Причем в прайсах есть поле идентификатора-связки с Основной. Дальше - просто:
 1. Использовать два запроса, связанных отношением Master-Detail
 2. По событию AfterScroll датасета с осн.таблицей делать переоткрытие дочерней, где в запросе предварительно менять значение параметра MasterID, присваивая ему ID текущей записи осн.таблицы.


sniknik   (2004-11-24 07:28:00) [10]

для примера
D:\Program Files\Borland\Delphi7\Demos\Db\Filter


YurikGL   (2004-11-24 07:15:00) [11]

DataSource1 связан со списком фирм а ИзменяемыйDataset - набор данных с прайсом.


YurikGL   (2004-11-24 07:14:00) [12]

Напимер так

procedure TFormMan.DataSource1DataChange(Sender: TObject; Field: TField);
begin
if DSMan.State=dsBrowse then begin
 ИзменяемыйDataset.Close;
 ИзменяемыйDataset.CommandText:='Select ...'

 ИзменяемыйDataset.Open;

end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо