将 Double 列中的每条记录乘以十进制数

Multiply every record in Double column with a decimal number

我有一个 Double 类型的列 'Price'。 我还有一个带有按钮的表单,该按钮应该打开一个输入框,让用户输入他们想要的折扣金额,例如用户输入 0,6(60% 折扣)并完成计算,1 - 0,6 = 0,4。 0,4 是价格列中每条记录相乘的数字。 我似乎无法正常工作。

我的一个尝试是在输入 0,5 时只乘以 5,它跳过了 5 之前的 0。这很奇怪。

Dim strDiscount As String
Dim discount  As Double
Dim holder As Double
Dim strSQL  As String
Dim dbs     As DAO.Database

Set dbs = CurrentDb

strDiscount = InputBox("Enter how much discount you want:", "Amount of discount")

holder = Val(strDiscount)
discount = (1-holder)
strSQL = "UPDATE Prislista SET Listpris = Listpris *" & _
discount
dbs.Execute strSQL

其中一次尝试给出了一条错误消息,告诉我我在 windows OS 上设置了错误的位置。关于使用逗号而不是点的事情。好吧,我有我的 windows 和 ms-access 瑞典语,输入折扣时使用逗号还是点对我来说并不重要。

虽然 access 中的用户界面将使用您的本地设置,但 VBA 仅使用美国设置。

因此您需要将 0,5 转换为 0.5

以下应该有效:

holder = Val(Replace(strDiscount,",","."))

首先,如果四位小数就足够了,请始终将金额和数量存储为货币

接下来,使用 CCur 将本地化文本从 InputBox 转换为数字。

第三,使用Str将小数转换为中性字符串表达式。

然后:

Dim strDiscount As String
Dim discount  As Currency
Dim holder As Currency
Dim strSQL  As String
Dim dbs     As DAO.Database

Set dbs = CurrentDb

strDiscount = InputBox("Enter how much discount you want:", "Amount of discount")

holder = CCur(strDiscount)
discount = (1 - holder)
strSQL = "UPDATE Prislista SET Listpris = Listpris * " & Str(discount) & ""
dbs.Execute strSQL

示例:

strDiscount = "0,6"
holder = CCur(strDiscount)
discount = 1 - holder
? Str(discount)
 .4