繁体   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