Ich bin gebeten worden, eine vb.net WinForms-Anwendung zu erstellen, die die Erstellung dieser Tabelle automatisiert:Was ist der richtige Weg, um ein Formular mit mehreren Datenfeldern zu füllen?
Offensichtlich ist, dass die Tabelle manuell erstellen eine Rück Aufgabe zu brechen.
Ich bin sehr komfortabel schreiben SQL, um jedes einzelne Datenfeld zu ziehen, aber ich muss glauben, dass es einen besseren Weg gibt. Solch eine Methode würde 144 Abfragen erfordern !!
Ich habe überlegt, ein Formular mit individuellen Beschriftungen für jedes Feld zu erstellen oder eine Gridview zu verwenden. Entweder wäre das für den Endbenutzer akzeptabel, aber ich bin mir nicht sicher, wie ich eine Abfrage schreiben würde, um ein Dataset zu erzeugen, das sowieso wie das Endprodukt aussieht.
Ich fordere niemanden auf, irgendeinen Code für mich zu schreiben, mit dem ich um Hilfe breche ist das Konzept, wie ich diese Aufgabe angehen sollte.
Hier ist eine Abfrage, die ich schrieb, die die Felder für Business Unit # 1 für die erste Woche in der Tabelle zurückgibt. Ich denke nicht, dass es viel hilft, aber ich füge es hinzu, um zu zeigen, dass ich mich etwas anstrengen muss.
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`
Danke für irgendwelche Ideen.
Ein Gedanke ist, dynamisches SQL zu verwenden, um ein Datagrid im Wesentlichen zu füllen und dieses Datagrid in der Gridview anzuzeigen. Sie müssten dynamic sql verwenden, damit jede Spalte ihr eigenes Datum hat, das Sie benötigen. Dies würde sich jeden Monat ändern. Dies wäre die geringste Benutzereingabe. – logixologist
Ich sehe die Frage wurde abgelehnt. Lassen Sie mich wissen, was ich sonst noch zur Verfügung stellen kann, um die Frage besser zu machen, und ich werde gerne dazu beitragen. – user3511334
Wenn ich die dynamische SQL-Idee verfolgen, könnte ich eine temporäre Tabelle mit 12 Spalten erstellen. Dann könnte ich SQL erstellen, um eine Reihe von Daten auszuwählen und diese in die temporäre Tabelle einzufügen, dann eine Reihe von Kreditnummern erstellen und diese in die temporäre Tabelle usw. einfügen. Das Ergebnis wäre eine vollständige Datenmenge, die an ein Gitter gebunden werden könnte . – user3511334