【发布时间】:2020-06-03 21:57:14
【问题描述】:
我正在尝试创建用户报告生成器功能。
我有一个CheckBoxes 列表,当IsChecked 将显示来自数据库中表的SQL Server 列名。然后我尝试在我的SQL Statement 中使用这些名称来生成查询结果。
我面临的问题是他用户无法选择各种列名,因为 SQL 语句中需要 , 来分隔列名。如果未选中 CheckBox,我不希望显示该列。
这是我的代码,它将执行查询结果并填充DataGrid,如果textboxes 都填充了文本,我将在其中收到异常错误。如果只有一个被填满,它就可以工作。
private void butn_ExecuteQuery_Click(object sender, RoutedEventArgs e)
{
try
{
string connectionString = ("Data Source=WINDOWS-B1AT5HC\\SQLEXPRESS;Initial Catalog=CustomerRelations;Integrated Security=True;");
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("SELECT " + txtAccount.Text + txtAssignedTo.Text + " FROM [hb_Disputes] CROSS JOIN hb_FinAdj INNER JOIN Users ON hb_Disputes.ASSGNTO = Users.KY_USER_ID WHERE (hb_Disputes.OPENED >=@OPENED AND hb_Disputes.OPENED < @CLOSED) AND (Users.TX_EMPLOYEE =@query)", connection);
//EMP Name
cmd.Parameters.AddWithValue("@query", txt_Query.Text);
cmd.Parameters.Add("@OPENED", SqlDbType.DateTime).Value = dtepicker_Open.Text;
cmd.Parameters.Add("@CLOSED", SqlDbType.DateTime).Value = dtepicker_DateResolved.Text;
connection.Open();
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
connection.Close();
dt_ReportList.DataContext = dt;
dt_ReportList.SelectedIndex = 0;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
这是CheckBoxes 为checked 和unchecked 时要处理的代码
private void chckAccount_Checked(object sender, RoutedEventArgs e)
{
txtAccount.Text = "[hb_Disputes].[ACCOUNT]";
}
private void chckAccount_Unchecked(object sender, RoutedEventArgs e)
{
txtAccount.Text = " ";
}
private void chckAssignedTo_Checked(object sender, RoutedEventArgs e)
{
txtAssignedTo.Text = "[hb_Disputes].[ASSGNTO]";
}
private void chckAssignedTo_Unchecked(object sender, RoutedEventArgs e)
{
txtAssignedTo.Text = " ";
}
【问题讨论】:
-
你是在问我们如何用逗号做字符串连接逻辑?
标签: sql-server wpf select checkbox