怎么总和只选择物品价格

时间:2016-07-23 15:38:34

标签: asp.net sql-server-2008-r2

我有一个向客户展示销售结果的代码,最后我想要仅选择所选商品的价格并显示在“lblTotalCost”标签中。我的问题是:我怎么能只选择所选的商品价格而不是所有的价格?

  public partial class SingleSeatSaleResult : System.Web.UI.Page
{
string Fruit_price;
string Drink_price;
string Desert_price;
string MainFood_price;
string Salad_price;
string TableFlower_price;
string SaloonLighting_price;
string SaloonDesign_price;
string SaloonCrew_price;
string Pastry_price;
string GiftCard_price;
protected void Page_Load(object sender, EventArgs e)
{


    /////Fetching Reservation Date and Reservation Time
    using (SqlConnection connection3 = DBConnection.getConnection())
    {
        string strquery3 = "SELECT SaloonReservationDate,SaloonReservationTime  FROM SaloonGeneralReservation";
        connection3.Open();
        SqlCommand cmd3 = new SqlCommand();
        cmd3.Connection = connection3;
        cmd3.CommandText = strquery3;
        SqlDataReader reader3 = cmd3.ExecuteReader();
        if (reader3.Read())
        {
           lbl4_ResDate.Text = reader3[0].ToString();
           lbl6_ResTime.Text = reader3[1].ToString();

        }
    }


    /////Fetching Service Prices
    using (SqlConnection connection2 = DBConnection.getConnection())
    {
        //query for fetch service prices 
        string strquery2 = "SELECT Fruit_price,Drink_price,Desert_price,MainFood_price,Salad_price,TableFlower_price,SaloonLighting_price,SaloonDesign_price,SaloonCrew_price,Pastry_price,GiftCard_price  FROM GenReservationServicePrice";
        connection2.Open();
        SqlCommand cmd2 = new SqlCommand();
        cmd2.Connection = connection2;
        cmd2.CommandText = strquery2;
        SqlDataReader reader1 = cmd2.ExecuteReader();
        if (reader1.Read())
        {                               
            Fruit_price = reader1[0].ToString();
            Drink_price = reader1[1].ToString();
            Desert_price = reader1[2].ToString();
            MainFood_price = reader1[3].ToString();
            Salad_price = reader1[4].ToString();
            TableFlower_price = reader1[5].ToString();
            SaloonLighting_price = reader1[6].ToString();
            SaloonDesign_price = reader1[7].ToString();
            SaloonCrew_price = reader1[8].ToString();
            Pastry_price = reader1[9].ToString();
            GiftCard_price = reader1[10].ToString();

        }
    }

    ///converting service prices to Double for Calculating 
     double fruit_final_price = Convert.ToDouble(Fruit_price);
     double drink_final_price = Convert.ToDouble(Drink_price);
     double desert_final_price = Convert.ToDouble(Desert_price);
     double mainfood_final_price = Convert.ToDouble(MainFood_price);
     double salad_final_price = Convert.ToDouble(Salad_price);
     double tableflower_final_price = Convert.ToDouble(TableFlower_price);
     double saloonlighting_final_price = Convert.ToDouble(Desert_price);
     double saloondesign_final_price = Convert.ToDouble(SaloonDesign_price);
     double salooncrew_final_price = Convert.ToDouble(SaloonCrew_price);
     double pastry_final_price = Convert.ToDouble(Pastry_price);
     double giftcard_final_price = Convert.ToDouble(GiftCard_price);

    /////Fetching Selected Items by User
    using (SqlConnection connection1 = DBConnection.getConnection())
    {          
        string strquery1 = "SELECT (select top 1 'Fruit' FROM WeedingSalonGeneralRes where Fruit=1) as fruit, (select top 1 'Drink' FROM WeedingSalonGeneralRes where Drink=1) as drink, (select top 1 'Desert' FROM WeedingSalonGeneralRes where Desert=1) as desert,(select top 1 'MainFood' FROM WeedingSalonGeneralRes where MainFood=1) as MainFood,(select top 1 'Salad' FROM WeedingSalonGeneralRes where Salad=1) as salad,(select top 1 'TableFlower' FROM WeedingSalonGeneralRes where TableFlower=1) as TableFlower,(select top 1 'SaloonLighting' FROM WeedingSalonGeneralRes where SaloonLighting=1) as SaloonLighting,(select top 1 'Saloondesign' FROM WeedingSalonGeneralRes where Saloondesign=1) as Saloondesign,(select top 1 'SloonCrew' FROM WeedingSalonGeneralRes where SloonCrew=1) as SloonCrew,(select top 1 'Pastry' FROM WeedingSalonGeneralRes where Pastry=1) as Pastry,(select top 1 'GiftCard' FROM WeedingSalonGeneralRes where GiftCard=1) as GiftCard ";
        connection1.Open();
        SqlCommand cmd1 = new SqlCommand();
        cmd1.Connection = connection1;
        cmd1.CommandText = strquery1;
        string cis = Session["customerID"].ToString();
        lbl2_customerid.Text = cis;

        Double totalcost;

        SqlDataReader reader2 = cmd1.ExecuteReader();
        if (reader2.Read())
        {
            if (reader2[0].ToString() != null && reader2[0].ToString() != "")
                lbl8_fruit.Text = reader2[0].ToString() + Fruit_price;
            else
                fruit_final_price = 0;


            if (reader2[1].ToString() != null && reader2[1].ToString() != "")
                lbl10_drink.Text = reader2[1].ToString() + Drink_price;
            else
                drink_final_price = 0;


            if (reader2[2].ToString() != null && reader2[2].ToString() != "")
                lbl11_desert.Text = reader2[2].ToString() + Desert_price;
            else
                desert_final_price = 0;

            if (reader2[3].ToString() != null && reader2[3].ToString() != "")
                lbl12_mainfood.Text = reader2[3].ToString() + MainFood_price;
            else
                mainfood_final_price = 0;

            if (reader2[4].ToString() != null && reader2[4].ToString() != "")
                lbl13_salad.Text = reader2[4].ToString() + Salad_price;
            else
                salad_final_price = 0;

            if (reader2[5].ToString() != null && reader2[5].ToString() != "")
                lbl14_tableflower.Text = reader2[5].ToString() + TableFlower_price;
            else
                tableflower_final_price = 0;


            if (reader2[6].ToString() != null && reader2[6].ToString() != "")
                lbl15_saloonlighting.Text = reader2[6].ToString() + SaloonLighting_price;
            else
                saloonlighting_final_price = 0;


            if (reader2[7].ToString() != null && reader2[7].ToString() != "")
                lbl16_saloondesign.Text = reader2[7].ToString() + SaloonDesign_price;
            else
                saloondesign_final_price = 0;


            if (reader2[8].ToString() != null && reader2[8].ToString() != "")
                lbl17_salooncrew.Text = reader2[8].ToString() + SaloonCrew_price;
            else
                salooncrew_final_price = 0;


            if (reader2[9].ToString() != null && reader2[9].ToString() != "")
                lbl18_pastry.Text = reader2[9].ToString() + Pastry_price;
            else
                pastry_final_price = 0;


            if (reader2[10].ToString() != null && reader2[10].ToString() != "")
                lbl19_giftcard.Text = reader2[10].ToString() + GiftCard_price;
            else
                giftcard_final_price = 0;

            totalcost = fruit_final_price + drink_final_price + desert_final_price+mainfood_final_price+salad_final_price+tableflower_final_price+saloonlighting_final_price+saloondesign_final_price+salooncrew_final_price+pastry_final_price+giftcard_final_price;
            lblTotalCost.Text = totalcost.ToString();



        }
    }
}

  }

