2015-08-04 3 views
0

У меня есть этот код, и он отлично работает, когда я ищу что-то конкретное. Как я могу изменить его, чтобы он работал, даже если я знаю только часть Order_ID, например. Я пробовал все, и я думаю, что я просто не делаю это правильно.Найти все поля, которые могут содержать часть найденных

SqlConnection con = new SqlConnection(@"Data Source=ANNA\MSSQLSERVER2012;Initial Catalog=Wine house;Integrated Security=True;"); 
con.Open(); 

string strSQL1 = ""; 
if (textBox1.Text.Length > 0) 
{ 
    if (strSQL1.Length > 0) 
    { 
     strSQL1 = strSQL1 + " AND "; 
    } 
    strSQL1 = strSQL1 + "Order_ID=" + textBox1.Text; 

} 

if (textBox2.Text.Length > 0) 
{ 
    if (strSQL1.Length > 0) 
    { 
     strSQL1 = strSQL1 + " AND "; 
    } 
    strSQL1 = strSQL1 + "Client_ID=" + textBox2.Text; 
} 

if (textBox3.Text.Length > 0) 
{ 
    if (strSQL1.Length > 0) 
    { 
     strSQL1 = strSQL1 + " AND "; 
    } 
    strSQL1 = strSQL1 + "Amount_due=" + textBox3.Text; 
} 

if (textBox4.Text.Length > 0) 
{ 
    if (strSQL1.Length > 0) 
    { 
     strSQL1 = strSQL1 + " AND "; 
    } 
    strSQL1 = strSQL1 + "Employee_ID=" + textBox4.Text; 
} 

if (textBox5.Text.Length > 0) 
{ 
    if (strSQL1.Length > 0) 
    { 
     strSQL1 = strSQL1 + " AND "; 
    } 
    strSQL1 = strSQL1 + "DeliveryDate='" + textBox5.Text; 
} 

if (textBox6.Text.Length > 0) 
{ 
    if (strSQL1.Length > 0) 
    { 
     strSQL1 = strSQL1 + " AND "; 
    } 
    strSQL1 = strSQL1 + "Delivered='" + textBox6.Text + "'"; 
} 

if (strSQL1.Length > 0) 
{ 
    strSQL1 = @"SELECT Order_ID, Client_ID, Amount_due, Employee_ID, CONVERT(nvarchar, DeliveryDate, 104) AS DeliveryDate, Delivered FROM Orders WHERE" + strSQL1; 
} 
else 
{ 
    strSQL1 = @"SELECT Order_ID, Client_ID, Amount_due, Employee_ID, CONVERT(nvarchar, DeliveryDate, 104) AS DeliveryDate, Delivered FROM Orders"; 
} 

SqlCommand cmd = new SqlCommand(strSQL1, con); 
SqlDataAdapter da = new SqlDataAdapter(cmd); 
DataTable table = new DataTable(); 
da.Fill(table); 
dataGridView1.DataSource = new BindingSource(table, null); 
con.Close(); 

ответ

0

Вы можете использовать оператор в как см:

http://www.w3schools.com/sql/sql_like.asp

Что-то вроде:

WHERE Order_ID LIKE '%THE_ID_FRACTION_YOU_HAVE%' 

THe "%" является подстановочные, что позволяет найти даже если часть, которую вы знаете, не является началом или концом идентификатора.

0

Используя ваш пример, вы могли бы сделать что-то вроде этого:

strSQL1 = strSQL1 + "Order_ID LIKE '%" + textBox1.Text + "%'"; 
Смежные вопросы