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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2014, 10:30   #1
Konstantin_ua
Не судите строго
Форумчанин
 
Аватар для Konstantin_ua
 
Регистрация: 31.03.2011
Сообщений: 202
Радость Вывод записей из БД

Привет всем.
Есть БД в аксес, ado- компоненты для конекта и dbGrid для отображения информации.В базе есть поля: дата платежа1, сума1, дата платежа2, сума2, дата платежа3, сума3, общая сума (оплата за товар идет частями и их нужно фиксировать потому полей так много).
Вывести все это не проблема, задача состоит в том, чтобы как то подсчитать все оплаты и узнать сколько еще клиент должен.
Выводить все в таком порядке: Сегодняшняя дата, долг а ниже дата и сума всех платежей которые осуществлялись. пример нового поля .png типа так.
Не могу только понять где реализовать вычисления долга, DbGrid я так понял только выводит информацию с БД, левую инфу туда не добавишь.Может я не прав, поправите и что то посоветуете.
Заранее спасибо.
Konstantin_ua вне форума Ответить с цитированием
Старый 03.04.2014, 10:37   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А если будет 4 платежа, то приехали? Платежи нужно делать в другой таблице, на каждый платеж своя запись. А здесь объединить несколько запросов используя UNION
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.04.2014, 13:08   #3
Konstantin_ua
Не судите строго
Форумчанин
 
Аватар для Konstantin_ua
 
Регистрация: 31.03.2011
Сообщений: 202
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А если будет 4 платежа, то приехали? Платежи нужно делать в другой таблице, на каждый платеж своя запись. А здесь объединить несколько запросов используя UNION
Да что то сам не додумался на счет отдельной таблицы платежей, спасибо все сделал работает, но только как сделать сегодняшнюю дату и остаток(что бы вверху таблицы выводило)?? Создавать отдельную поле в таблице где писать дату и отдельное под остаток? как то подсчитать нельзя?
Konstantin_ua вне форума Ответить с цитированием
Старый 03.04.2014, 13:14   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Запрос с датой и расчетом остатка
UNION
Запрос движения платежей

добавить вычисляемое поле, по которому сортировать, чтобы данные с остатком первые были
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.04.2014, 13:19   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

насколько я что-то понимаю - остаток нужно вычислять.
А уж делать это отдельным SQL запросом или на клиенте в цикле это делать - тут надо смотреть конкретику...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.04.2014, 15:09   #6
Konstantin_ua
Не судите строго
Форумчанин
 
Аватар для Konstantin_ua
 
Регистрация: 31.03.2011
Сообщений: 202
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
насколько я что-то понимаю - остаток нужно вычислять.
А уж делать это отдельным SQL запросом или на клиенте в цикле это делать - тут надо смотреть конкретику...
правильно, остаток нужно вычислить.Это нужно использовать вычисляемые запросы?
И ещё вопрос в делфи будут работать запросы такого типа:
Код:
qry1.SQL.Add('Select SUM (Suma) FROM Oplata WHERE dogovir =dv  ');
qry1.Parameters.ParamByName('dv').Value:=st;
Konstantin_ua вне форума Ответить с цитированием
Старый 03.04.2014, 15:22   #7
Konstantin_ua
Не судите строго
Форумчанин
 
Аватар для Konstantin_ua
 
Регистрация: 31.03.2011
Сообщений: 202
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
и расчетом остатка
можно поподробней пожалуйста, расчёт делаем в самом sql запросе?
Konstantin_ua вне форума Ответить с цитированием
Старый 03.04.2014, 15:26   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Одним запросом сразу все примерно в таком духе
Код:
SELECT 1 AS Kind,Date() AS DATPLAT,D.DOGOVOR_ID,D.SUMMA-ISNULL(SUM(P.SUMMA),0) AS SUMMA
  FROM Dogovor D
    LEFT JOIN Plateg P ON P.DOGOVOR_ID=D.DOGOVOR_ID
  GROUP BY D.DOGOVOR_ID,D.SUMMA
UNION ALL
SELECT 2 AS Kind,P.DATPLAT,P.DOGOVOR_ID,P.SUMMA
  FROM Plateg P
ORDER BY 3,1,2
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.04.2014, 15:36   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Konstantin_ua Посмотреть сообщение
правильно, остаток нужно вычислить.Это нужно использовать вычисляемые запросы?
И ещё вопрос в делфи будут работать запросы такого типа:
Код:
qry1.SQL.Add('Select SUM (Suma) FROM Oplata WHERE dogovir =dv  ');
qry1.Parameters.ParamByName('dv').Value:=st;
Конечно, будут!
Вот только параметер в запросе надо писать через двоеточие:
Код:
qry1.Close;
qry1.SQL.Clear;
qry1.SQL.Add('Select SUM(Suma) as SumByDog FROM Oplata WHERE dogovir= :dv  ');
qry1.Parameters.ParamByName('dv').Value := st;
qry1.Open;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.04.2014, 17:09   #10
Konstantin_ua
Не судите строго
Форумчанин
 
Аватар для Konstantin_ua
 
Регистрация: 31.03.2011
Сообщений: 202
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Одним запросом сразу все примерно в таком духе
Код:
SELECT 1 AS Kind,Date() AS DATPLAT,D.DOGOVOR_ID,D.SUMMA-ISNULL(SUM(P.SUMMA),0) AS SUMMA
  FROM Dogovor D
    LEFT JOIN Plateg P ON P.DOGOVOR_ID=D.DOGOVOR_ID
  GROUP BY D.DOGOVOR_ID,D.SUMMA
UNION ALL
SELECT 2 AS Kind,P.DATPLAT,P.DOGOVOR_ID,P.SUMMA
  FROM Plateg P
ORDER BY 3,1,2
Вроде бы разобрался, но не пойму что означают эти строчки кода 1 AS Kind, не подскажите.
Konstantin_ua вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод записей в промежутке Nenado SQL, базы данных 6 25.01.2013 00:30
запрос на вывод записей Михаил Юрьевич БД в Delphi 9 04.12.2012 22:20
вывод из бд 20 записей в 2 колонки promt PHP 5 25.09.2011 13:49
DBGridEh вывод записей grom333 Компоненты Delphi 3 04.05.2011 21:00
вывод связных записей из БД Tanuska___:) БД в Delphi 7 19.05.2008 17:03