知识点汇总。
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