Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2013, 09:20   #1
Abay19941308
Пользователь
 
Регистрация: 29.10.2012
Сообщений: 64
По умолчанию Вычитание в DBgrid

У меня есть БД. В ней есть таблица Поставка и Документ. В таблице Документ есть поле 'Цена_оптовая', а в таблице Поставка поле 'Цена'.
Когда я вычитаю 'Цена_оптовая' от 'Цена', у меня не правильно проходит вычитание. Оно проверяется по номеру документа. Это поле есть в обоих таблицах.
Если 'номер_документа' поставка = 'номер_документа' Документ то произвести вычитание.

Код:
 while not DM.Dokument.EOF do begin
  ZZ:=DM.Dokument.FieldValues['номер_документа'];
 while not DM.Postavka.EOF do begin
  ZC:=DM.Postavka.FieldValues['номер_документа'];
  if (ZZ=ZC) then begin
  DM.Postavka.Fieldvalues['Прибыль_каждого_товара']:=(DM.Dokument.FieldValues['Цена_оптовая']) -
(DM.Postavka.FieldValues['Цена']);
  end;
  DM.Dokument.next;
 end;
  DM.Postavka.Next;
 end;
Изображения
Тип файла: png Снимок.PNG (4.2 Кб, 103 просмотров)
Abay19941308 вне форума Ответить с цитированием
Старый 02.12.2013, 09:24   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Номер документа уникален в обеих таблицах или возможны повторы записей с одним и тем же номером документа?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.12.2013, 10:36   #3
Vad33
Участник клуба
 
Аватар для Vad33
 
Регистрация: 24.07.2009
Сообщений: 638
По умолчанию

А как формируются строки в DBgrid, запросом ?
Там же должны быть документы с одинаковым номером в колонках
"Цена_оптовая" и "Цена" ?!

А вообще такое вычитание сразу делается в запросе.
** Удача терпелива. **
Vad3333@inbox.ru
Vad33 вне форума Ответить с цитированием
Старый 02.12.2013, 10:45   #4
Abay19941308
Пользователь
 
Регистрация: 29.10.2012
Сообщений: 64
По умолчанию

номер_документа уникален
у каждого товара свой
9 товаров 9 номеров документа

Цитата:
Сообщение от Vad33 Посмотреть сообщение
А как формируются строки в DBgrid, запросом ?
Там же должны быть документы с одинаковым номером в колонках
"Цена_оптовая" и "Цена" ?!

А вообще такое вычитание сразу делается в запросе.
Я создаю в Таблице "документы" отдельное поле Прибыль каждого товара
и разницу между "Цена_оптовая" и "Цена" заношу в нее.
Да номера одинаковые.

Последний раз редактировалось Stilet; 02.12.2013 в 11:46.
Abay19941308 вне форума Ответить с цитированием
Старый 02.12.2013, 11:12   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
А вообще такое вычитание сразу делается в запросе
Без вариантов и не надо программно гонять по данным. Но если очень хочется, то выбросить код и переделать примерно так

Код:
DM.Postavka.First;
while not DM.Postavka.EOF do begin
  if DM.Dokument.Locate('номер_документа',DM.Postavka.FieldByName('номер_документа').AsString,[]) then begin
    DM.Postavka.Edit;
    DM.Postavka.FieldByName('Прибыль_каждого_товара').AsFloat:=DM.Dokument.FieldByName('Цена_оптовая').AsFloat-Postavka.FieldByName('Цена').AsFloat;
    DM.Postavka.Post;
  end;
  DM.Postavka.Next;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.12.2013, 11:31   #6
Abay19941308
Пользователь
 
Регистрация: 29.10.2012
Сообщений: 64
По умолчанию

Спасибо большое!!! Все работает!!!
Abay19941308 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычитание из таблицы Cheser БД в Delphi 2 11.06.2011 04:22
вычитание данных из dbGrid grafgrial Общие вопросы Delphi 0 08.10.2010 23:00
Вычитание и LOOP lordus Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 14.11.2009 17:20
Вычитание avnsanto Microsoft Office Excel 0 24.07.2009 02:33