我一直要求创建一个vb.net WinForms应用程序,它可以自动此电子表格的创建:用多个数据字段填充表单的正确方法是什么?
显然,手动创建电子表格是一个回破的任务。
我很乐于编写SQL来拉取每个单独的数据字段,但是我必须相信有更好的方法。这样的方法将需要144个查询!
我曾考虑过为每个字段或使用gridview创建一个带有单独标签的表单。最终用户都可以接受,但我真的不确定我会如何编写查询来生成看起来像最终产品的数据集。
我不是要求任何人为我写任何代码,我要求的是我应该如何攻击这个任务的概念。
这是我写的一个查询,它返回电子表格第一周业务单元#1的字段。我认为这不是很有帮助,但是我将其添加以表明我已经为此付出了一些努力。
DECLARE @WeekEnding AS DATE
DECLARE @DIV AS INT
SET @WeekEnding = '11/13/2015'
SET @DIV = 20
-- A/R downpayments OPCH
SELECT
SUM(OPCH.DocTotal - OPCH.VatSum - OPCH.TotalExpns) AS 'ARDownPaymentInvoice'
FROM OPCH
LEFT JOIN INV1 ON OPCH.DocEntry = INV1.DocEntry AND INV1.VisOrder = 0
LEFT JOIN OITM ON INV1.ItemCode = OITM.ItemCode
LEFT JOIN OITB ON OITM.ItmsGrpCod = OITB.ItmsGrpCod
LEFT JOIN OACT AS CurrCode (NOLOCK) ON OITB.RevenuesAc = CurrCode.AcctCode
WHERE DATEPART(WEEK, OPCH.DocDate) = DATEPART(WEEK, @WeekEnding) AND YEAR(OPCH.DocDate) = YEAR(@WeekEnding)
AND CurrCode.Segment_4 = @DIV
-- Credits ORIN
SELECT
SUM(ORIN.DocTotal - ORIN.VatSum - ORIN.TotalExpns) * -1 AS 'Credit'
FROM ORIN
LEFT JOIN INV1 ON ORIN.DocEntry = INV1.DocEntry AND INV1.VisOrder = 0
LEFT JOIN OITM ON INV1.ItemCode = OITM.ItemCode
LEFT JOIN OITB ON OITM.ItmsGrpCod = OITB.ItmsGrpCod
LEFT JOIN OACT AS CurrCode (NOLOCK) ON OITB.RevenuesAc = CurrCode.AcctCode
WHERE DATEPART(WEEK, ORIN.DocDate) = DATEPART(WEEK, @WeekEnding) AND YEAR(ORIN.DocDate) = YEAR(@WeekEnding)
AND CurrCode.Segment_4 = @DIV
--Invoices
SELECT
SUM(OINV.DocTotal - OINV.VatSum - OINV.TotalExpns) AS 'Invoice'
FROM OINV
LEFT JOIN INV1 ON OINV.DocEntry = INV1.DocEntry AND INV1.VisOrder = 0
LEFT JOIN OITM ON INV1.ItemCode = OITM.ItemCode
LEFT JOIN OITB ON OITM.ItmsGrpCod = OITB.ItmsGrpCod
LEFT JOIN OACT AS CurrCode (NOLOCK) ON OITB.RevenuesAc = CurrCode.AcctCode
WHERE DATEPART(WEEK, OINV.DocDate) = DATEPART(WEEK, @WeekEnding) AND YEAR(OINV.DocDate) = YEAR(@WeekEnding)
AND CurrCode.Segment_4 = @DIV`
感谢您的任何想法。实现这一
一个想法是使用动态SQL实质上填充一个数据网格,并在gridview中显示该数据网格。您需要使用动态sql,因此每个列都是您自己需要的日期。这会每个月都会改变。这将是最少的用户输入。 – logixologist
我看到这个问题已经下了投票。让我知道还有什么可以提供更好的问题,我会很乐意。 – user3511334
如果我追求动态SQL想法,我可以创建一个包含12列的临时表。然后,我可以创建SQL来选择一行日期并将其插入临时表中,然后创建一行信用数字并将其插入临时表等等。结果将是可以绑定到网格的完整数据集。 – user3511334