powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / prixod-rasxod
18 сообщений из 18, страница 1 из 1
prixod-rasxod
    #34931742
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yest 2 tablitsa: prixod.dbf i rasxod.dbf. Ot 1-qo firmi (dopustim muas_k=3) prixod bil 293040$(summa mableg_d). Rasxod ot etoqo firmi bil 232389$ (tablitsa rasxod,dbf, summa mebleg_d).Obshi Ostatok za mesyats:293040-232389=60651. Eto summa sotavlen ot posledniy (od_tar=29.10.2007) summi dlya etoqo firmi +5151 (ot ostatok summ od_tar=26.10.2007 -40495)
T.e. mne nado vicislit za kajdiy den ostatok, Kak eto mojno delat?
...
Рейтинг: 0 / 0
prixod-rasxod
    #34934019
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как из етой 2 таблицы можно составить 1 таблицу оторые были вот такие:
prixod.muas_k, prixod.mebleg_d, rasxod.mebleg_d

При помощи такой запроса очень много записи:
SELECT prixod.muas_k, prixod.mebleg_d, rasxod.mebleg_d;
FROM prixod inner JOIN rasxod ;
ON prixod.muas_k = rasxod.muas_k
...
Рейтинг: 0 / 0
prixod-rasxod
    #34934475
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asd456Как из етой 2 таблицы можно составить 1 таблицу оторые были вот такие:
prixod.muas_k, prixod.mebleg_d, rasxod.mebleg_d

При помощи такой запроса очень много записи:
SELECT prixod.muas_k, prixod.mebleg_d, rasxod.mebleg_d;
FROM prixod inner JOIN rasxod ;
ON prixod.muas_k = rasxod.muas_k
Из двух сообщений, если честно, ничерта не понял. На тебе репрокод - ковыряй.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
#DEFINE cnSumma  0000000000 . 0000 
SET DATE TO GERMAN
SET TALK OFF
CLOSE TABLES ALL
USE Prixod.Dbf IN  0 
USE Rasxod.Dbf IN  0 

*-* (IGEL) Заполняем шаблон дат полным пересечением дат.
CREATE CURSOR CurDates (Datum D)
CALCULATE MIN(Od_Tar), MAX(Od_Tar) TO ldMinDt1, ldMaxDt1 IN Prixod
CALCULATE MIN(Yukl_Tar), MAX(Yukl_Tar) TO ldMinDt2, ldMaxDt2 IN Rasxod
ldMinDt = MIN(ldMinDt1, ldMinDt2)
ldMaxDt = MAX(ldMaxDt1, ldMaxDt2)
ldMinDt = DATE(YEAR(ldMinDt), MONTH(ldMinDt),  1 )
ldMaxDt = GOMONTH(DATE(YEAR(ldMaxDt), MONTH(ldMaxDt),  1 ),  1 )- 1 
IF EMPTY(ldMinDt) OR EMPTY(ldMaxDt)
	=MESSAGEBOX("Не вычислили минимальную/максимальную дату")
	RETURN .T.
ENDIF
ldDate = ldMinDt
DO WHILE ldDate < ldMaxDt +  1 
	INSERT INTO CurDates VALUES (ldDate)
	ldDate = ldDate +  1 
ENDDO
SELECT CurDates
GO TOP && Шобы рашмор TABLEUPDATE сделал.

*-* (IGEL) Получаем полное пересечение дат с контрагентами... Будет шаблон такой.
*-* (IGEL) Чтоб не тормозило можно разбить на  2  выборки. У меня не тормозит.
SELECT DISTINCT ;
	CurDates.Datum, ;
	NVL(Prixod.Muas_K, Rasxod.Muas_K) AS Muas_K ;
	FROM Prixod, Rasxod, CurDates ;
	INTO CURSOR CurTempl NOFILTER
	
*-* (IGEL) Получаем полный список приходов и расходов по дням
SELECT ;
	Od_Tar				AS Datum, ;
	Muas_K				AS Muas_K, ;
	SUM(Mebleg_D)		AS Prixod, ;
	MAX(cnSumma)		AS Rasxod ;
	FROM Prixod ;
	GROUP BY  1 ,  2  ;
UNION ALL SELECT ;
	Yukl_Tar			AS Datum, ;
	Muas_K				AS Muas_K, ;
	MAX(cnSumma)		AS Prixod, ;
	SUM(Mebleg_D)		AS Rasxod ;
	FROM Rasxod ;
	GROUP BY  1 ,  2  ;
	INTO CURSOR CurOborot NOFILTER READWRITE
	
