簡體   English   中英

將Access應用程序移動到C#前端和SQl后端

[英]Moving Access Application to C# front end and SQl Backend

最近,我的經理給了我一項新任務,那就是將處理凈重計算的Access應用程序之一移至C#,並告訴我使用sql作為后端。

因此, 首先,我進入數據庫工具下的“移動數據”部分,只需單擊幾下,即可將所有數據庫從對sql的訪問中移出,所有數據均自動遷移到sql。 第二,我試圖將訪問表單模仿為c中的獲勝表單。 第三,我看到幾乎沒有按鈕基本上直接從表中讀取數據,所以我創建了帶有數據網格的模態表單,並從我的主表單和從數據庫已加載。

現在對其余按鈕的問題

我在Access應用程序中有很多查詢,每個查詢都被另一個查詢引用,似乎這些查詢就像是Access中的表,如果我得到查詢,我不確定如何在SQL Server中完成此操作工作,我可以創建一個沒有任何問題的報告。

我嘗試創建一個視圖,但沒有幫助,因為它找不到引用的表,存儲過程似乎是一種解決方法,但是我對存儲過程了解不多。

存取查詢

生成的報告稱為合並主數據報告

SELECT [Net Weight Master Data Query].[Unit UPC Base Item], [Net Weight Master Data Query].[Item Description], [Net Weight Master Data Query].[Production Line], [Production Lines].[Production Line Description], [Net Weight Master Data Query].[Preset Number], [Net Weight Master Data Query].[Weight Factor], [Net Weight Master Data Query].Piece, [Net Weight Master Data Query].[Pcs Per Unit], [Net Weight Master Data Query].[Upper Limit Unit], [Net Weight Master Data Query].[Upper Limit Factor], [Net Weight Master Data Query].[Piece Wt (g)], [Net Weight Master Data Query].[Upper Limit (g)], [Net Weight Master Data Query].[Lower Limit (g)], [Net Weight Master Data Query].[Label Wt (g)], [Net Weight Master Data Query].[Tare Wt (g)], [Net Weight Master Data Query].[Constant Tare Wt (g)], [Net Weight Master Data Query].[Tare Variation Factor (g)], [Net Weight Master Data Query].[Target Wt (g)], [Net Weight Master Data Query].[Reject Wt (g)], [Net Weight Master Data Query].[Repair Min Wt (g)], [Net Weight Master Data Query].[MAV (g)], [Net Weight Master Data Query].[MAW (g)], [Net Weight Master Data Query].[Pkg Length (mm)], [Net Weight Master Data Query].[Film Product Code], [Net Weight Master Data Query].[Film Width (mm)], [Net Weight Master Data Query].[Forming Tube (mm)], [Net Weight Master Data Query].[Type of Jaws], [Overpack Percentages].[Std RM $/LB], [Overpack Percentages].[Avg Overpack Percentage], [Net Weight Master Data Query].[Last Updated]
FROM ([Net Weight Master Data Query] LEFT JOIN [Production Lines] ON [Net Weight Master Data Query].[Production Line] = [Production Lines].[Production Line]) LEFT JOIN [Overpack Percentages] ON [Net Weight Master Data Query].[Unit UPC Base Item] = [Overpack Percentages].[Unit UPC Base Item]
ORDER BY [Net Weight Master Data Query].[Unit UPC Base Item], [Net Weight Master Data Query].[Production Line];

如您在上方看到的,被引用的第一列是[凈重主數據查詢]

這是凈重主數據查詢

