我来自VB.net,我正在尝试学习C#,所以我现在用C#而不是Vb.net编写我的应用程序。
我试图用访问表中的一些数据填充一个组合框,但是我在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
{
}
我得到的错误是:
System.Data.DataTableCollection类型没有定义构造函数
我在vb.net语法中使用的几乎相同,并且它可以完美地运行
答案 0 :(得分:1)
如果有人使用@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);
}
答案 1 :(得分:0)
DataTableCollection
没有公共构造函数,因此您无法实例化它。在您的情况下,您不需要它,将代码更改为:
//...
//remove DataTableCollection tables = new DataTableCollection();
OleDbDataAdapter da = new OleDbDataAdapter();
DataTableCollection tables = ds.Tables;
//...