2014-02-09 59 views
2

我想用C#和MS Access 2013 我看各地的网络,但到目前为止,在这里我能做些什么来填充组合框填充组合框从访问

1 - 我创建了一个功能与如下面填写组合框:

public static void FillDropDownList(string Query, System.Windows.Forms.ComboBox DropDownName) 
{ 
    using (var CONN = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\Vendors.accdb;")) 
    { 
     CONN.Open(); 
     DataTable dt = new DataTable(); 
     try 
     { 
      OleDbCommand cmd = new OleDbCommand(Query, CONN); 
      OleDbDataReader myReader = cmd.ExecuteReader(); 
      dt.Load(myReader); 
     } 
     catch (OleDbException e) 
     { 
      Console.WriteLine(e.ToString()); 
      Console.ReadLine(); 

      return; 
     } 
     DropDownName.DataSource = dt; 
     DropDownName.ValueMember = "BRANCH_CODE"; 
     DropDownName.DisplayMember = "BRNCH_NAME"; 
    } 
} 

后2 - 我把它称为在窗体的Load事件就像这样:

private void VendorMain_Load(object sender, EventArgs e) 
{ 
    FillDropDownList("select BRANCH_CODE,BRNCH_NAME from BRANCHES", BranchCB); 
} 

但初始化程序的组合框是后仍然是空的,没有填充

所以我该怎么做?

+0

首先要检查查询是否有效返回某些数据。在dt.Load调用后添加Console.WriteLine(dt.Rows.Count.ToString()) – Steve

+0

@Steve OLedb异常被抛出 >没有给出一个或多个必需参数的值。 –

+0

OleDb(MS-Access)无法识别某个列名(或表名)并认为它是该查询的参数时发生这种情况。你拼错了名字吗? BRNCH_NAME?缺少A? – Steve

回答

0

@Steve

你在哪里正确在Ms Access数据库中有一个错误的问题,并且在BRNACH_CODE和它之间有一个空格是[BRANCH CODE]

谢谢

0

我无法重新创建您的问题。在一个名为表中的测试数据[分支机构]

BRANCH_CODE BRNCH_NAME 
----------- ----------- 
      1 Main Street 
      2 at the mall 

我复制并粘贴您的代码到我的C#项目和组合框是正确填充:

ComboBox.png