|
VFP 9
|
|||
---|---|---|---|
#18+
Alex 0163, Так поле - сумма. Каким образом по ней группировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 13:19 |
|
VFP 9
|
|||
---|---|---|---|
#18+
Alex 0163IgorNG, SELECT F012710A.OIS,(IIF(sDetail.no=10,sum(sDetail.cntdetfakt),000))as p10 Inner JOIN sDetail; on F012710A.kd=sDetail.kd; GROUP BY F012710A.OIS Теперь запрос выглядит так и нужно сгруппировать по полю р10! но как это сделать я не знаю! подскажите! то есть нужно вытянуть все данные с NO=10 и суммировать их! а если NO не равно 10 надо поставить 0. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 13:23 |
|
VFP 9
|
|||
---|---|---|---|
#18+
[quot Alex 0163][quot Alex 0163]IgorNG, SELECT F012710A.OIS,sum(sDetail.cntdetfakt) as p10 Inner JOIN sDetail; on F012710A.kd=sDetail.kd; WHERE sDetail.no=10 GROUP BY F012710A.OIS ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 13:27 |
|
VFP 9
|
|||
---|---|---|---|
#18+
Alex 0163то есть нужно вытянуть все данные с NO=10 и суммировать их! а если NO не равно 10 надо поставить 0.Так разве этот кусок Код: sql 1.
не это самое делает? Но если вам нужна группировка результатов уже имеющегося запроса, то Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 13:28 |
|
VFP 9
|
|||
---|---|---|---|
#18+
tanglirТак разве этот кусок Код: sql 1.
не это самое делает?стоп, не то тут вообще бред написан надо так Код: sql 1.
ЗЫ. IgorNG, ваш запрос может быть быстрее, но отсечёт все записи, у которых нет ид=10. А ТСу, может, охота их видеть с нулями. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 13:31 |
|
VFP 9
|
|||
---|---|---|---|
#18+
tanglir, Как автор написал: "то есть нужно вытянуть все данные с NO=10 и суммировать их! а если NO не равно 10 надо поставить 0." А что ему на самом деле нужно? Все отвечают так, как понимают вопрос :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 13:34 |
|
VFP 9
|
|||
---|---|---|---|
#18+
Всем большое спасибо, имелось ввиду другое , но вы подтолкнули на умную мысль, которая помогла решить задачу! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 13:49 |
|
VFP 9
|
|||
---|---|---|---|
#18+
В FoxPro в качестве полей группировки Group by можно ставить порядковые номера полей выборки. Также как и в Order By Код: sql 1. 2. 3.
Только в данном случае это не поможет, поскольку Вы хотите сделать группировку по полю, в котором выполняется суммирование. А это бессмысленно. Либо суммирование, либо группировка. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2013, 15:38 |
|
VFP 9
|
|||
---|---|---|---|
#18+
ВладимирМ, Получился вот такой вот код! set dele on SELECT f012710a.ois, sdetail.kd, SUM(IIF(sDetail.no=5,sDetail.cntdetfakt,0)) as p5,SUM(IIF(sDetail.no=6,sDetail.cntdetfakt,0)) as p6,; sum(IIF(sDetail.no=8,sDetail.cntdetfakt,0))as p8,sum(IIF(sDetail.no=9,sDetail.cntdetfakt,0))as p9,sum(IIF(sDetail.no=10,sDetail.cntdetfakt,0))as p10,; sum(IIF(sDetail.no=11,sDetail.cntdetfakt,0))as p11,sum(IIF(sDetail.no=13,sDetail.cntdetfakt,0))as p13,; sum(IIF(sDetail.no=15,sDetail.cntdetfakt,0))as p15,sum(IIF(sDetail.no=16,sDetail.cntdetfakt,0))as p16,sum(IIF(sDetail.no=20,sDetail.cntdetfakt,0))as p20,; sum(IIF(sDetail.no=25,sDetail.cntdetfakt,0))as p25,sum(IIF(sDetail.no=26,sDetail.cntdetfakt,0))as p26,; sum(IIF(sDetail.no=27,sDetail.cntdetfakt,0))as p27, sum(IIF(sDetail.no=30,sDetail.cntdetfakt,0))as p30,sum(IIF(sDetail.no=35,sDetail.cntdetfakt,0))as p35,; sum(IIF(sDetail.no=40,sDetail.cntdetfakt,0))as p40,sum(IIF(sDetail.no=41,sDetail.cntdetfakt,0))as p41,sum(IIF(sDetail.no=43,sDetail.cntdetfakt,0))as p43,; sum(IIF(sDetail.no=45,sDetail.cntdetfakt,0))as p45,sum(IIF(sDetail.no=50,sDetail.cntdetfakt,0))as p50,; sum(IIF(sDetail.no=60,sDetail.cntdetfakt,0))as p60, sum(IIF(sDetail.no=70,sDetail.cntdetfakt,0))as p70,sum(IIF(sDetail.no=71,sDetail.cntdetfakt,0))as p71,; sum(IIF(sDetail.no=74,sDetail.cntdetfakt,0))as p74,sum(IIF(sDetail.no=80,sDetail.cntdetfakt,0))as p80,sum(IIF(sDetail.no=81,sDetail.cntdetfakt,0))as p81,; sum(IIF(sDetail.no=85,sDetail.cntdetfakt,0))as p85,sum(IIF(sDetail.no=90,sDetail.cntdetfakt,0))as p90,; sum(IIF(sDetail.no=95,sDetail.cntdetfakt,0))as p95, sum(IIF(sDetail.no=100,sDetail.cntdetfakt,0))as p100,sum(IIF(sDetail.no=101,sDetail.cntdetfakt,0))as p101,; sum(IIF(sDetail.no=105,sDetail.cntdetfakt,0))as p105,sum(IIF(sDetail.no=110,sDetail.cntdetfakt,0))as p110,sum(IIF(sDetail.no=115,sDetail.cntdetfakt,0))as p115,; sum(IIF(sDetail.no=120,sDetail.cntdetfakt,0))as p120,sum(IIF(sDetail.no=125,sDetail.cntdetfakt,0))as p125,; sum(IIF(sDetail.no=130,sDetail.cntdetfakt,0))as p130, sum(IIF(sDetail.no=135,sDetail.cntdetfakt,0))as p135,sum(IIF(sDetail.no=140,sDetail.cntdetfakt,0))as p140,; sum(IIF(sDetail.no=150,sDetail.cntdetfakt,0))as p150,sum(IIF(sDetail.no=160,sDetail.cntdetfakt,0))as p160,sum(IIF(sDetail.no=170,sDetail.cntdetfakt,0))as p170,; sum(IIF(sDetail.no=180,sDetail.cntdetfakt,0))as p180 FROM ; sdetail; LEFT JOIN f012710a ON sdetail.kd=f012710a.kd AND sdetail.no=f012710a.no; GROUP BY 1,2; into cursor q ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2013, 10:04 |
|
VFP 9
|
|||
---|---|---|---|
#18+
Alex 0163, Простыня, однако ;). Если вот эти числа 5,6,8,9,...,170,180 есть результат некой выборки или справочник (извините, тему не читал), то можно и написание селекта автоматизировать. К примеру, пусть в табличке MyDetail в поле No перечень этих деталей, тогда Ваш селект вот Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
(в качестве извращения :) ) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2013, 11:31 |
|
VFP 9
|
|||
---|---|---|---|
#18+
Всем снова привет! создаю отчет в Эксель через VFP9, он сохраняется в определенное место. Вопрос возможно ли через VFP9 форматировать или создавать сразу этот файл со своими параметрами в ШАПКЕ экселя???? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 15:30 |
|
VFP 9
|
|||
---|---|---|---|
#18+
Alex 0163, сразу - нет, пишите свой "выгружатор" или используйте имеющийся. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 16:09 |
|
VFP 9
|
|||
---|---|---|---|
#18+
tanglir, а возможно ли создать отчет в файл Эксель в готовый шаблон который был создан ранее(в котором уже сформирована шапка)??? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 16:13 |
|
VFP 9
|
|||
---|---|---|---|
#18+
Alex 0163, смотря что вы понимаете под словом "шаблон". Если шапку - то поищите тут по "arraypasser". ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 16:25 |
|
VFP 9
|
|||
---|---|---|---|
#18+
tanglir, Шаблон -это уже заранее готовый Эксель файл с уже готовой шапкой в который нужно только внести данные ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 16:54 |
|
VFP 9
|
|||
---|---|---|---|
#18+
Alex 0163tanglir, Шаблон -это уже заранее готовый Эксель файл с уже готовой шапкой в который нужно только внести данныеВносите, кто мешает? Ессно, не "одной командой". И шапку можно сделать из фокса, только ручками немного поработать придется... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 06:12 |
|
VFP 9
|
|||
---|---|---|---|
#18+
Jonny540, а можно пример кода в котором мы с заполняем шаблон или или как создается КРАСИВАЯ шапка в фоксе ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 09:12 |
|
VFP 9
|
|||
---|---|---|---|
#18+
Alex 0163Jonny540, а можно пример кода в котором мы с заполняем шаблон или или как создается КРАСИВАЯ шапка в фоксе Чем отличается "шаблон" от "не шаблона"? Да ничем... Просто провели некую подготовку, красивостей нарисовали.... А так - точно так же помещаем значения в ячейки.... Объединяем ячейки, меняем шрифт и размер букв и т.д. Можно даже формулу засунуть.... [SRC пример из реальной программы] LPARAMETERS ldDate1,lDdate2,tnkodadr,lcregion,tnkodisp,tnmode,lcFileName SET date GERMAN #INCLUDE "..\..\libs\include\fatfact.h" #INCLUDE "..\LIBS\INCLUDE\excel.h" * проверяем количество параметров и то, что нам передали в параметрах ... удалено.... *подготваливаем необходимые вспомогательные данные lnweek = WEEK(ldDate1,1, 2) loWeek1 = GetFirstDayOfWeek(lnweek, YEAR(ldDate1)) loWeek2 = GetFirstDayOfWeek(lnweek+1, YEAR(ldDate1)) loWeek3 = GetFirstDayOfWeek(lnweek+2, YEAR(ldDate1)) loWeek4 = GetFirstDayOfWeek(lnweek+3, YEAR(ldDate1)) loWeek5 = GetFirstDayOfWeek(lnweek+4, YEAR(ldDate1)) loWeek6 = GetFirstDayOfWeek(lnweek+5, YEAR(ldDate1)) ldBeg6 = loWeek6.dFirstDay ldEnd6 = loWeek6.dLastDate ldBeg5 = loWeek5.dFirstDay ldEnd5 = loWeek5.dLastDate ldBeg4 = loWeek4.dFirstDay ldEnd4 = loWeek4.dLastDate ldBeg3 = loWeek3.dFirstDay ldEnd3 = loWeek3.dLastDate ldBeg2 = loWeek2.dFirstDay ldEnd2 = loWeek2.dLastDate ldBeg1 = loWeek1.dFirstDay ldEnd1 = loWeek1.dLastDate *Подготавливаем данные для выдачи в Excel ... удалено.... SELECT * from curtmp INTO CURSOR tmp READWRITE * Делаем строку для итогов первого уровня SELECT 1 as sel, koddept, kodtrademark, tradename, kodcomppay, companyname FROM tmp GROUP BY 1,2,3,4,5,6 INTO CURSOR cur_itg_comp * Делаем строку для итогов второго уровня SELECT 2 as sel, 999999999 as kodtrademark, " " as tradename, kodcomppay, "Итого по "+companyname as companyname FROM tmp GROUP BY 1,2,3,4,5 INTO CURSOR itg_comp SELECT tmp APPEND FROM DBF('cur_itg_comp') APPEND FROM DBF('itg_comp') SELECT * from tmp ORDER BY kodcomppay, kodtrademark, sel, koddept, code INTO CURSOR tmp && Упорядочиваем строки: сначала строки с данными, потом итоги первого уровня, потом итоги второго уровня... IF RECCOUNT('tmp')=0 RETURN ENDIF *Открываем шаблон lcNameFileOpen = 'с:\Template\Шаблон_new.xlt' MyXlsFactory = .... && Создаем объект приложения Excel MyXlsFactory.Off_App.Workbooks.ADD(lcNameFileOpen) && Открываем шаблон MyXlsFactory.Off_App.DisplayAlerts = .f. MyXlsFactory.WorkSheet = MyXlsFactory.Off_App.Sheets(1) MyXlsFactory.Off_App.Sheets(1).Activate MyXlsFactory.Off_App.Calculation = xlManual && переводим в ручной режим * заполняем ячейки на рабочем листе Экселя ... удалено ... WITH MyXlsFactory.WorkSheet * Украшательства: Ставим группировку в Экселе и прописываем формулы, отсутствующие в шаблоне * Первые пять строк - шапка шаблона SELECT tmp i = 0 k = 0 p = 0 indexgrp = 5 SCAN IF sel = 0 i = i + 1 ELSE IF sel = 1 p = RECNO() .range(.cells[6+ p- i,1],.cells[6+ p-1,1]).Rows.Group .range(.cells[6+ p - i,1],.cells[6+ p-1,1]).Rows.Group .range(.cells[6+ p- i,1],.cells[6+ p-1,1]).Rows.Group .cells[6+ p,1].Rows.Group .cells[6+ p,1].Rows.Group .range(.cells[6+ p,1],.cells[6+ p,153]).Font.FontStyle = ... .range(.cells[6+ p,1],.cells[6+ p,153]).Interior.ColorIndex = 15 FOR k = 6 TO 152 .cells[6+ p,k].FormulaR1C1 = TEXTMERGE('=SUM(R[-<<i>>]C:R[-1]C)') ENDFOR .cells[6+ p,153].FormulaR1C1 = TEXTMERGE('=IFERROR((RC[-2]/RC[-3])*100,"""")') i = 0 endif ENDIF ENDSCAN *продолжаем украшательства, группы следующего уровня группировки SELECT tmp GO TOP i = 0 k = 0 p = 0 indexgrp = 5 formula = '' SCAN FOR sel = 2 p = RECNO() lnKOdcomp = tmp.kodcomppay SELECT RECNO() as recid, sel,kodcomppay FROM tmp INTO CURSOR test WHERE sel > 0 AND tmp.kodcomppay = lnkodcomp ORDER BY 2 desc SELECT test GO top p1 = test.recid SKIP 1 DO while !EOF() IF EMPTY(formula) formula = "=" ELSE formula = formula + "+" ENDIF formula = formula + "R["+ALLTRIM(STR(test.recid - p1))+"]C" SKIP 1 ENDDO .cells[6+ p,1].Rows.Group .range(.cells[6+ p,1],.cells[6+ p,153]).Font.FontStyle = .... .range(.cells[6+ p,1],.cells[6+ p,153]).Interior.ColorIndex = 15 FOR k = 6 TO 152 .cells[6+ p,k].FormulaR1C1 = TEXTMERGE(formula) ENDFOR .cells[6+ p,153].FormulaR1C1 = TEXTMERGE('=IFERROR((RC[-2]/RC[-3])*100,"""")') formula = '' i = 0 SELECT tmp ENDSCAN p1 = RECCOUNT("tmp")+1 .range(.cells[6+ p1,1],.cells[6+ p1,153]).Font.FontStyle = .... .range(.cells[6+ p1,1],.cells[6+ p1,153]).Interior.ColorIndex = 15 * Итоги по документу (TOTAL) FOR k = 6 TO 151 .cells[6+ p1,k].FormulaR1C1 = TEXTMERGE('=SUMIF(R[-<<p1-1>>]C[-<<k-2>>]:R[-1]C[-<<k-2>>],"",R[-<<p1-1>>]C:R[-1]C)') ENDFOR .cells[6+ p1,152].FormulaR1C1 = TEXTMERGE('=SUMIF(R[-<<p1-1>>]C[-<<k-2>>]:R[-1]C[-<<k-2>>],"",SUMIF(R[-<<p1-1>>]C:R[-1]C,"<0",R[-<<p1-1>>]C:R[-1]C))') .cells[6+ p1+1,152].FormulaR1C1 = TEXTMERGE('=SUMIF(R[-<<p1-1>>]C[-<<k-2>>]:R[-1]C[-<<k-2>>],"",SUMIF(R[-<<p1-1>>]C:R[-1]C,">=0",R[-<<p1-1>>]C:R[-1]C))') .cells[6+ p1,153].FormulaR1C1 = TEXTMERGE('=IFERROR((RC[-2]/RC[-3])*100,"""")') &&TEXTMERGE('=IFERROR((1-ABS(RC[-2])/RC[-1])*100,"""")') ENDWITH MyXlsFactory.Off_App.Calculation = xlAutomatic && Переводим вычисления в автоматический режим * Здесь сформированный документ отражается на экране пользователя.... * Чистим за собой все курсорры USE IN SELECT('tmp') USE IN SELECT('cur_itg_comp') USE IN SELECT('itg_comp') ... [/SRC] ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 10:01 |
|
VFP 9
|
|||
---|---|---|---|
#18+
Станислав С...кий, большое спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 16:33 |
|
VFP 9
|
|||
---|---|---|---|
#18+
Alex 0163, Всем привет! нужна помощь есть вот такие запросики: SET DELETED on SELECT Sdetail.id_sm, Stask.datesm,Stask.smena, MAX(Sdetail.no)as max_nom FROM sdetail ; INNER JOIN stask ; ON Sdetail.id_sm = Stask.id_sm; WHERE BETWEEN(stask.datesm,DATE(2013,02,18),DATE(2013,02,22)); AND right(cast(sdetail.no as m),1) = '0'; group by 1,2,3; into cursor q Select q.id_sm, q.datesm,q.smena, q.max_nom, SUM(Sdetail.massa) FROM q; left join sdetail; ON q.id_sm = sdetail.id_sm; AND q.max_nom= Sdetail.no; GROUP BY 1,2,3,4; Помогите сделать что бы это все делалось в одном запросе. заранее спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2013, 12:30 |
|
VFP 9
|
|||
---|---|---|---|
#18+
Alex 0163Помогите сделать что бы это все делалось в одном запросе. Alex 0163Select q.id_sm, q.datesm,q.smena, q.max_nom, SUM(Sdetail.massa) FROM >>>q<<<; left join sdetail;выделенное заменяете на Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2013, 12:38 |
|
VFP 9
|
|||
---|---|---|---|
#18+
Код: sql 1. 2.
вот так выделенное. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2013, 12:38 |
|
|
start [/forum/topic.php?fid=41&msg=38130515&tid=1583142]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 288ms |
total: | 422ms |
0 / 0 |