【问题标题】:Changing IF Else condition values to get from table更改 IF Else 条件值以从表中获取
【发布时间】:2020-07-13 22:43:01
【问题描述】:

除了在 MS access vba 中硬编码分数和成绩外,我如何将值放在表中并从表中访问它们?这样当分数范围发生变化时,我就不必回到 vba 代码并更新它。我只是更新表中的值,代码只会拾取分数范围并在字段上分配正确的成绩。请帮忙...

Private Sub MarkScored_Exit(Cancel As Integer)
Dim mScore As Integer

mScore = Nz(Forms![frmAssessmentDetails]![subfrmAcademicAssessment]![MarkScored])

If mScore >= 0 And mScore <= 10 Then
    Forms![frmAssessmentDetails]![subfrmAcademicAssessment]![cboGradeCode] = "VLA"
ElseIf mScore > 10 And mScore <= 15 Then
    Forms![frmAssessmentDetails]![subfrmAcademicAssessment]![cboGradeCode] = "LA"
ElseIf mScore > 15 And mScore <= 20 Then
    Forms![frmAssessmentDetails]![subfrmAcademicAssessment]![cboGradeCode] = "S"
ElseIf mScore > 20 And mScore <= 25 Then
    Forms![frmAssessmentDetails]![subfrmAcademicAssessment]![cboGradeCode] = "HA"
ElseIf mScore > 25 And mScore <= 30 Then
    Forms![frmAssessmentDetails]![subfrmAcademicAssessment]![cboGradeCode] = "VHA"
Else
    MsgBox "Please enter valid mark for Score between 0 and 30", vbOKCancel, "Invalid Number"

End If

结束子

【问题讨论】:

  • 我删除了 SQL Server 标记,因为这似乎是一个 VBA 访问问题。

标签: database ms-access vba


【解决方案1】:

我建议在数据库中创建一个新表,例如

|ID| gradeCode | fromScore | toScore|
 0   VLA         0           10
 1   LA          11          15
 2   S           16          20

然后在代码中查询

Select gradeCode from <gradeCodeTableName> where mScore between fromScore and toScore

编辑:正如 Gustav 建议的那样,在不浪费资源的情况下,更好的方法是创建像

这样的表
|ID| gradeCode | fromScore |
 0   VLA         0           
 1   LA          11          
 2   S           16          

然后像这样查询

Select Top 1 gradeCode From <gradeCodeTableName> Where mScore >= fromScore Order By fromScore Desc

您将保存 1 列数据

【讨论】:

  • 你只需要 fromScore 因为 toScore 是多余的:Select Top 1 gradeCode From &lt;gradeCodeTableName&gt; Where mScore &gt;= fromScore Order By fromScore Desc
  • 好吧,没想到这样,感谢您改进我的答案! @古斯塔夫
  • 感谢 Hynek 和 Gustav..您的回答对我有用..非常感谢..我是新手,这对我的学习有所帮助..非常感谢您的帮助..
  • @User9123 请避免添加更新作为答案,这是违反规则的:)。无论如何,当我看到您的 sql 字符串时,您在 WHERE 单词后缺少空格,因此该语句应如下所示"SELECT dbo_AcademicGrade.GradeCode FROM dbo_AcademicGrade WHERE " &amp; mScore &amp; " BETWEEN ScoreRangeFrom AND ScoreRangeTo;"
猜你喜欢
  • 2019-09-19
  • 2019-07-01
  • 2022-10-07
  • 1970-01-01
  • 1970-01-01
  • 2021-10-12
  • 2012-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多