У меня есть кое-что, что я хочу знать, я надеюсь, что каждый может мне помочь. Итак, вот мой вопрос, как я могу сократить этот код. :)Сократите мое заявление ElseIf. Как?
If MetroTextBox1.Text = "" Then
If MetroCheckBox1.Checked = True And MetroCheckBox2.Checked = False Then
query = "select id, fname, mname, lname, dept, salary, ' ' as lengthservice from tbl_Employee where dresigned is null and " +
" (id like '%" & MetroTextBox1.Text & "%' or fname like '%" & MetroTextBox1.Text & "%' or mname like '%" & MetroTextBox1.Text & "%' or lname like '%" & MetroTextBox1.Text & "%' or dept like '%" & MetroTextBox1.Text & "%') "
dt = c.GetDataTable(query)
ElseIf MetroCheckBox2.Checked = True And MetroCheckBox1.Checked = False Then
query = "select id, fname, mname, lname, dept, salary, ' ' as lengthservice from tbl_Employee where dresigned is not null and " +
" (id like '%" & MetroTextBox1.Text & "%' or fname like '%" & MetroTextBox1.Text & "%' or mname like '%" & MetroTextBox1.Text & "%' or lname like '%" & MetroTextBox1.Text & "%' or dept like '%" & MetroTextBox1.Text & "%') "
dt = c.GetDataTable(query)
ElseIf MetroCheckBox1.Checked = True And MetroCheckBox2.Checked = True Then
query = "select id, fname, mname, lname, dept, salary from tbl_Employee" +
" where id like '%" & MetroTextBox1.Text & "%' or fname like '%" & MetroTextBox1.Text & "%' or mname like '%" & MetroTextBox1.Text & "%' or lname like '%" & MetroTextBox1.Text & "%' or dept like '%" & MetroTextBox1.Text & "%' "
dt = c.GetDataTable(query)
End If
ElseIf MetroTextBox1.Text <> "" Then
If MetroCheckBox1.Checked = True And MetroCheckBox2.Checked = False Then
query = "select id, fname, mname, lname, dept, salary, ' ' as lengthservice from tbl_Employee where dresigned is null and " +
" (id like '%" & MetroTextBox1.Text & "%' or fname like '%" & MetroTextBox1.Text & "%' or mname like '%" & MetroTextBox1.Text & "%' or lname like '%" & MetroTextBox1.Text & "%' or dept like '%" & MetroTextBox1.Text & "%') "
dt = c.GetDataTable(query)
ElseIf MetroCheckBox2.Checked = True And MetroCheckBox1.Checked = False Then
query = "select id, fname, mname, lname, dept, salary, ' ' as lengthservice from tbl_Employee where dresigned is not null and " +
" (id like '%" & MetroTextBox1.Text & "%' or fname like '%" & MetroTextBox1.Text & "%' or mname like '%" & MetroTextBox1.Text & "%' or lname like '%" & MetroTextBox1.Text & "%' or dept like '%" & MetroTextBox1.Text & "%') "
dt = c.GetDataTable(query)
ElseIf MetroCheckBox1.Checked = True And MetroCheckBox2.Checked = True Then
query = "select id, fname, mname, lname, dept, salary from tbl_Employee" +
" where id like '%" & MetroTextBox1.Text & "%' or fname like '%" & MetroTextBox1.Text & "%' or mname like '%" & MetroTextBox1.Text & "%' or lname like '%" & MetroTextBox1.Text & "%' or dept like '%" & MetroTextBox1.Text & "%' "
dt = c.GetDataTable(query)
End If
Else
query = "select id, fname, mname, lname, dept, salary, ' ' as lengthservice from tbl_Employee where id = ''"
dt = c.GetDataTable(query)
End If
ваш код кажется грязным! я видел в первом 'if', у вас есть:« Если MetroTextBox1.Text = »« Then », но позже в соответствующем блоке кода вы используете его значение:« Если MetroCheckBox1.Checked = True и MetroCheckBox2.Checked = False Then query = "выберите идентификатор, имя_файла, ..." + \t \t \t \t \t \t "(идентификатор, как«%" & ** MetroTextBox1.Text ** & ...', которые не доза кажется правильным! –
Что такое ' c' в вашем коде выше? Я пытался написать параметризованную версию, чтобы избежать уязвимости для SQL-инъекции, вызванной передачей «MetroTextBox1.Text» без какой-либо проверки – LogicalFlaps
Вы должны использовать 'AndAlso' /' OrElse' вместо 'And '/' Or'. [Почему?] (Http://stackoverflow.com/q/302047/4934172). –