Во-первых, VFP не поддерживает случай-когда конструируют на уровне поля. Кроме того, ваш подвыбор на уровне поля имеет запятую после таблицы from и перед предложением where и после where перед заказом ... например,
select * from MyTable, where SomeCondition, Order by ...
Если вы создаете отчет VFP, вам не нужно вручную добавлять строки в свои группы в ваши необработанные данные, что должно быть сделано в самом отчете путем группировки данных и добавления вашего ItemID в качестве основы группы. Затем скопируйте / вставьте столбцы «суммы» в нижний колонтитул группы для каждого элемента. Дважды щелкните поле, и для расчета скажите ему sum () и выполнить сброс в конце каждой группы (т. Е. ItemID). Затем включите отчет сводной группы. Это печатает один раз для всего отчета ... Как и элементы сводки на уровне элемента, скопируйте / вставьте снова, но поместите в сводную полосу отчета. Дважды щелкните эти элементы для суммирования () и сброса в КОНЦЕ ОТЧЕТА.
Однако, поскольку вы работаете в VFP9, и вы, возможно, захотите ДАМПИРОВАНИЕ данных со строками, уже включенными в их соответствующие позиции, я разбил бы на отдельные запросы и объединил бы результаты вместе, как я показал ниже. Предварительно извлеките то, что будет поддерживать отдельные позиции для данных отчета без каких-либо необходимых агрегатов.
SELECT ;
qItemSaleLines.ItemID, ;
qItemSaleLines.SaleID, ;
qCustomers.CardRecordID, ;
qItems.ItemNumber AS ProdCODE, ;
qItems.ItemName AS StkNAME, ;
qCustomers.LastName AS CUSTOMER, ;
qSales.InvoiceNumber AS SaleINVNo, ;
qSales.InvoiceDate AS SaleDATE, ;
qItemSaleLines.Quantity AS SaleQTY, ;
qItemSaleLines.TaxExclusiveTotal AS SALE, ;
qItemSaleLines.CostOfGoodsSoldAmount AS COGS, ;
qItemSaleLines.TaxExclusiveTotal - qItemSaleLines.CostOfGoodsSoldAmount AS MARGIN, ;
(qItemSaleLines.TaxExclusiveTotal - qItemSaleLines.CostOfGoodsSoldAmount) / qItemSaleLines.TaxExclusiveTotal AS MPERCENT, ;
"1" as TierLevel,;
"1" as SubTier,;
SPACE(50) as GroupCaption;
FROM ;
qSales, ;
qCustomers, ;
qItemSaleLines, ;
qItems, ;
WHERE ;
qSales.CardRecordID = qCustomers.CardRecordID ;
AND qSales.SaleID = qItemSaleLines.SaleID ;
AND qItemSaleLines.ItemID = qItems.ItemID ;
AND qSales.InvoiceDate > {^2009-06-30} ;
ORDER BY ;
qItems.ItemNumber, ;
qSales.InvoiceDate ;
INTO ;
CURSOR C_TmpAllLineItemResults READWRITE
*/ NOW, get your individual "ITEM GROUP" totals from ABOVE results...
SELECT ;
TR.ItemID, ;
TR.ItemNumber AS ProdCODE, ;
TR.ItemName AS StkNAME, ;
"1" as TierLevel,;
"2" as SubTier,;
"Subtotal by " + TR.ItemNumber as GroupCaption;
SUM( TR.SaleQty ) as SaleQty,;
SUM( TR.Sale ) as Sale,;
FROM ;
C_TmpAllLineItemResults TR;
GROUP BY ;
1, 2, 3, 4, 5, 6;
ORDER BY ;
1;
INTO ;
CURSOR C_SubTotalPerItem READWRITE
*/ NOW, get your REPORT totals from ABOVE results...
SELECT ;
"2" as TierLevel,;
"Report Totals " as GroupCaption;
SUM( STBI.SaleQty ) as SaleQty,;
SUM( STBI.Sale ) as Sale,;
FROM ;
C_SubTotalPerItem STBI;
GROUP BY ;
1, 2;
INTO ;
CURSOR C_ReportTotals READWRITE
*/ Finally, merge them together... since the append from will add records with matching columns,
*/ even though a subtotal cursor doesn't have all the same columns, VFP doesn't care, just
*/ adds for columns that DO match the table its going into.
SELECT C_TmpAllLineItemResults
APPEND FROM DBF( "C_SubTotalPerItem" )
APPEND FROM DBF( "C_ReportTotals" )
*/ Now, they are all merged... Finally, build an index for your report
INDEX on TierLevel + ItemID + SubTier TAG RptOrder
*/ Now, browse / review the order and adjust as needed...