0

管理者が選択した 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 ''.
4

1 に答える 1

1

以下のようになるはずです

  sql = "Update PoliceAccount Set handle ='" + assign + "' where policeid ='" + ddlpid1.SelectedValue + "' OR  policeid = '" + ddlpid2.SelectedValue + "'";

構文は

UPDATE tblName Set col1 ='value'
WHERE col2 ='value2' 
        OR col2 ='value3'
于 2013-08-02T09:10:41.907 に答える