1 个答案:

答案 0 :(得分:0)

我查看了你的代码,它需要重构和查询转移到存储过程。但是这里有一些现有代码的提示: 你不能合并两个查询,如:

string strquery1 = "SELECT 
(select top 1 'Fruit' FROM WeedingSalonGeneralRes where Fruit=1) as fruit, 
(select COALESCE( MAX(Fruit_Price),0) From GenReservationServicePrice) as fruit_price,
(select top 1 'Drink' FROM WeedingSalonGeneralRes where Drink=1) as drink, 
(select COALESCE(MAX(Drink_price,0)) From GenReservationServicePrice) as drink_price,
(select top 1 'Desert' FROM WeedingSalonGeneralRes where Desert=1) as desert,
(select COALESCE(MAX(Desert_price,0)) From GenReservationServicePrice) as desert_price,

等其他专栏。

而不是

if (reader2[0].ToString() != null && reader2[0].ToString() != "")

使用

if (!string.IsNullOrEmpty(reader[0].ToString()) 

然后

if (reader2.Read())
    {
        if (!string.IsNullOrEmpty(reader["fruit"].ToString()) 
        lbl8_fruit.Text = reader2["friut"].ToString() + reader2["Fruit_price"].ToString();

...

最后

//COALESCE in query ensure you don't get Null but 0 instead
selectedItemsSum = Convert.ToDouble(reader2["fruit_price"]) + ...

希望这有帮助!