*-* (IGEL) Рассчитываем сальду по датам
SELECT ;
	CL.Datum, ;
	CL.Muas_K, ;
	NVL(SUM(CR.Prixod), cnSumma)								AS FullPrixod, ;
	NVL(SUM(CR.Rasxod), cnSumma)								AS FullRasxod, ;
	SUM(IIF(CR.Datum = CL.Datum, CR.Prixod, cnSumma))			AS Prixod, ;
	SUM(IIF(CR.Datum = CL.Datum, CR.Rasxod, cnSumma))			AS Rasxod, ;
	NVL(SUM(CR.Prixod), cnSumma) - NVL(SUM(CR.Rasxod), cnSumma)	AS Saldo ;
	FROM CurTempl CL ;
	LEFT OUTER JOIN CurOborot CR ON CR.Datum <= CL.Datum ;
								AND CR.Muas_K = CL.Muas_K ;
	GROUP BY  1 ,  2  ;
	ORDER BY  2 ,  1  ;
	INTO CURSOR CurSaldo NOFILTER READWRITE

...
Рейтинг: 0 / 0
prixod-rasxod
    #34934532
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне из эти 2 таблицы надо получить 1, которые поле должны вот такие:
prixod.muas_k, prixod.mebleg_d, rasxod.mebleg_d

В етой строке у меня получается ошибка:
CALCULATE MIN(Od_Tar), MAX(Od_Tar) TO ldMinDt1, ldMaxDt1 IN Prixod
Вот такая:
Command contains unreqognized phrase/keyword

У меня FP6. Может быт за ето такая ошибка получается?
...
Рейтинг: 0 / 0
prixod-rasxod
    #34934718
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT IIF(ISNULL(od_tar),yukl_tar,od_tar) dateOtchet, ;
SUM(;
(select SUM(mebleg_d) FROM prixod pIn WHERE pIn.od_tar<=pOut.od_tar AND pIn.muas_k=pOut.muas_k) - ;
(select SUM(mebleg_d) FROM rasxod rIn WHERE rIn.yukl_tar<=rOut.yukl_tar AND rIn.muas_k=rOut.muas_k);
) as Result ;
FROM prixod pOut;
INNER JOIN rasxod rOut ;
ON pOut.muas_k=rOut.muas_k ;
WHERE pOut.muas_k= 3  ;
GROUP BY  1 ;
ORDER BY  1 
...
Рейтинг: 0 / 0
prixod-rasxod
    #34934790
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то не то сделал :) все внимание на неловкие названия полей.
В общем, отчетная дата и нарастающим итогом доход и расход. Дальше думаю все понятно.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT dateOtchet, ;
(select SUM(mebleg_d) FROM prixod pIn WHERE od_tar<=dateOtchet AND muas_k= 3 ) dohod, ;
(select SUM(mebleg_d) FROM rasxod rIn WHERE yukl_tar<=dateOtchet AND muas_k= 3 ) rashod ;
FROM (select od_tar as Dateotchet FROM prixod  WHERE muas_k= 3  ;
	 UNION ;
	 select yukl_tar FROM rasxod WHERE muas_k= 3 ) dateOper ;
ORDER BY  1 
...
Рейтинг: 0 / 0
prixod-rasxod
    #34935106
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос 1. Здесь dataotchet что такой?
Вопрос 2. 2-м строке запросе получается такая ошибка:
SQl: invalid use of subquery
...
Рейтинг: 0 / 0
prixod-rasxod
    #34935397
