1

MS Access テーブルの C# アプリケーション内でクエリを作成する必要があります。ただし、このクエリでは関数を呼び出す必要があります ([Employees] 数値フィールドを [Employee Band] というテキスト フィールドに変換する - 1 から 5、5 から 10 など)。もともと、Access 内で (関数を配置して) クエリを作成しましたが、アプリに追加のアドインを追加しないと C# からクエリを呼び出すことができませんでした (これは本当にやりたくないことです)。

これを行う方法がわかりません(ac#関数で変換を行う)ので、どんな助けでも大歓迎です。

大まかなコードをいくつか追加しました (正しくないことはわかっていますが) が、私が何をしようとしているのかについてのアイデアが得られるはずです。

private void EmployeeTest()
{
    using (var con = new OleDbConnection())
    {
        //Removing any existing data
        con.ConnectionString = DBConnections.ConnStringCO;
        con.Open();
        using (var cmd = new OleDbCommand())
        {
            cmd.Connection = con;
            cmd.CommandType = System.Data.CommandType.Text;
            cmd.CommandText = @"INSERT INTO [Report data] ( [Employee band] ) IN 'C:\\Users\\Dev\\Reporting-System.mdb' SELECT repEmployeeBand([Employees]) AS ExprExmployeeBanding FROM [tblSource Dat];";
            cmd.ExecuteNonQuery();
        }
        con.Close();
    }

}
private string ExprExmployeeBanding(Variables varEmployees) as long
{
     //Do converstion
}
4

1 に答える 1

1

C# でわざわざ変換する必要はないと思います。変換を行う保存済みクエリを Access で作成できるはずです。[Companies] という名前のテーブルの場合:

ID  CompanyName  Employees
--  -----------  ---------
 1  GordCo               3
 2  SampleCo             7
 3  BigCo            10000

[qryCompanyInfo] と​​いう名前の保存済みクエリ

SELECT 
    Companies.*, 
    Switch([Employees] Between 1 And 4, "1-4", [Employees] Between 5 And 9, "5-9", True, "10 or more") AS EmployeeBand
FROM Companies;

戻ります

ID  CompanyName  Employees  EmployeeBand
--  -----------  ---------  ------------
 1  GordCo               3  1-4         
 2  SampleCo             7  5-9         
 3  BigCo            10000  10 or more  

確認したところ、そのクエリは、を使用して C# アプリケーションから直接呼び出された場合に正常に動作しますMicrosoft.ACE.OLEDB.12.0

Switch()この機能に関する追加情報は、ここにあります。

于 2013-11-04T11:37:57.580 に答える