You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将VS Code中计算的小数数值保存至MS Access数据库

VB.NET学生成绩系统:小数平均分无法保存到Access数据库的解决方法

问题场景

用VB.NET开发学生成绩系统,计算出的平均分若为小数,系统提示保存成功,但Access数据库中未存储该数值;仅整数平均分能正常保存。已设置Access字段允许小数位,代码中相关变量均为Double类型,核心代码如下:

Dim average As Double

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Try
        Me.Student_GradesBindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(StudentGradesDataSet)
        MsgBox("Success")
    Catch ex As Exception
        MsgBox("Please try again")
    End Try
End Sub

Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click
    Try
        Dim geo As Double
        Dim comp As Double
        Dim maths As Double
        Dim sci As Double
        Dim grade As String
        Dim avg As Double

        geo = GeographyTextBox.Text
        sci = ScienceTextBox.Text
        maths = MathematicsTextBox.Text
        comp = ComputerTextBox.Text

        If ((geo > 100) Or (sci > 100) Or (comp > 100) Or (maths > 100)) Then
            MsgBox("Marks cannot be more than 100")
            End
        End If

        avg = (geo + sci + comp + maths) / 4

        If avg < 60 Then
            grade = "Failed"
        Else
            grade = "Passed"
        End If

        AverageTextBox.Text = avg
        GradeTextBox.Text = grade
    Catch ex As Exception
        MsgBox("try")
    End Try
End Sub

解决步骤

  • 确认Access字段类型配置
    检查数据库中存储平均分的字段:

    1. 字段类型必须为Number,字段大小选择Double或Decimal(不要选Integer/Long);
    2. 设置合适的小数位数(比如2位);
    3. 若之前是整数类型修改而来,需删除旧的数据集并重新生成,避免TableAdapter仍绑定旧类型。
  • 修正数据集列类型
    打开项目中的StudentGradesDataSet.xsd:

    1. 找到对应的数据表,查看Average列的数据类型;
    2. 若为System.Int32(整数),手动改为System.Double;
    3. 右键数据集选择“生成数据集”,更新TableAdapter的映射关系。
  • 优化文本转数值逻辑
    直接赋值TextBox.Text到Double变量存在隐式转换风险,改用Double.TryParse确保转换有效:

    ' 以地理成绩为例,其他科目同理
    If Not Double.TryParse(GeographyTextBox.Text, geo) Then
        MsgBox("地理成绩请输入有效数字")
        Return
    End If
    

    避免非数字输入导致的隐性错误,保证计算出的平均分是合法的Double值。

  • 确保数据同步时机
    在保存前触发文本框的验证,确保内容同步到BindingSource:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try
            ' 先验证并提交文本框内容到绑定源
            AverageTextBox.Validate()
            GradeTextBox.Validate()
            Me.Student_GradesBindingSource.EndEdit()
            Me.TableAdapterManager.UpdateAll(StudentGradesDataSet)
            MsgBox("Success")
        Catch ex As Exception
            MsgBox("保存失败:" & ex.Message)
        End Try
    End Sub
    
  • 完善异常信息捕获
    修改Catch块输出详细错误,快速定位问题:

    Catch ex As Exception
        MsgBox("错误详情:" & ex.Message & vbCrLf & "调用栈:" & ex.StackTrace)
    End Try
    

内容的提问来源于stack exchange,提问作者AST4AY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 00:25:19