![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
У каждой фирмы свой прайс [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;