1

*如何比较 UnitsInStock 的数量与用户想要购买的数量?*

在这里,我对我的 SQL 数据库进行了查询,以获取放入 DataSet 的列列表。“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,数量。

根据用户打开的项目,每个项目的库存会有所不同。所以我打开的项目,我想知道如何将用户决定的可变数量与我从数据集中提取的数量进行比较。

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

我想您想过滤用户给出的数量的行。以下代码仅选择那些包含 UnitsInStock 等于用户给出的数量的行。

我假设用户给出的数量存储在 txtQuantityGivenByUser 文本框中。

var selectedRows = ds.Tables[0].Select("UnitsInStock = " + txtQuantityGivenByUser.Text);
于 2012-10-25T07:36:44.033 回答
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 回答