古いMS Accessベースのソリューションを置き換えるクライアント用のWinforms C#アプリケーションに取り組んでいます。これは完全に書き直され、SQL Server をデータベースとして使用するようになりました。このソフトウェアは現在、開発の最終段階にあります。
彼らがちょうど要求したことの 1 つは、ソフトウェアの UI では現在必要なときに実行できないカスタム クエリを実行できるようにすることです。
以前の Access ソリューションでは、クエリ デザイナーを使用して独自のカスタム クエリを作成できました。winforms/Sql Server ソリューションでは、これを行うことはできません。また、SQL を自分で作成する必要もありません。
誰でもこの問題の良い解決策を思いつくことができますか? おそらく、ユーザーがビジネス オブジェクトと "and|or" ロジックのグラフを作成できるようにする Winforms ライブラリです。または、Access でできるように、クエリをカスタマイズできる他の種類の UI (ただし、よりドメイン固有の可能性があります)。
アップデート
これは私が当時探していたものに最も近いため、Yaqubの回答に回答としてフラグを立てました。最終的に、クエリを生成するためのカスタム フォームを作成しました。
2 番目のグループの「Select table ...」コンボボックスには、一番上のリストボックスに追加されたテーブルのみが表示されます。
データベースのレイアウトはほぼ確定したので、必要な結合をインテリジェントに計算するコードを書きました。たとえば、間接的に関連する 2 つのテーブルを最上位グループに追加すると、SQL が生成されるときに、それらを関連付けるために必要な結合が追加されます。データベースのレイアウトが変更された場合、クエリ エディターのコードで FK 参照を簡単に変更できるようにしました。
条件グループの場合、値コントロール (そのグループで 4 番目のコントロールの下) は、フィールドの種類 (テキスト ボックス、数値アップ/ダウン コントロール、日付ピッカー、チェックボックス) に応じて変化します。
「クエリの実行」をクリックすると、結果を表示するグリッドビューを含む別のフォームが表示されます。その結果フォームでは、タブ区切りファイルにエクスポートできます。
私は彼らにこれの最初のバージョンを渡しましたが、彼らは今のところ非常に満足しているようです.
私は Access ルートに行きたくありませんでした。なぜなら、この新しいバージョンのソフトウェアの全体的なポイントは、それらを Access から遠ざけることにあるからです (まあ、すべてのポイントではありません。そこにはさらに多くの機能があるからです)。そこに Access との依存関係を維持することは、大きな後退のように思えました。また、Access に大量のカスタム クエリを保存していて、データベース スキーマを変更すると、クエリが壊れる可能性が高いことも意味します。そのようなデータベースへのアクセスを望んでいません。私の考えでは、それはトラブルを求めています。データベースに触れる必要があるのは、新しいソフトウェアと、私たちが行う自動化されたデータベースのバックアップだけです。他には何もありません。特にユーザーはそうです。
ソフトウェア内で実行するもう 1 つの利点は、クエリ結果に対して後処理を実行できることです。たとえば、.NET コードで記述されたソフトウェアで実行されるかなりの数のデータ分析アルゴリズムがあります。そのため、このインターフェースにフィールドを追加して、これらのアルゴリズムの結果を選択できるようにします。