从excel列接收数据并在组合框中的值发生变化时在文本框中显示

问题描述:

enter image description hereenter image description hereenter image description hereenter image description here从excel列接收数据并在组合框中的值发生更改时更改它们。从excel列接收数据并在组合框中的值发生变化时在文本框中显示

下面是代码:

private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e) 
{ 
    con.Open();   
    str = "select * from [Sac Haddehanesi Kalite Kontrol] where [Bobin ID]='" + comboBox1.Text.Trim() + "'"; 
    com = new OleDbCommand(str, con); 
    OleDbDataReader reader = com.ExecuteReader(); 
    if (reader.Read()) 
    { 
     comboBox1.Text = reader["Bobin ID"].ToString(); 
     textBox1.Text = reader["Slab ID"].ToString(); 
     textBox2.Text = reader["Döküm Kalitesi"].ToString(); 
     textBox3.Text = reader["Sipariş Çelik Kalitesi"].ToString(); 
     textBox4.Text = reader["Standart Kalite Adı"].ToString(); 
     textBox5.Text = reader["Bobin Planlanan Kalınlık (mm)"].ToString(); 
    } 
    con.Close(); 
    reader.Close(); 
} 

任何帮助,将不胜感激......

感谢ü

+0

你调试过代码是否在内部移动if语句吗? –

+0

什么是您的_Bobin ID_的数据类型? –

+0

看来是约会。但是,这不是约会。它包括数字和字母。它是由另一个人发送的。所以,我不能改变Excel的数据类型。 – Serkan

Excel工作表的名称以$结束,当工作表名称里面有空格,你必须用单引号括起来。因此,你的SQL应该读...

Select * From ['Sac Haddehanesi Kalite Kontrol$'] 

你应该这样不好就会被参数化查询......

Select * From ['Sac Haddehanesi Kalite Kontrol$'] Where [Bobin ID] = ? 

OLEDB参数的位置,而不是命名(如SQL /服务器)。即按照它们在查询中出现的顺序指定它们。

因此你的代码变得...

OleDbCommand com = new OleDbCommand("Select * From ['Sac Haddehanesi Kalite Kontrol$'] Where [Bobin ID] = ?", conn); 
com.Parameters.Add("?", OleDbType.VarChar).Value = "abc"; 
OleDbDataReader reader = com.ExecuteReader(); 

你可以通过在工作簿中的表按...

DataTable TablesList = conn.GetSchema("Tables"); 

foreach (DataRow TableRow in TablesList.Rows) 
{ 
    if (TableRow["TABLE_NAME"].ToString().EndsWith("$") | TableRow["TABLE_NAME"].ToString().EndsWith("$'")) 
    { 
     // Handle the Excel Sheet 
    } 
} 

顺便说一句,你不告诉我们在你的连接字符串您码。这里是我用于上面的那个...

conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Test.xlsx;Extended properties='Excel 12.0;HDR=Yes;IMEX=1'"; 
+0

谢谢参数化查询,但它不”?将不起作用... – Serkan

+0

它完全适合我,所以我很害怕,如果你仍然有问题,然后还有别的事情上,你有没有在你的代码示例所示。也许你可以发布更多。 –