Володя |
Отправлено: 18.01.2005, 08:34 |
|
Не зарегистрирован
|
Привет всем.
Такой вопрос. Kак сделать так, чтобы после ввода данных в таблицу после нажатия на кнопку ИТОГО складывались все числовые данные в заданном столбце. То есть, если введено 10 наименований товара, их количество и цена, то можна было посчитать общее количество и цену. Спасибо всем ответившим. Можно, и даже желательно, писать мне на мыло — vkohan@list.ru |
|
Valdemar |
Отправлено: 18.01.2005, 09:00 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
Напишите примерно такой запрос:
CODE | SELECT SUM (count) itogo_count, SUM(price*count) itogo_price FROM table_name |
Если надо, то в запросе можно указать условие WHERE. |
|
AVC |
Отправлено: 18.01.2005, 09:05 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Есть два основных способа:
1. Пробежаться по всем записям (или поручить это "умному" компоненту, например сетке). Схема решения:
Запомнить позицию курсора
DisableControls
for (First(); !Eof; Next()) Сумма += кол-во * цена
Восстановить позицию курсора
EnableControls
Есть варианты, оптимизирующие этот процесс.
2. Поручить это серверу.
Выполнить запрос вида
Select Sum(Kolvo * Cena) From ... Where ...
и прочитать результат. |
|
full_lamer |
Отправлено: 18.01.2005, 13:17 |
|
Машинист паровоза
Группа: Участник
Сообщений: 225
|
вообщем то есть и третий вариант — наверняка ты ведешь в базе идентификатор записей — так просто запоминай последний идентификатор после которого ты забивал записи. желательно чтобы ид был числовым, тогда можно просто выполнить запрос предложенный valdemar, только указать еще условие
CODE | WHERE id > <последний_известный_идентификатор> |
|
|
avc* |
Отправлено: 18.01.2005, 15:03 |
|
Не зарегистрирован
|
2full_lamer
Третьего нет. Все остальное разновидности этих двух.
Лично я иногда пользую такой метод:
Пробегаю по датасет и подситываю суммы.
При входе в редактор запоминаю начальное значение.
При посте из суммы отнимаю старое и добавляю новое.
Но это только разновидность способа 1.
У каждого из способов есть свои плюсы и минусы так что универсального решения нет. Каждое для каждого конкретного случая.
2Володя
Сейчас малось разгребусь и набросаю код по обходу датасета. |
|