1

みんなに2つの質問。

1)年を値で並べ替えるにはどうすればよいですか?DESCを使用するとクラッシュしますか?

2)次のようにリストに入力した場合:

 string strConn = ConfigurationManager.ConnectionStrings["rde_410978ConnectionString"].ToString();
    SqlConnection con = new SqlConnection(strConn);
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "Select Distinct Year from MonthlySales DESC"; //DESC DOESNT WORK?

    DataSet objDs = new DataSet();
    SqlDataAdapter dAdapter = new SqlDataAdapter();
    dAdapter.SelectCommand = cmd;
    con.Open();
    dAdapter.Fill(objDs);
    con.Close();

    if (objDs.Tables[0].Rows.Count > 0)
    {
        ddItems.DataSource = objDs.Tables[0];
        ddItems.DataTextField = "Year";
        ddItems.DataValueField = "Year";
        ddItems.DataBind();
        ddItems.Items.Insert(0, "Select");
    }

選択した年をddItems.SelectedItemの下に表示するにはどうすればよいですか?

WHERE Year = " + ddItems.SelectedItem + "GROUP BY Name ";

リストに動的にデータを入力すると、別のクエリのその部分が機能しません。理由や修正方法を教えてください。

よろしく。

編集:私の2番目の質問をより明確にするために、デバッグした後、実際に選択されたアイテムではなく、ドロップダウンリストの一番上のアイテムを常に選択しますか?

4

4 に答える 4

1

答え 1)

cmd.CommandText = "Select Distinct Year from MonthlySales ORDER BY 1 DESC"
于 2012-05-08T19:39:12.223 に答える
1

まず、あなたのSQLでは「order by」がありません...これを使用してください

"Select Distinct Year from MonthlySales order by Year DESC"

次に、SelectedValue プロパティを使用して、ドロップダウンの選択された値を取得する必要があります...以下のように...

WHERE Year = " + ddItems.SelectedValue + " GROUP BY Name";

そうは言っても、使用することを強くお勧めします...「パラメーター化された」SQL...パラメーター化されたSQLクエリを有効にする方法の例を次に示します... パラメーター化されたSQLをください、さもなければ死を与えてください

アップデート:

すべてのポストバックでドロップダウンをバインドしているように見えます...これを試すことができます...

if (!Page.IsPostBack && objDs.Tables[0].Rows.Count > 0)
    {
        ddItems.DataSource = objDs.Tables[0];
        ddItems.DataTextField = "Year";
        ddItems.DataValueField = "Year";
        ddItems.DataBind();
        ddItems.Items.Insert(0, "Select");
    }
于 2012-05-08T19:39:55.283 に答える
1

あなたが行方不明order byです。ここにあります。

"Select Distinct Year from MonthlySales order by Year DESC";

2番目の部分では、これを行うことができます。スペースにご注意ください" GROUP BY Name"

WHERE Year = " + ddItems.SelectedItem.Text + " GROUP BY Name ";
于 2012-05-08T19:40:10.120 に答える
1
using (SqlConnection con = new SqlConnection(strConn))
{
    using (SqlCommand cmd = new SqlCommand())
    {
        cmd.Connection = con;
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "Select Distinct Year from MonthlySales Order By DESC";

        using (DataSet objDs = new DataSet())
        {
            using (SqlDataAdapter dAdapter = new SqlDataAdapter())
            {
                dAdapter.SelectCommand = cmd;
                con.Open();
                dAdapter.Fill(objDs);
                con.Close();

                if (objDs.Tables[0].Rows.Count > 0)
                {
                    ddItems.DataSource = objDs.Tables[0];
                    ddItems.DataTextField = "Year";
                    ddItems.DataValueField = "Year";
                    ddItems.DataBind();
                    ddItems.Items.Insert(0, "Select");
                }
            }
        }
    }
}
于 2012-05-08T19:56:18.290 に答える