powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / приход минус расход равно остаток
25 сообщений из 29, страница 1 из 2
приход минус расход равно остаток
    #39878654
AlexeyGantsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток всем.
есть две таблицы Sql : Prihod и Rashod
структура почти одинакова
Наименование товара (Name), Количество (Quantity), Склад (Sklad) и еще поля, которые в данном запросе не нужны
пишу на Delphi 7 пытаюсь составить sql запрос, который позволит вычислить остаток товара на определенном складе.
в таблице прихода (Prihod) есть Name - Рубашка с Sum(Quantity) = 30 и в таблице расхода (Rashod) есть Name - Рубашка с Sum(Quantity) = 20
нужно вычесть и положить в DBGrid

ADOQuery1.SQL.Add('select Prihod.Name, Sum(Prihod.Quantity) from Prihod where Prihod.Sklad = ' + '''' + Form2.ComboBox1.Text + ''' Group by Name Union select Rashod.Name, -Sum(Rashod.Quantity) from Rashod where Rashod.Sklad = ' + '''' + Form2.ComboBox1.Text + ''' Group by Name');

проблема в том, что выводит данные в следующем виде:
рубашка 30
рубашка -20

ну и по другим наименованиям товара тоже также...
результат нужен такой:
Рубашка 10
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39878655
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39878658
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
select X.Name, Sum(P.Quantity) 
from (
  select P.Name, P.Quantity from Prihod P where P.Sklad = :S
  union all
  select R.Name, -R.Quantity from Rashod R where R.Sklad = :S) X
group by X.Name
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39878676
AlexeyGantsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, обязательно изучу

ёёёёёAlexeyGantsev,

https://www.sql.ru/docs/sql/u_sql/index.shtml
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39878677
AlexeyGantsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пишет ошибку: Неправильно определен объект Parameter, представлены несогласованные или неполные сведения...

ЗЫ. правильно ли я понял, что S - стринговое значение моего склада, которое я выбираю из комбобокса?

DimaBr
Код: sql
1.
2.
3.
4.
5.
6.
select X.Name, Sum(P.Quantity) 
from (
  select P.Name, P.Quantity from Prihod P where P.Sklad = :S
  union all
  select R.Name, -R.Quantity from Rashod R where R.Sklad = :S) X
group by X.Name
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39878678
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeyGantsev,

гугли "SQL запросы с параметрами", например - http://ebooks.semgu.kz/content.php?cont=r;1641
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39878679
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeyGantsevесть две таблицы Sql : Prihod и Rashod
1. Это на одну таблицу больше, чем нужно
2. Отлаживать запросы в Delphi - не лучший выбор
3. За имена типа ADOQuery1 надо убивать
4. Динамическое формирование SQL здесь нафиг не нужно
5. Хакеры всего мира благодарят тебя за предоставленные возможности по внедрению.

Это если сходу наиболее очевидные ошибки
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39878684
AlexeyGantsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наверняка Вы правы, но моя задача не стоит собрать что то масштабное, за что меня хакеры всего мира будут благодарить :)
в общем необходимо реализовать именно так.

softwarerAlexeyGantsevесть две таблицы Sql : Prihod и Rashod
1. Это на одну таблицу больше, чем нужно
2. Отлаживать запросы в Delphi - не лучший выбор
3. За имена типа ADOQuery1 надо убивать
4. Динамическое формирование SQL здесь нафиг не нужно
5. Хакеры всего мира благодарят тебя за предоставленные возможности по внедрению.

Это если сходу наиболее очевидные ошибки
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39878685
AlexeyGantsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще вот такое придумал, выдает один вариант, но при подключении второй таблицы (Rashod) сумма прихода возрастает в 4 раза, откуда берутся цифры непонятно :) может у кого-нибудь есть идеи, почему происходит так?

ADOQuery1.SQL.Add('select Prihod.Name, Sum(Prihod.Quantity) - Sum(Rashod.Quantity) from Prihod, Rashod where Rashod.Sklad = ' + '''' + ComboBox1.Text + ''' Group By Prihod.Name');
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39878686
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeyGantsevЕще вот такое придумал, выдает один вариант, но при подключении второй таблицы (Rashod) сумма прихода возрастает в 4 раза, откуда берутся цифры непонятно :) может у кого-нибудь есть идеи, почему происходит так?
...

21997991

И не возвращайся, пока.
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39878712
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пишу на Delphi 7 пытаюсь составить sql запросБред же. Причем тут Делфи ? Это же чистый SQL.
Надо гуглить партионный учет.
Хотя... этот совет услышан не будет. Там все на так просто для новичка.
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39878932
AlexeyGantsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если кому-нибудь интересно вот рабочий запрос:

ADOQuery1.SQL.Add('select X.Name, Sum(X.Quantity) from (select P.Name, P.Quantity from Prihod P where P.Sklad = ' + '''' + ComboBox1.Text + ''' union all select R.Name, -R.Quantity from Rashod R where R.Sklad = ' + '''' + ComboBox1.Text + ''' ) X group by X.Name');

Спасибо L_argo за " партионный учет".
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39878961
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeyGantsevЕсли кому-нибудь интересно вот рабочий запрос:
Пользуйтесь параметрами
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39879029
AlexeyGantsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вам отдельная благодарность за ответ, но в силу своей неопытности сразу не смог адаптировать Ваш запрос и только после того как родил свой увидел сходство...

DimaBrAlexeyGantsevЕсли кому-нибудь интересно вот рабочий запрос:
Пользуйтесь параметрами
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39879938
qwertEHOK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ТС начали забрасывать помидорами и он не прочитал главное - 2 таблицы приход и расход это неправильно
нужна только 1 таблица движений
в таблице данные с + это приход, с - это расход

если у тебя есть несколько видов прихода\расхода, тогда просто создать справочник, но таблица все равно только одна
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39879941
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwertEHOK,

главное - убрать Delphi из учебной программы коррекционных школ.
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39880006
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwertEHOKесли у тебя есть несколько видов прихода\расхода, тогда просто создать справочник, но таблица все равно только одна
Не нужно загонять разные данные в одну таблицу.

Приход(покупка) - это одни данные, там может быть указан поставщик, его реквизиты и прочее
Приход(производство) - то что сделано собственными силами
Расход(продажа) - это другие данные, там может быть указан покупатель и его данные
Внутренне перемещение - это движение внутри (со склада на склад)
Возврат - но это ведь не приход, но всё равно в Плюс
Резервация(консервирование) - продукция, которую нельзя расходовать
и т. д.

И всё это загнать в одну таблицу ?
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39880022
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrПриход(покупка) - это одни данные, там может быть указан поставщик, его реквизиты и прочее
Приход(производство) - то что сделано собственными силами
Расход(продажа) - это другие данные, там может быть указан покупатель и его данные
Внутренне перемещение - это движение внутри (со склада на склад)
Возврат - но это ведь не приход, но всё равно в Плюс
Резервация(консервирование) - продукция, которую нельзя расходовать
и т. д.

И всё это загнать в одну таблицу ?
Я-бы сделал подобным-же образом.
Только через развязку в одной (центральной) таблице или вьюхе - общее движение по видам, а за деталями уже ползать в свои таблицы.

ЗЫ. Ещеб остатки на период сделал. Месяц, квартал или год.
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39880024
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но нужны-ли автору такие навороты?
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39880028
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrИ всё это загнать в одну таблицу ?
В одной системе, с которой я соприкасался, была такая интересная операция как смешивание. Выглядела она примерно так: на заводе стоит бочка. К ней подходит рабочий, выливает туда ведро бензола марки А. Потом подходит другой рабочий, выливает туда ведро бензола марки Б. А потом подходит третий рабочий и зачёрпывает ведро бензола. Просто, без марки.
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39880030
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39880034
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё,

ну, справедливости ради, в другой системе была операция, которая называлась "Перебивка серийных номеров". Официально. Бизнес-кейс для этой операции был следующий. Привезли аппарат на сервисное обслуживание. Клерк вбивает его номер, а система отвечает: чувак, ты охренел, аппарат с таким номером продан совсем другому клиенту в Урюпинск. И вот тут чуваку нужна кнопка: "Мамой клянусь, серийник именно такой".
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39880222
AlexeyGantsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadmanНо нужны-ли автору такие навороты?

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

всем огромное спасибо за содействие и объяснения.
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39880228
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrПриход(покупка) - это одни данные, там может быть указан поставщик, его реквизиты и прочее
Приход(производство) - то что сделано собственными силами
Расход(продажа) - это другие данные, там может быть указан покупатель и его данные
Возврат - но это ведь не приход, но всё равно в Плюс
Есть "Направление движения",(+/-)
есть "Вид операции"
Есть "коррсчет", "вид/тип контрагента" (ФЛ, ЮЛ, Статья, сотрудник)
Есть справочники/аналитики/субконто привязанные к этому "коррсчету"
Так что выше вы описали совершенно одинаковые вещи, отличающиеся только типами справочников.

DimaBrВнутренне перемещение - это движение внутри (со склада на склад)
Немного надо подкрутить, добавив "склад получатель"
и определиться с логикой - дублировать или нет эти документы и их строки по приходу.

DimaBrРезервация(консервирование) - продукция, которую нельзя расходовать
Делается не через документы движения.
DimaBrИ всё это загнать в одну таблицу ?
И довольно часто.
...
Рейтинг: 0 / 0
приход минус расход равно остаток
    #39880248
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183И довольно часто.
Так и в один компонент можно запихнуть весь функционал целой библиотеки. Главный вопрос - ЗАЧЕМ ?
Есть приходный документ, значит существует и отдельная таблица, описывающая эту сущность. Масштабирование свойств никак не влияет на другие виды документов.
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / приход минус расход равно остаток
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]