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

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

АДО и master-detail [D7, Access 2000]


Страницы:   1 2 3

Виталий Панасенко ©   (2010-01-13 17:14:00) 

Есть связка двух ADODataSetов, в мастере подсчитывается итого по детали(подзапросом select sum from dateail where id=master_id). Все работает, хотя есть одно "но". Даже два...Первое "но": при изменении данных в детали, мастер не решрешится сам. Ну это такое дело. Если мастер рефрешить вручную, то пересчитывается без проблем, указал Resync Command нужный(обновляется одна запись мастера). И тут возникает второе "но": деталь тоже передергивается, устанавливая указатель на первую запись.. Можно, конечно, сделать после рефреша мастера Last детали...Деталь редактируется в гриде, так удобно в данном случае для табличных данных...Есть ли другой вариант, окромя Master.Refresh/Detail.Last? Я просто привык к ФИБам, там это просто реализовано настройкой в детали опции ForceMasterRefresh, при этом сам НД детали "не передергивается"..:-)


sniknik   (2010-01-14 14:51:00) [21]

> нужно "вручную" делать рефреш..
не нужно, если сделать как я говорил.

> ты это серьезно ? делать вычисление для каждой позиции?.
они не делаются "для каждой позиции", только для отображаемых.
+ можно например просто не рассчитывать для не открытого документа, или все таки рассчитывать но только если в числе 0 или документ текущий (редактируется), тут вся прелесть в том что все в твоих руках.

> клиент "умрет"
у меня тысячи не умирают, в подобной (примерно) ситуации... что то делаю не так.
а объединение таблиц в запросах чтобы получить подобную сумму вообще стандартная практика... тоже наверное что то не так делают, иначе клиенты бы дохли как мухи однодневки.


Anatoly Podgoretsky   (2010-01-14 14:07:00) [22]

> sniknik  (14.01.2010 10:59:18)  [18]

Любовь зла - полюбишь и козла.


Виталий Панасенко   (2010-01-14 14:04:00) [23]


> sniknik ©   (14.01.10 13:57) [23]

ты это серьезно ? делать вычисление для каждой позиции?. ну, пусть из сотни документов...клиент "умрет".... ладно.. флуд, он и есть флуд.. тему - в "потрепаться"...


Виталий Панасенко   (2010-01-14 14:01:00) [24]

ГоспАди! я ухе писал, что тема превратилась во флуд! Итог у меня в подзапросе мастера подсчитывается(старттопик смотри).. Меня просто НЕ УСТРАИВАЛО то, что для обновления суммы итого нужно "вручную" делать рефреш.. и при этом еще передергивается НД детали... вот и все...


sniknik   (2010-01-14 13:57:00) [25]

> А Эх тупо пробегает весь НД
это "тупо" гораздо менее напряжено, чем по изменению каждой цифры загружать сервер изменением + перерасчетом + перезапросом,
т.е. я бы поменял знаки твоих представлений на противоположные.


Sergey13   (2010-01-14 13:15:00) [26]

> [21] Виталий Панасенко   (14.01.10 12:41)
> И что я там буду считать? Итог по всей детали?

А что, у тебя в мастере не это посчитано?

> А Эх тупо пробегает весь НД

Открытый НД, заметь. И не переоткывает.


Виталий Панасенко   (2010-01-14 12:41:00) [27]


> Sergey13 ©   (14.01.10 12:13) [20]

И что я там буду считать? Итог по всей детали? В каждой строке? А Эх тупо пробегает весь НД


Sergey13   (2010-01-14 12:13:00) [28]

> [19] Виталий Панасенко   (14.01.10 12:05)

так у тебя
> в мастере подсчитывается

а тебе и говорят, что надо в детали (или рядом) считать. Типа как в EHLib-овском гриде сумма по колонке.


Виталий Панасенко   (2010-01-14 12:05:00) [29]

Оно и есть рассчитываемое.В первом посте писал
> Виталий Панасенко   (13.01.10 17:14)  


