【发布时间】:2012-02-06 21:38:08
【问题描述】:
我有一个表格,其中包含几个代理和几家航空公司的价格,它们按重量收费分组。
根据出发机场 (POL/C) 和到达机场 (POD/C),我检查了所有价格,我必须使用最好的一个。但要显示价格替代品。
每个航空公司都有自己的计算方法,所以我必须检查一下。
表格包含以下信息:
ID = AutoNumber, Long Integer
A/CODE = Number, Long Integer
AGENT = Text,
POL/C = Text,
POL = Text,
POD/C = Text,
POD = Text,
IATA = Text,
Airline = Text,
UPDATE = Date/Time, Short Date
EXPIRY DATE = Date/Time, Short Date
CURRENCY = Text,
M/M = Number, Double (Minimum weight accepted)
-45 = Number, Double (price for the weight between 1 and 45)
+45 = Number, Double (price for the weight starting from 45 to 100)
+100 = Number, Double (price for the weight starting from 100 to 300)
+300 = Number, Double (price for the weight starting from 300 to 500)
+500 = Number, Double (price for the weight starting from 500 to 1000)
+1000 = Number, Double (price for the weight starting from 1000)
FSC = Number, Double
SSC = Number, Double
ScGw = Yes/No, Yes/No
FREQUENCY = Text,
TT = Number, Long Integer
T/S = Yes/No, Yes/No
从一开始它将有两个权重,如下所示:
- 实际总重量(GW-毛重)
-
按体积计算的重量 (VW)
如果 GW > VW 那么.. 计算基于较高值 (GW) 别的 计算基于较高的值(VW)
示例: VW = 405 kgs 和 GW = 222 kgs 然后使用更高的值
FSC 和 SSC 会添加到价格中(如果有)。 其中根据重量 (VW) 计算,如果 ScGw = Yes THEN 重量是不同的帐户,使用 (GW) 计算 例子: 空运 = 0.25 欧元/公斤(x 405 公斤大众) 燃料 + 安全 = 1.1 欧元/公斤(x 222 公斤 GW) 如果 ScGw = No THEN 计算正常 VW 例子: 空运 = 0.25 欧元/公斤(x 405 公斤大众) 燃料 + 安全 = 1.1 欧元/公斤(x 405 公斤大众)
If the calculation is made according to GW,
then add the FSC and SSC automatically and without having to count,
if ScGw = Yes / No
GW和VW的值我们已经用另一种形式计算过了,只需要使用即可。 出发机场 (POL/C) 和到达机场 (POD/C) 已经以另一种形式选择。
如果你能帮助我,几天根本找不到任何解决方案。我正在写整页但没有任何好的结果。 感谢所有回复的人。
我现在被困在错误中:
运行时错误‘3061’:
参数太少。预计 2
不知道是什么问题……
Public Sub CalculPret()
Dim da As Database
Dim rec As Recordset
Dim PolCboV As String
Dim PodCboV As String
Dim strSQL As String
Dim GrossWeight As Double
Dim VolumeWeight As Double
Dim CalcWeight As Double
Dim CalcWeightScGw As Double
Dim CalcPrice As Double
Dim TotalPrice As Double
PolCboV = [Forms]![DimensionsQry]![PolCbo]
PodCboV = [Forms]![DimensionsQry]![PodCbo]
strSQL = "SELECT Prices_List.ID, Prices_List.[A/CODE], Prices_List.AGENT, Prices_List.[POL/C], Prices_List.POL, Prices_List.[POD/C], Prices_List.POD, Prices_List.IATA, Prices_List.AIRLINE, Prices_List.UPDATE, Prices_List.[EXPIRY DATE], Prices_List.CURRENCY, Prices_List.[M/M], Prices_List.[-45], Prices_List.[+45], Prices_List.[+100], Prices_List.[+300], Prices_List.[+500], Prices_List.[+1000], Prices_List.FSC, Prices_List.SSC, Prices_List.ScGw, Prices_List.FREQUENCY, Prices_List.TT, Prices_List.[T/S]"
strSQL = strSQL & " FROM Prices_List"
strSQL = strSQL & " WHERE (((Prices_List.[POL/C])=PolCboV) AND ((Prices_List.[POD/C])=PodCboV)); "
Set da = CurrentDb
Set rec = da.OpenRecordset(strSQL)
If rec.RecordCount = 0 Then
rec.Close
Exit Sub
Else
GrossWeight = [Forms]![DimensionsQry]![Text34]
VolumeWeight = [Forms]![DimensionsQry]![Text36]
If GrossWeight > VolumeWeight Then
CalcWeight = GrossWeight
Else
If ScGw = "Yes" Then
CalcWeight = GrossWeight
Else
CalcWeight = VolumeWeight
End If
End If
rec.MoveFirst
Do Until rec.EOF
Select Case CalcWeight
Case 1 To 44
CalcPrice = rec![-45]
Case 45 To 99
CalcPrice = rec![+45]
Case 100 To 299
CalcPrice = rec![+100]
Case 300 To 499
CalcPrice = rec![+300]
Case 500 To 999
CalcPrice = rec![+500]
Case Is >= 1000
CalcPrice = rec![+1000]
End Select
If CalcWeight = GrossWeight Then
CalcPrice = CalcPrice + rec!FSC + rec!SSC
TotalPrice = CalcPrice * CalcWeight
Else
TotalPrice = (CalcPrice * CalcWeight) + ((rec!FSC + rec!SSC) * GrossWeight)
End If
MsgBox TotalPrice
rec.MoveNext
Loop
End If
rec.Close
End Sub
【问题讨论】: