访问SQL - 如果TotalPrice是> 30,折扣= 30%

时间:2013-12-19 16:10:43

标签: sql ms-access ms-access-2007

我正在开发一个访问数据库,我有多个字段。

  • 产品数量(由用户输入)
  • 产品价格(由数据库检索)
  • 总价(产品数量*产品价格)
  • 折扣

enter image description here

需要计算折扣,但是我不知道在TotalPrice超过50的情况下如何将其设置为30%。如果TotalPrice在折扣超过50时自动更新会很有用太

2 个答案:

答案 0 :(得分:1)

设置一个新的查询,引入Product Quantity,ProductPrice和TotalPrice。然后,在查询的设计视图中,添加以下字段:

Discount: IIF((ProductQuantity * ProductPrice) > 50, 30, 0)

如果您不熟悉IIF语句,则上述内容如下:“如果ProductQuantity时间ProductPrice大于50,则设置Discount = 30,否则设置Discount = 0”

如果总价格小于或等于50,这将设置折扣= 0,因此如果需要其他内容,请编辑最后一个部分。另外,我对你的字段名称做了假设,所以你可能也需要调整它们,但你明白了。

如果您需要折扣以实际反映总价格的30%,那么如果看起来像这样:

Discount: IIF((ProductQuantity * ProductPrice) > 50, (ProductQuantity * ProductPrice) * .30, 0)

答案 1 :(得分:0)

如果这是数据输入屏幕您可以将After_Update事件添加到Sandwich PriceSandwich Quantity

Private Sub SandwichPrice_AfterUpdate()
   update_total 
End Sub

Private Sub SandwichQuantity_AfterUpdate()
   update_total 
End Sub
Private Sub update_total()
   Dim total AS Double
   If IsNull(Me.SandwichPrice) OR IsNull(Me.SandwichQuantity) Then Exit Sub
   total = Me.SandwichPrice * Me.SandwichQuantity
   SELECT CASE total
       CASE 51 to 1000
          Me.Discount = 0.3
       CASE Else
          Me.Discount = 0
   END SELECT
   Me.TotalPrice = total - (total * Me.Discount)
End Sub

这样做可以添加CASE语句来添加多个折扣级别,即您可以添加CASE 10 TO 20一个新折扣,当TotalPrice为{{{}时,它会适用1}}。

这将允许您的查询查询从折扣返回正确的值。我不认为这应该在查询查询中处理,而是在数据存储本身中处理。