> Есть связка двух ADODataSetов, в мастере подсчитывается
> итого по детали(подзапросом select sum from dateail where
> id=master_id)


sniknik   (2010-01-14 10:59:00) [30]

> ЗЫ. АДО не самая удобная библиотека для разработки.
чтобы любить кошек нужно уметь их готовить... (хотя, еще бывает и необоснованная любовь, типа "люблю, а почему не знаю")

> Я в первом посте писал, что
>> указал Resync Command нужный(обновляется одна запись мастера)
а зачем? менять значения в базе только для отображения их пользователю? странный подход. а если захочешь сделать "правильно" типа чтобы сохранять весть документ при нажатии "сохранить", а не при редактировании каждой записи. (правильно использование режима батчапдета, неправильно транзакция в базе при начале редактирования пользователем). что тогда?

> Обычная сумма по документу, изменяющаяся в процессе изменения составляющих. Типа
> Мастер:
> № документа, Общее кол-во
> Деталь
> Код, Количество
> Код, Количество
вместо этого -
Мастер:
№ документа
Деталь
Код, Количество
Код, Количество
и все. а "общее количество" сделать рассчитываемым полем, в рекордсете, в базе оно не нужно.


Виталий Панасенко   (2010-01-14 09:31:00) [31]


> Anatoly Podgoretsky ©   (13.01.10 20:40) [13]

Я в первом посте писал, что
> указал Resync Command нужный(обновляется одна запись мастера)


Виталий Панасенко   (2010-01-14 09:30:00) [32]


> Anatoly Podgoretsky ©   (13.01.10 20:38) [12]

Обычная сумма по документу, изменяющаяся в процессе изменения составляющих. Типа
Мастер:
№ документа, Общее кол-во
Деталь
Код, Количество
Код, Количество

вот.. и при добавлении новой записи или изменении Количества в детали актуализировать Общее количество в Мастере..
Только это уже самый обычный флуд.. я ж писал, что тема закрыта...


ANB   (2010-01-14 09:24:00) [33]


> Виталий Панасенко   (13.01.10 18:07) [11]

Сделай всю связку мастер-деталь руками (на событиях) и управляй ей, как хочешь.

ЗЫ. АДО не самая удобная библиотека для разработки.


Anatoly Podgoretsky   (2010-01-13 20:40:00) [34]

> Виталий Панасенко  (13.01.2010 17:34:05)  [5]

Ты не в курсе, что рефреш можно сделать или выдав одноименную команду, или переоткрытием запроса - по выбору


Anatoly Podgoretsky   (2010-01-13 20:40:00) [35]

> Виталий Панасенко  (13.01.2010 17:39:07)  [7]

Смотри выше, проблем произвести рефреш нет, но и нужды тоже, только при неправильном проектирование такая нужда может возникнуть.


Anatoly Podgoretsky   (2010-01-13 20:38:00) [36]

> Виталий Панасенко  (13.01.2010 17:25:03)  [3]

Какая еще сумма при изменение детали, callback что ли , так это дурость и отхождение от минимальной нормализации.


Виталий Панасенко   (2010-01-13 18:07:00) [37]

Почти. Мне нужно при изменении данных в детали, участвующих в агрегатном расчете в мастере, происходил этот самый подсчет.. И при этом положение курсора в НД детали не изменялось бы. Все, это уже флуд. Тема решена и закрыта. С наступающим Старым Новым годом!:-)


sniknik   (2010-01-13 17:56:00) [38]

а ты уверен что выбрал правильные термины для описания задачи?


Виталий Панасенко   (2010-01-13 17:54:00) [39]

странно.. почему-то в ФИБах за такие действия, мастер деталью не становится. Нормальное поведение - увидеть итог по счету или накладной, например...Если еще и клиент набирает товара на "вот у меня есть столько-то лавэ"..Ну да ладно. Решил. Тема закрыта


sniknik   (2010-01-13 17:49:00) [40]

если сделать задачу то вариантов масса, а вот если из мастера насильно сделать детайл то да, без вариантов.


Страницы:   1 2 3

Наверх

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