管理者が選択した memberreportID に警察 ID を割り当てることができるこの割り当て機能があります。まず、管理者はケースを選択し、場所を選択して、このケースに必要な役員の数を選択します。たとえば、管理者が 2 人の警官を選択した場合、2 つのドロップダウン リストがすべて表示され、利用可能な policeID のリストにバインドされます。
protected void ddllocation_SelectedIndexChanged(object sender, EventArgs e)
{
using (var connAdd = new SqlConnection("Data Source = localhost; Initial Catalog = MajorProject; Integrated Security= SSPI"))
{
connAdd.Open();
var sql = "Select policeid from PoliceAccount where status ='available' and handle ='offcase' and postedto='" + ddllocation.SelectedValue + "'";
using (var cmdAdd = new SqlDataAdapter(sql, connAdd))
{
DataSet ds2 = new DataSet();
cmdAdd.Fill(ds2);
ddlpid1.Items.Clear();
ddlpid1.DataSource = ds2;
ddlpid1.DataTextField = "policeid";
ddlpid1.DataValueField = "policeid";
ddlpid1.DataBind();
ddlpid1.Items.Insert(0, new ListItem("Police ID", ""));
ddlpid1.SelectedIndex = 0;
ddlpid2.Items.Clear();
ddlpid2.DataSource = ds2;
ddlpid2.DataTextField = "policeid";
ddlpid2.DataValueField = "policeid";
ddlpid2.DataBind();
ddlpid2.Items.Insert(0, new ListItem("Police ID", ""));
ddlpid2.SelectedIndex = 0;
}
}
最初の SQL コマンドは、データベースで選択した memberreportID の assignto 列にそれらを挿入する方法です。割り当てた両方の policeID を同じ列、assignto に挿入しています。
protected void btnAssign_Click1(object sender, EventArgs e)
{
using (var connAdd = new SqlConnection("Data Source = localhost; Initial Catalog = MajorProject; Integrated Security= SSPI"))
{
String assign = ddlpid1.SelectedValue + ", " + ddlpid2.SelectedValue + ";
connAdd.Open();
var sql = "Update MemberReport Set assignto ='" + assign + "' where memberreportID='" + lbmemberreportid.Text + "'";
using (var cmdAdd = new SqlCommand(sql, connAdd))
{
cmdAdd.ExecuteNonQuery();
}
sql = "Update PoliceAccount Set handle ='" + assign + "' where policeid ='" + ddlpid1.SelectedValue + "' OR '" + ddlpid2.SelectedValue + "'";
using (var cmdAdd = new SqlCommand(sql, connAdd))
{
cmdAdd.ExecuteNonQuery();
}
connAdd.Close();
}
}
ただし、2番目のsqlコマンドを含めることで、このpoliceIDをpoliceaccountというテーブルに入力しようとしています。この policeaccounthandle
には、現在処理している memberreportID を示すと思われる列があります。OR 関数を使用して、各 policeID のアカウントが選択した memberreportID をハンドル列に受け取るようにしようとしています。SQL構文にはOR関数があると確信しています。しかし、挿入しようとすると、代わりにこのエラーが発生しました
An expression of non-boolean type specified in a context where a condition is expected, near ''.