如何使用 VBA 在 Access 2016 中实施五星级评级系统?
How To Implement A Five Star Rating System in Access 2016 with VBA?
问候 Whosebug,
我正在编写我们大学使用的 material 数据库,我试图为 material 进入 ms-access 2016 数据库系统的人实施 5 星评级系统。我已经完成了大部分基础工作,但我遇到了编码错误。
我认为这可能与我试图添加到我自己的程序中的 2007 版示例中的编码脚本有关。我是设计和编码方面的初学者,所以请原谅任何失误。
这是我的:
有一个 vba 模块,代码如下:
Option Compare Database
Option Explicit
Public Function SetRating(frm As Object, ctl As Access.Control)
'Code: by Daniel van den Berg
On Error GoTo Err_handler
Dim strStar As String
Dim strBlank As String
' set path to picture accordingly
strStar = "C:\Users\jason\Pictures\yellow_sm.png"
strBlank = "C:\Users\jason\Pictures\blank_sm.png"
Select Case ctl.Value
Case Is = 0
frm.imgSt1.Picture = strBlank
frm.imgSt2.Picture = strBlank
frm.imgSt3.Picture = strBlank
frm.imgSt4.Picture = strBlank
frm.imgSt5.Picture = strBlank
Case Is = 1
frm.imgSt1.Picture = strStar
frm.imgSt2.Picture = strBlank
frm.imgSt3.Picture = strBlank
frm.imgSt4.Picture = strBlank
frm.imgSt5.Picture = strBlank
Case Is = 2
frm.imgSt1.Picture = strStar
frm.imgSt2.Picture = strStar
frm.imgSt3.Picture = strBlank
frm.imgSt4.Picture = strBlank
frm.imgSt5.Picture = strBlank
Case Is = 3
frm.imgSt1.Picture = strStar
frm.imgSt2.Picture = strStar
frm.imgSt3.Picture = strStar
frm.imgSt4.Picture = strBlank
frm.imgSt5.Picture = strBlank
Case Is = 4
frm.imgSt1.Picture = strStar
frm.imgSt2.Picture = strStar
frm.imgSt3.Picture = strStar
frm.imgSt4.Picture = strStar
frm.imgSt5.Picture = strBlank
Case Is = 5
frm.imgSt1.Picture = strStar
frm.imgSt2.Picture = strStar
frm.imgSt3.Picture = strStar
frm.imgSt4.Picture = strStar
frm.imgSt5.Picture = strStar
End Select
Exit_err:
Exit Function
Err_handler:
MsgBox Err.Number & " " & Err.Description
Resume Exit_err:
End Function
在表格中,我有以下作为事件程序
Private Sub cmdNoRating_Click()
NoRating Me.mRating
End Sub
Private Sub Form_Current()
SetRating Form_Material Details, Me.mRating
End Sub
Private Sub imgSt1_Click()
SetRatingClick Me.imgSt1, Me.mRating
End Sub
Private Sub imgSt2_Click()
SetRatingClick Me.imgSt2, Me.mRating
End Sub
Private Sub imgSt3_Click()
SetRatingClick Me.imgSt3, Me.mRating
End Sub
Private Sub imgSt4_Click()
SetRatingClick Me.imgSt4, Me.mRating
End Sub
Private Sub imgSt5_Click()
SetRatingClick Me.imgSt5, Me.mRating
End Sub
我的代码有问题吗?
您在 Form_Current
事件中向 SetRating
函数传递了错误数量的参数,并且还使用了未设置的变量。
尝试将其替换为:
Private Sub Form_Current()
SetRating Me.Form, Me.mRating
End Sub
另外请注意,在生产环境中复制粘贴您不完全理解的内容 VBA 是一种安全隐患。尝试阅读您的代码。
请注意,删除它可能会导致在刷新表单或切换记录时无法加载评分。
问候 Whosebug,
我正在编写我们大学使用的 material 数据库,我试图为 material 进入 ms-access 2016 数据库系统的人实施 5 星评级系统。我已经完成了大部分基础工作,但我遇到了编码错误。
我认为这可能与我试图添加到我自己的程序中的 2007 版示例中的编码脚本有关。我是设计和编码方面的初学者,所以请原谅任何失误。
这是我的:
有一个 vba 模块,代码如下:
Option Compare Database
Option Explicit
Public Function SetRating(frm As Object, ctl As Access.Control)
'Code: by Daniel van den Berg
On Error GoTo Err_handler
Dim strStar As String
Dim strBlank As String
' set path to picture accordingly
strStar = "C:\Users\jason\Pictures\yellow_sm.png"
strBlank = "C:\Users\jason\Pictures\blank_sm.png"
Select Case ctl.Value
Case Is = 0
frm.imgSt1.Picture = strBlank
frm.imgSt2.Picture = strBlank
frm.imgSt3.Picture = strBlank
frm.imgSt4.Picture = strBlank
frm.imgSt5.Picture = strBlank
Case Is = 1
frm.imgSt1.Picture = strStar
frm.imgSt2.Picture = strBlank
frm.imgSt3.Picture = strBlank
frm.imgSt4.Picture = strBlank
frm.imgSt5.Picture = strBlank
Case Is = 2
frm.imgSt1.Picture = strStar
frm.imgSt2.Picture = strStar
frm.imgSt3.Picture = strBlank
frm.imgSt4.Picture = strBlank
frm.imgSt5.Picture = strBlank
Case Is = 3
frm.imgSt1.Picture = strStar
frm.imgSt2.Picture = strStar
frm.imgSt3.Picture = strStar
frm.imgSt4.Picture = strBlank
frm.imgSt5.Picture = strBlank
Case Is = 4
frm.imgSt1.Picture = strStar
frm.imgSt2.Picture = strStar
frm.imgSt3.Picture = strStar
frm.imgSt4.Picture = strStar
frm.imgSt5.Picture = strBlank
Case Is = 5
frm.imgSt1.Picture = strStar
frm.imgSt2.Picture = strStar
frm.imgSt3.Picture = strStar
frm.imgSt4.Picture = strStar
frm.imgSt5.Picture = strStar
End Select
Exit_err:
Exit Function
Err_handler:
MsgBox Err.Number & " " & Err.Description
Resume Exit_err:
End Function
在表格中,我有以下作为事件程序
Private Sub cmdNoRating_Click()
NoRating Me.mRating
End Sub
Private Sub Form_Current()
SetRating Form_Material Details, Me.mRating
End Sub
Private Sub imgSt1_Click()
SetRatingClick Me.imgSt1, Me.mRating
End Sub
Private Sub imgSt2_Click()
SetRatingClick Me.imgSt2, Me.mRating
End Sub
Private Sub imgSt3_Click()
SetRatingClick Me.imgSt3, Me.mRating
End Sub
Private Sub imgSt4_Click()
SetRatingClick Me.imgSt4, Me.mRating
End Sub
Private Sub imgSt5_Click()
SetRatingClick Me.imgSt5, Me.mRating
End Sub
我的代码有问题吗?
您在 Form_Current
事件中向 SetRating
函数传递了错误数量的参数,并且还使用了未设置的变量。
尝试将其替换为:
Private Sub Form_Current()
SetRating Me.Form, Me.mRating
End Sub
另外请注意,在生产环境中复制粘贴您不完全理解的内容 VBA 是一种安全隐患。尝试阅读您的代码。
请注意,删除它可能会导致在刷新表单或切换记录时无法加载评分。