h.i.a.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 asd456
А версия VFP у тебя какая? Если не девятка, так оговаривай это, тут телепатов нет.
...
Рейтинг: 0 / 0
prixod-rasxod
    #34935421
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dataotchet - отчетная дата, дата, по которой были обороты по счетам по данной фирме (на эту дату доход) (на эту дату расход)
***
условие, на любую дату, надо уточнить.
Все же на любую дату? Или на любую дату, из тех, по которым были обороты по счетам данной фирмы?
Если первое, то по сложней придется, т.к. у тебя подзапросы во From и в Select не проходят :(
...
Рейтинг: 0 / 0
prixod-rasxod
    #34935442
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
h.i.a.2 asd456
А версия VFP у тебя какая? Если не девятка, так оговаривай это, тут телепатов нет.

VFP6. Я уже писал об этом.
...
Рейтинг: 0 / 0
prixod-rasxod
    #34935509
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GoshaSусловие, на любую дату, надо уточнить.
Все же на любую дату? Или на любую дату, из тех, по которым были обороты по счетам данной фирмы?
Если первое, то по сложней придется, т.к. у тебя подзапросы во From и в Select не проходят :(

2-й вариант.
Если VFP9 , тогда может будет работать?
...
Рейтинг: 0 / 0
prixod-rasxod
    #34935658
h.i.a.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проглядел. Обычно о версии пишут в самом первом посте (по крайней мере на фоксклубе).
В девятке значительно расширены возможности sql. В примерах GoshaS используются эти "нововведения".
...
Рейтинг: 0 / 0
prixod-rasxod
    #34935828
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asd456
Если VFP9 , тогда может будет работать?
Да, я на ваших табличках прогонял. Можно конечно еще подумать и сделать изящней, ну это уже вам ;) подработать.
...
Рейтинг: 0 / 0
prixod-rasxod
    #34935840
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу использувать вот этот код:

SELECT prixod.muqavila, prixod.muas_k, sum(prixod.mebleg_d) as mebleg_d, sum(prixod.mebleg_m) as mebleg_m, prixod.mezenne;
FROM prixod;
GROUP BY prixod.muqavila, prixod.od_tar;
into table z_odm
use z_odm
brow

SELECT rasxod.muqavila, rasxod.muas_k, sum(rasxod.mebleg_d) as mebleg_d, sum(rasxod.mebleg_m) as mebleg_m, rasxod.mezenne;
FROM rasxod;
GROUP BY rasxod.muqavila, rasxod.yukl_tar;
into table z_yuk
use z_yuk
brow

SELECT z_odm.muqavila, z_odm.muas_k,z_odm.mebleg_d as prixod_d, z_yuk.mebleg_d as rasxod_d, z_odm.mebleg_m as prixod_m,z_yuk.mebleg_m as rasxod_m ,Z_ODM.mezenne;
FROM z_odm INNER JOIN z_yuk;
ON z_odm.muqavila = z_yuk.muqavila ;
INTO TABLE qaliq_tz.dbf
use qaliq_tz
brow


1-и и 2-м селекте все нормально.В 3-м селекте получается 20 записей для muas_k=3. А там должна быть всего 5 записей для этой фирмы:
62995 55876.50
22000 65812.50
112050 55188.00
40495 55512.00
55000 0.00

Вчем моя ошибка? Помогите пожалуйста.
...
Рейтинг: 0 / 0
prixod-rasxod
    #34936914
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй еще один курсор создать, где все отчетные даты и предприятия, и к нему уже присоединять полученные тобой таблицы по left join
Код: plaintext
1.
select date, idFirm from rashod union select date, idFirm from dohod into cursor Alldate
Union без All уберет дубли
В итоге получится наподобие этого.
Код: plaintext
1.
2.
3.
4.
5.
6.
select *
from allDate
left join rashod
on allDate.date=rashod.date and allDate.idFirm=rashod.idFirm
left join dohod
on allDate.date=dohod.date and allDate.idFirm=dohod.idFirm
В общем мысль ясна. Названия твоих полей переписывать не буду, ибо голову сломаешь с этими названиями, тем более рассматривать код...
Еще посоветую порешать упражнения на сайте www.sqlex.ru Очень полезно, там есть английская и русская версии. Удачи.
...
Рейтинг: 0 / 0
prixod-rasxod
    #34937097
asd456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробувал применит код указанный с GoshaS на свои таблицы, такая ошибка получается:
"YUKL_TAR is not inique and must be qualifield." Здесь, YUKL_TAR=date. Что за ошибка не понимаю.

Код:

select yukl_tar, muas_k from rasxod union select od_tar, muas_k from prixod into table Alldate
brow
select yukl_tar,muas_k from allDate;
left join rasxod;
on allDate.yukl_tar=rasxod.yukl_tar and allDate.muas_k=rasxod.muas_k;
left join prixod;
on allDate.yukl_tar=prixod.od_tar and allDate.muas_k=prixod.muas_k;
INTO TABLE aa.dbf
use aa
brow
...
Рейтинг: 0 / 0
prixod-rasxod
    #34937190
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select yukl_tar as date, muas_k from rasxod union select od_tar, muas_k from prixod into cursor Alldate

select date, allDate.muas_k ;
from allDate;
left join rasxod;
on allDate.date=rasxod.yukl_tar and allDate.muas_k=rasxod.muas_k;
left join prixod;
on allDate.date=prixod.od_tar and allDate.muas_k=prixod.muas_k;
INTO cursor aa

select aa
brow
...
Рейтинг: 0 / 0
prixod-rasxod
    #34937193
авторYUKL_TAR is not inique and must be qualifield."
Черным по-аглицкому написано, что поле YUKL_TAR есть не в одной таблице, а в нескльких и он не знает из какой таблицы брать. Требуется явно указать вместе с полем таблицу в формате таблица.поле
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / prixod-rasxod
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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