1

* UnitsInStock の数量とユーザーが購入したい数量を比較するにはどうすればよいですか? *

ここでは、DataSet に入れられた列のリストについて、SQL データベースにクエリを実行しています。「where」句は、私が現在ブラウズしているアイテムであり、この製品に関する現在のすべての情報を抽出しています。

データをデータ列に取得しようとしましたが、それを int の数量と比較する必要があります。

        string selectionString =
        "SELECT Products.ProductID, " +
            "Products.ProductName, Categories.CategoryName, " +
            "Suppliers.CompanyName, Products.QuantityPerUnit," +
            "Products.UnitPrice, Products.UnitsInStock " +    
            "FROM Suppliers INNER JOIN (Categories  " +
            "INNER JOIN Products ON  " +
            "Categories.CategoryID = Products.CategoryID)  " +
            "ON Suppliers.SupplierID = Products.SupplierID " +
            "WHERE Products.ProductID = " +
            int.Parse(Session["Current Item"].ToString());

DataSet ds = new DataSet();//this is the dataset that keeps my columns and rows.

次に、最後の UnitsInStock 以外のすべての列をテキスト ボックスに割り当てるループがあります。私が扱う必要がある値は int の数量です。

ユーザーが開いたアイテムに応じて、各アイテムの在庫は異なります。そこで、開いた項目について、ユーザーが決定した変数の数量と、DataSet から抽出した数量を比較する方法を知りたいと思います。

UnitsInStock 列のインデックスは6です。QuantityPerUnit について心配する必要はありません。

ProductName、CatergoryName、CompanyName、QuantityPerUnit、UnitPrice、およびUnitsInStockを受け取るコードを次に示します。データセットがどのように使用されているかがわかります。

 if (ds.Tables[0].Columns.Count != 0 &&
        ds.Tables[0].Rows.Count != 0)
    {

        for (int index = 0; index < ds.Tables[0].Columns.Count - 1; index++)/// count -1, explain
        {
            labelArray[index].Text = ds.Tables[0].Columns[index].ColumnName;//named constant
            if (index == 5) // The price field
            {

                textBoxArray[index].Text = ((Decimal)ds.Tables[0].Rows[0][index]).ToString("F");
            }
            else
                textBoxArray[index].Text = ds.Tables[0].Rows[0][index].ToString();

では、データベースによって取得された数量と、テキスト ボックスから収集された、ユーザーが購入したい数量を比較するにはどうすればよいでしょうか。

4

2 に答える 2

0

既存のコードでそれらを比較する最も簡単な方法は、ループ内の別のif (index ==ステートメントです。for

if (index == 6)
{
    int qtyUserWants = int.Parse(qtyUserWantsTextbox.Text);
    int qtyInStock = (int)ds.Tables[0].Rows[0][index];

    if (qtyUserWants >  qtyInStock)
    {
        // do something
    }
于 2012-10-26T01:04:03.890 に答える
0

ユーザーが指定した数量の行をフィルタリングしたいと思います。次のコードは、ユーザーが指定した Quantity に等しい UnitsInStock を含む行のみを選択します。

ユーザーが指定した数量がtxtQuantityGivenByUser Textboxに保存されていると想定しています。

var selectedRows = ds.Tables[0].Select("UnitsInStock = " + txtQuantityGivenByUser.Text);
于 2012-10-25T07:36:44.033 に答える