知識點匯總。
Private Sub Combo18_AfterUpdate()
Call 車損
Call 乘客保
Call 駕駛人保
End Sub
解析:Combo18該控制項更新後,執行車損、乘客保、駕駛人保方法。
Private Sub 車損()
車損基礎保費.Value = CurrentDb.OpenRecordset(“SELECT 基礎保費 FROM 機動車損失保險 WHERE 車型='” & Combo10.Value & “‘ and 座位='” & Combo12.Value & “‘ and 車齡='” & Combo18.Value & “‘”)![基礎保費]
車損費率.Value = CurrentDb.OpenRecordset(“SELECT 費率 FROM 機動車損失保險 WHERE 車型='” & Combo10.Value & “‘ and 座位='” & Combo12.Value & “‘ and 車齡='” & Combo18.Value & “‘”)![費率]
End Sub
解析:查詢對應的數據,然後特定的值到控制項上(更新車損基礎保費)。參數格式: & Combo10.Value & ,該參數是Combo10的控制項的值。
Private Sub 車損基礎保費_AfterUpdate()
車損標準保費.Value = Nz(車損基礎保費.Value, 0) + Nz(車損保險金額.Value, 0) * Nz(車損費率.Value, 0)
End Sub
解析:車損基礎保費該控制項更新後,執行這個模組
出現錯誤:編譯錯誤:類型不匹配。
初步判定是 i 這個變數上面 Dim定義了類型不對。
解決方法:①將 Dim i As Long 刪去。②查看正確類型,並進行更改。
此處方法一無效,用方法二,修改後成功運行。
下面這個案例用方法一有效:(注釋了)
登錄模組的VBA:
Private Sub 命令1_Click() On Error GoTo Err_命令48_Click If IsNull(Trim(Me![編號])) Or IsNull(Trim(Me![密碼])) Then MsgBox "用戶編號和密碼不能為空,請重新輸入!", vbOKOnly, "警告資訊" Me.編號.SetFocus Else ' With CodeContextObject ' rrr = "[操作員]![編號]='" & Trim(Me![編號]) & _ ' "'And [操作員]![密碼] = '" & Trim(Me![密碼]) & "'" ' DoCmd.ApplyFilter , rrr ' 獲取用戶名和密碼 Dim y, m, rs As Recordset ' 定義y表示用戶名,m表示密碼 y = Me.編號.Value 'Me.編號——登錄介面中控制項名為 編號 的框。 m = Me.密碼.Value Me.RecordSource = "select * from 操作員 where 編號='" & y & "' and 密碼='" & m & "'" '從操作員表中查詢符合條件的相關數據 Set rs = Me.Recordset If rs.RecordCount > 0 Then '查詢到了就 rs就為查詢的條數,若沒查到則為-1 公用資訊登錄名 = y DoCmd.Close '該登錄窗口關閉 DoCmd.OpenForm "教師資訊表" '打開 教師資訊表 ' If (.RecordsetClone.RecordCount > 0) Then ' DoCmd.SetWarnings False ' DoCmd.RunSQL "UPDATE 操作員 SET 運行狀態 = no" & _ ' " WHERE 編號 <> '" & Me.編號 & "'" ' DoCmd.RunSQL "UPDATE 操作員 SET 運行狀態 = yes" & _ ' " WHERE 編號 = '" & Me.編號 & "'" ' DoCmd.Close 'DoCmd.OpenForm "系統介面", acNormal, "", "", acReadOnly, acWindowNormal Else MsgBox "您輸入的用戶名或密碼有誤,請重新輸入!", vbOKOnly, "警告資訊" '彈出相關資訊 Me.密碼 = Null '密碼框清空 Me.密碼.SetFocus '焦點設為密碼框 End If ' End With End If Exit_命令48_Click: Exit Sub Err_命令48_Click: MsgBox Err.Description Resume Exit_命令48_Click End Sub