从访问 table c# 中填充组合框
Fill combo box from access table c#
我来自 VB.net,我正在尝试学习 C#,所以我现在使用 C# 而不是 Vb.net 来编写我的应用程序。
我正在尝试用访问 table 中的一些数据填充组合框,但我在 vb.net 中运行的代码在 C# 中的行为似乎不同.谁能帮我找出为什么这不起作用?
try
{
//string turno = "1";
//fillnames(turno);
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider= Microsoft.ACE.OLEDB.12.0; Data Source=path.accdb;";
DataSet ds = new DataSet();
DataTableCollection tables = new DataTableCollection();
OleDbDataAdapter da = new OleDbDataAdapter();
tables = ds.Tables;
da = new OleDbDataAdapter("SELECT [Materialista] FROM [OPS] WHERE [Turno] = '" + "1" + "'", conn);
da.Fill(ds, "Ops");
AutoCompleteStringCollection col = new AutoCompleteStringCollection();
for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
col.Add(ds.Tables[0].Rows[i]["Dnum"].ToString());
}
cmb_operador.AutoCompleteSource = AutoCompleteSource.CustomSource;
cmb_operador.AutoCompleteCustomSource = col;
cmb_operador.AutoCompleteMode = AutoCompleteMode.Suggest;
}
catch
{
}
我得到的错误是:
The type System.Data.DataTableCollection has no constructors defined
我在 vb.net 语法中使用了几乎相同的东西,而且它完美无缺
DataTableCollection
没有 public 构造函数,所以你不能实例化它。在你的情况下,你不需要它,将你的代码更改为:
//...
//remove DataTableCollection tables = new DataTableCollection();
OleDbDataAdapter da = new OleDbDataAdapter();
DataTableCollection tables = ds.Tables;
//...
我将根据@Gusman 的建议使用此答案附上我想做的更正代码,以防有人需要它。
try
{
//string turno = "1";
//fillnames(turno);
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider= Microsoft.ACE.OLEDB.12.0; Data Source=path.accdb;";
DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter();
DataTableCollection tables = ds.Tables;
da = new OleDbDataAdapter("SELECT [Materialista] FROM [OPS] WHERE [Turno] = '" + "1" + "'", conn);
da.Fill(ds, "Ops");
AutoCompleteStringCollection col = new AutoCompleteStringCollection();
for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
col.Add(ds.Tables[0].Rows[i]["Materialista"].ToString());
}
cmb_operador.DataSource = col;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
我来自 VB.net,我正在尝试学习 C#,所以我现在使用 C# 而不是 Vb.net 来编写我的应用程序。
我正在尝试用访问 table 中的一些数据填充组合框,但我在 vb.net 中运行的代码在 C# 中的行为似乎不同.谁能帮我找出为什么这不起作用?
try
{
//string turno = "1";
//fillnames(turno);
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider= Microsoft.ACE.OLEDB.12.0; Data Source=path.accdb;";
DataSet ds = new DataSet();
DataTableCollection tables = new DataTableCollection();
OleDbDataAdapter da = new OleDbDataAdapter();
tables = ds.Tables;
da = new OleDbDataAdapter("SELECT [Materialista] FROM [OPS] WHERE [Turno] = '" + "1" + "'", conn);
da.Fill(ds, "Ops");
AutoCompleteStringCollection col = new AutoCompleteStringCollection();
for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
col.Add(ds.Tables[0].Rows[i]["Dnum"].ToString());
}
cmb_operador.AutoCompleteSource = AutoCompleteSource.CustomSource;
cmb_operador.AutoCompleteCustomSource = col;
cmb_operador.AutoCompleteMode = AutoCompleteMode.Suggest;
}
catch
{
}
我得到的错误是:
The type System.Data.DataTableCollection has no constructors defined
我在 vb.net 语法中使用了几乎相同的东西,而且它完美无缺
DataTableCollection
没有 public 构造函数,所以你不能实例化它。在你的情况下,你不需要它,将你的代码更改为:
//...
//remove DataTableCollection tables = new DataTableCollection();
OleDbDataAdapter da = new OleDbDataAdapter();
DataTableCollection tables = ds.Tables;
//...
我将根据@Gusman 的建议使用此答案附上我想做的更正代码,以防有人需要它。
try
{
//string turno = "1";
//fillnames(turno);
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider= Microsoft.ACE.OLEDB.12.0; Data Source=path.accdb;";
DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter();
DataTableCollection tables = ds.Tables;
da = new OleDbDataAdapter("SELECT [Materialista] FROM [OPS] WHERE [Turno] = '" + "1" + "'", conn);
da.Fill(ds, "Ops");
AutoCompleteStringCollection col = new AutoCompleteStringCollection();
for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
col.Add(ds.Tables[0].Rows[i]["Materialista"].ToString());
}
cmb_operador.DataSource = col;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}