簡體   English   中英

在C#中為Access數據庫創建查詢(帶有函數)

[英]Creating a query (with function) in C# for an Access database

我需要在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
}

我認為您無需費心用C#進行轉換; 您應該能夠在Access中創建一個保存的查詢來進行轉換。 對於名為[公司]的表:

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  

我剛剛檢查了一下,當使用Microsoft.ACE.OLEDB.12.0從C#應用程序直接調用該查詢時,該查詢工作正常。

有關Switch()函數的更多信息,請參見此處

暫無
暫無

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

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