【发布时间】:2015-08-14 15:40:09
【问题描述】:
我有一个 Access 2010 表单,其中包含 Year、Policy Number 和 Type_Code 的三个组合框。在这些旁边我有一个政策查找按钮,在所有这些下方我有一个文本框,用于保存政策数据。
当用户从组合框中选择年份、保单编号和类型代码时,他们然后单击保单查找按钮。然后,策略查找按钮运行以下代码,以查找在组合框中选择的策略的策略数据。
Private Sub PolSearch_Click()
On Error GoTo Err_PolSearch_Click
Dim SQL As String
Dim BD, PRC, PP, I, RFD, TAD, CPYMT, LC, PN, TYP, RY As String
PN = Me!cboPN.Value
TYP = Me!cboTYP.Value
RY = Me!cboRY.Value
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT DISTINCT GA_Loss_Credit.Billing_Date AS BD,
GA_Loss_Credit.Practice_Code as PRC, GA_Loss_Credit.producer_premium as PP,
GA_Loss_Credit.Interest as I, " & _
" GA_Loss_Credit.Refund_Amount as RFD, GA_Loss_Credit.Balance_Due as TD,
GA_Loss_Credit.Payment_Amount AS CPYMT, " & _
" GA_Loss_Credit.Loss_Credit as LC " & _
" FROM [GA_Loss_Credit] " & _
(" WHERE (([GA_Loss_Credit].REINSURANCE_YEAR) ='" & [RY] & "')
AND (([GA_Loss_Credit].POLICY_NUMBER) ='" & [PN] & "')
AND (([GA_Loss_Credit].TYPE_CODE)='" & [TYP] & "')") & _
(" ORDER BY GA_Loss_Credit.Billing_Date ;"))
While Not rs.EOF
BDATE.SetFocus
If IsNull(BDATE.Value) Then
BDATE.Value = rs![BD]
ElseIf IsNull(BDate_2.Value) Then
BDate_2.Value = rs![BD]
ElseIf IsNull(BDate_3.Value) Then
BDate_3.Value = rs![BD]
ElseIf IsNull(BDate_4.Value) Then
BDate_4.Value = rs![BD]
ElseIf IsNull(BDate_5.Value) Then
BDate_5.Value = rs![BD]
ElseIf IsNull(BDate_6.Value) Then
BDate_6.Value = rs![BD]
ElseIf IsNull(BDate_7.Value) Then
BDate_7.Value = rs![BD]
ElseIf IsNull(BDate_8.Value) Then
BDate_8.Value = rs![BD]
ElseIf IsNull(BDate_9.Value) Then
BDate_9.Value = rs![BD]
ElseIf IsNull(BDate_10.Value) Then
BDate_10.Value = rs![BD]
End If
PCode_1.SetFocus
If IsNull(PCode_1.Value) Then
PCode_1.Value = rs![PRC]
ElseIf IsNull(PCode_2.Value) Then
PCode_2.Value = rs![PRC]
ElseIf IsNull(PCode_3.Value) Then
PCode_3.Value = rs![PRC]
ElseIf IsNull(PCode_4.Value) Then
PCode_4.Value = rs![PRC]
ElseIf IsNull(PCode_5.Value) Then
PCode_5.Value = rs![PRC]
ElseIf IsNull(PCode_6.Value) Then
PCode_6.Value = rs![PRC]
ElseIf IsNull(PCode_7.Value) Then
PCode_7.Value = rs![PRC]
ElseIf IsNull(PCode_8.Value) Then
PCode_8.Value = rs![PRC]
ElseIf IsNull(PCode_9.Value) Then
PCode_9.Value = rs![PRC]
ElseIf IsNull(PCode_10.Value) Then
PCode_10.Value = rs![PRC]
End If
rs.MoveNext
Wend
rs.Close
Exit_PolSearch_Click:
Exit Sub
Err_PolSearch_Click:
MsgBox Err.Description
Resume Exit_PolSearch_Click
End Sub
正在运行的查询最多可以为 Billing Dates 和 Practice Types 带回 10 条记录。
上述代码有效,但我的问题是;有没有更好的方法来代替编写十个不同的 IF Then Else 语句。
任何帮助/建议将不胜感激
【问题讨论】: