【问题标题】:How to retrieve certain data from Access Database and display them in a combobox如何从 Access 数据库中检索某些数据并将它们显示在组合框中
【发布时间】:2013-12-11 09:21:47
【问题描述】:

我曾尝试在 MSDN 论坛上发布此问题,但是没有成功。

我正在尝试为将管理其员工的企业制作 C# Windows 窗体应用程序。该应用程序使用 Access 2010 数据库。编辑员工页面是我遇到的问题。我希望员工能够从以下格式的组合框中选择:

名字姓氏,员工职位

数据库名称是 EmployeeInformation.accdb 我想从数据库中获得的字段是:

  • 名字
  • 姓氏
  • 员工职位

组合框的名称是 cboSelectEmp

我用来尝试获取此数据的当前代码是

 private void LoadDataToCbo()
    {
        string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=EmployeeInformation.accdb";
       // string query = @"SELECT FirstName from Employees";
        string query =
            @"SELECT EmpID, LastName + ', ' + FirstName + ' (' + EmployeePosition + ')' as Name FROM Employees";
        OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, connString);
        DataTable source = new DataTable();
        dAdapter.Fill(source);
        cboSelectEmp.DataSource = source;
        //cboSelectEmp.ValueMember = "FirstName";
        //cboSelectEmp.DisplayMember = "FirstName";

        cboSelectEmp.DisplayMember = "Name";
        cboSelectEmp.ValueMember = "EmpID";

    }

【问题讨论】:

    标签: c# sql visual-studio ms-access combobox


    【解决方案1】:

    您不能在组合框中显示多个列,但请尝试使用类似的查询

    select EmpID, LastName + ', ' + FirstName + ' (' + EMployeePosition + ')' as Name from Employees
    

    然后设置你的组合框

    cboSelectEmp.DataSource = dt; //dt is the datatable where the result of the query resides
    cboSelectEmp.DisplayMember = "Name";
    cboSelectEmp.ValueMember = "EmpID";
    

    【讨论】:

    • 此代码在 dAdapter.Fill(source) 上给出错误; System.Data.dll 中出现“System.Data.OleDb.OleDbException”类型的未处理异常附加信息:没有为一个或多个必需参数提供值。
    • 哦,对不起!我不再使用 Access db 了,我忘记了,请将 PLUS (+) 符号替换为 AMPERSAND (&) 作为这样的连接符 [select EmpID, LastName & ', ' & FirstName & ' (' & EMployeePosition & ' )' 作为员工姓名]
    【解决方案2】:

    试试这个

    private void LoadDataToCbo()
    {
            string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=EmployeeInformation.accdb";
           // string query = @"SELECT FirstName from Employees";
            string query =
                @"SELECT EmpID, LastName & ', ' + FirstName & ' (' & EmployeePosition & ')' as Name FROM Employees";
            OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, connString);
            DataTable source = new DataTable();
            dAdapter.Fill(source);
            cboSelectEmp.DataSource = source;
            //cboSelectEmp.ValueMember = "FirstName";
            //cboSelectEmp.DisplayMember = "FirstName";
    
            cboSelectEmp.DisplayMember = "Name";
            cboSelectEmp.ValueMember = "EmpID";
    
    }
    

    【讨论】:

      猜你喜欢
      • 2014-05-20
      • 2017-02-07
      • 1970-01-01
      • 1970-01-01
      • 2014-07-14
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多