Dot-Net

winforms 應用程序中的查詢設計器

  • October 1, 2015

我正在為一個客戶端開發一個 Winforms C# 應用程序,它取代了他們舊的基於 MS Access 的解決方案。這是一個完整的重寫,現在使用 SQL Server 作為其數據庫。該軟體現在處於開發的最後階段。

他們剛剛要求的一件事是能夠執行軟體的 UI 目前可能不允許他們在需要時執行的自定義查詢。

使用舊的 Access 解決方案,他們可以使用查詢設計器創建自己的自定義查詢。使用 winforms/Sql Server 解決方案,他們無法做到這一點。他們也不想自己編寫 SQL。

誰能想到一個很好的解決這個問題的方法?也許是一個 Winforms 庫,它允許使用者創建業務對像圖和“和|或”邏輯。或其他一些允許他們自定義查詢的 UI 類型,幾乎就像他們在 Access 中可以做的一樣(但可能更特定於域)。

更新

我已將 Yaqub 的答案標記為答案,因為這是最接近我當時正在尋找的答案。我最終為他們編寫了一個自定義表單來生成他們的查詢:

在此處輸入圖像描述

第二組中的“選擇表…”組合框僅顯示已添加到頂部列錶框中的表。

因為數據庫佈局現在幾乎是一成不變的,所以我編寫了程式碼來智能地計算所需的任何連接。例如,如果他們在頂層組中添加兩個間接相關的表,那麼當它生成 SQL 時,它將添加任何所需的連接來關聯這些表。如果數據庫佈局確實發生了變化,我可以很容易地在查詢編輯器的程式碼中更改 FK 引用。

對於條件組,值控制項(該組中的第 4 個控制項)根據欄位類型(文本框、數字上/下控制項、日期選擇器、複選框)而變化。

當他們點擊“執行查詢”時,他們會得到另一個帶有顯示結果的網格視圖的表單。在該結果表單中,它們可以導出到製表符分隔的文件。

我已經給了他們第一個版本,到目前為止,他們似乎對此非常滿意。

我不想走 Access 路線,因為這個新版本的軟體的重點是將它們從 Access 中移開(嗯,不是重點,因為那裡也有更多的功能)。保持對 Access 的依賴似乎是一個巨大的退步。這也意味著如果他們在 Access 中保存大量自定義查詢,並且我曾經更改數據庫架構,我很可能會破壞他們的查詢。我不希望他們像那樣訪問數據庫。在我看來,這是自找麻煩。唯一應該觸及數據庫的是新軟體,以及我們所做的任何自動數據庫備份——沒有別的,尤其是使用者!

在軟體中執行此操作的另一個優點是我可以對查詢結果進行後處理。例如,有相當多的數據分析算法在軟體中執行,這些算法是用 .NET 程式碼編寫的。所以我可以向這個界面添加欄位,允許他們選擇這些算法的結果。

您可能會發現Visual SQL 查詢設計器很有幫助。它將讓您了解如何實現此功能。

此工具可用於設計 SQL 查詢。與 SQL Server Management Studio 相比,它的 UI 非常基本。它的限制是它使用OLEDB連接字元串。您可以從這裡下載原始碼。

編輯:

EasyQuery.NET WinForms可以是一個選項,但它不是免費的。

這篇文章也可能對你有所幫助。

對此,一個傳統的“微軟”回答是讓他們繼續使用 Access……只將它指向 SQL 伺服器,然後讓他們在那裡建構他們的自定義查詢。

如果你想變得花哨,你可以建構一個查詢使用者角色和帳戶,只授予對它的讀取訪問權限,甚至在必要時使用資源調控器將內置角色使用者帳戶限制為總系統負載的某個百分比.

在將 Access 中的新東西捲入實際程式碼之前,對它進行原型設計並不可恥。

引用自:https://stackoverflow.com/questions/14546544