我有一个表包含来自几个代理商和几家航空公司的价格,他们被按重量收费划分成组。访问2010年VBA或查询表并计算结果
根据出发机场(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公斤和GW = 222公斤然后使用更高的值
FSC和如果有的话,SSC被添加到价格中。 (GW) 例如: 空运费用= 0.25欧元/千克(x 405千克大众汽车) 燃料+安全=欧元计算重量(VW)并且如果ScGw =是那么重量是不同的帐户如果ScGw =否则计算正常的VW 示例: 空运费= 0.25欧元/千克(x 405千克VW) 燃料+安全=欧元1.1 /千克(x 405千克VW )
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)已经以另一种形式选择。
如果你能帮助我,因为几天根本找不到任何解决方案。我正在写完整页面而没有任何好的结果。 感谢所有回应。
我卡的那一刻,并与错误:
Run-time error ‘3061’:
Too few parameters. Expected 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
0票下来接受 \t 非常感谢托尼! 我困在此刻,并与错误: 运行时错误'3061': 太少的参数。预计2 我不知道什么问题是... – 2012-01-11 05:26:36
@ Catalin Anton。我已经为我的答案添加了一个额外的部分,我希望这会有所帮助。 – 2012-01-11 13:26:41
非常感谢Tony!我会尽量使用我收到的建议。现在我增加了很多,所以我可以使用这些信息。 **无论如何,你已经给了我开始!** – 2012-01-13 06:22:35