SELECT [Net Weight Master Data].[Unit UPC Base Item], [Item Descriptions].[Item Description], [Net Weight Master Data].[Production Line], [Production Lines].[Production Line Description], [Net Weight Master Data].[Preset Number], [Net Weight Master Data].[Package Type], [Net Weight Master Data].[Weight Factor], [Net Weight Master Data].Piece, [Net Weight Master Data].[Pcs Per Unit], [Net Weight Master Data].[Upper Limit Unit], [Net Weight Master Data].[Upper Limit Factor], IIf([upper limit unit]="g","",(CInt(([label wt (g)]/[Pcs per unit])*10))/10) AS [Piece Wt (g)], ([mav (g)]-[scale deviation factor]-[tare variation factor (g)])/[weight factor] AS UL1, [UL1]-Fix([UL1]) AS UL2, IIf([Package Type] Is Not Null,[UL1],IIf([UL2]=0,Fix([UL1]),IIf([UL2]>0 And [UL2]<0.51,Fix([UL1])+[Rounding Factor1],Fix([UL1])+[rounding factor2]))) AS UL3, IIf([Package Type]="Bar",10,IIf([upper limit unit]="g",([UL3]*[weight factor]),[piece wt (g)]*[Upper Limit Factor])) AS [Upper Limit (g)], IIf([upper limit unit]="g",([UL3]*[weight factor]),0) AS [Lower Limit (g)], [Net Weight Master Data].[Label Wt (g)], [Net Weight Master Data].[Tare Wt (g)], [Net Weight Master Data].[Constant Tare Wt (g)], [Net Weight Master Data].[Tare Variation Factor (g)], [Label Wt (g)]+[tare wt (g)] AS [Target Wt (g)], [label wt (g)]-[lower limit (g)] AS [Reject Wt (g)], IIf([package type]="Bar",([Label Wt (g)]-[mav (g)]+[tare wt (g)]),IIf([package type]="10 Pack",([Label Wt (g)]-[mav (g)]+[tare wt (g)])+2.5,([Label WT (g)]-[mav (g)]+[tare wt (g)])+5)) AS [Repair Min Wt (g)], [Maximum Allowable Variations].[MAV (g)], [Production Lines].[Scale Deviation Factor], [label wt (g)]-[mav (g)] AS [MAW (g)], [Net Weight Master Data].[Pkg Length (mm)], [Net Weight Master Data].[Film Product Code], [Net Weight Master Data].[Film Width (mm)], [Net Weight Master Data].[Forming Tube (mm)], [Net Weight Master Data].[Type of Jaws], [Net Weight Master Data].[Last Updated], [Production Lines].[Rounding Factor1], [Production Lines].[Rounding Factor2]
FROM (([Net Weight Master Data] LEFT JOIN [Production Lines] ON [Net Weight Master Data].[Production Line] = [Production Lines].[Production Line]) INNER JOIN [Maximum Allowable Variations] ON [Net Weight Master Data].[Label Wt (g)] = [Maximum Allowable Variations].[Labeled Quantity (g)]) LEFT JOIN [Item Descriptions] ON [Net Weight Master Data].[Unit UPC Base Item] = [Item Descriptions].[Unit UPC Base Item]
ORDER BY [Net Weight Master Data].[Unit UPC Base Item], [Net Weight Master Data].[Production Line];

在上面的查詢中,引用了[項目描述],這是另一個查詢

[項目說明]查詢如下

SELECT ItemDescLookups.[Unit UPC Base Item], First(ItemDescLookups.[Item Description]) AS [Item Description]
FROM ItemDescLookups
GROUP BY ItemDescLookups.[Unit UPC Base Item];

因此,我們需要創建一個巨大的存儲過程,看起來像在查詢中引用了那里的查詢,即所謂的子查詢,但是有很多IFF和其他語句(例如FIRST),我們如何將它們轉換為SQL。 如果有人可以幫助我創建存儲過程,我將不勝感激,因為所有其他按鈕都創建了不同的報告,如果我知道該怎么做,那么我可以輕松地對其他按鈕執行同樣的操作,並將我的應用程序遷移到csharp。

Access中的“查詢”對應於SQL Server中的“視圖”。 就像在Access中一樣,SQL Server視圖通常可以像其他視圖中的表一樣使用,因此在SQL Server中,

CREATE VIEW ViewX AS
SELECT ... FROM Table1 WHERE ...

然后您可以在其他視圖中使用該視圖,例如,

CREATE VIEW ViewY AS
SELECT ... FROM ViewX WHERE ...

因此,如果您要做的只是重新創建Access中已保存查詢的行為,則可能根本不需要使用存儲過程。

至於Access SQL和T-SQL(SQL Server使用的方言)之間的區別,有幾個,並且在Stack Overflow上已對此進行了很多次討論。 您需要做的是嘗試將SQL語句從Access SQL轉換為T-SQL,如果遇到特定問題,那么

  1. 查看“ 如何提問” ,然后
  2. 問一個新的具體問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM