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



我有一个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操作系统上设置了错误的位置。用逗号代替点的意思。嗯,我有我的windows和ms访问瑞典语,在输入折扣时应该使用逗号还是句点对我来说并不重要。

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

接下来,使用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

虽然访问中的用户界面将使用本地设置,但VBA仅使用US设置。

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

以下内容应该有效:

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