首页 > 解决方案 > 未填写一个文本框时解决方案崩溃

问题描述

目前,我正在尝试编写代码以将新学生添加到数据库表中。但是当按下提交时没有填充其中一个文本框时,解决方案会崩溃。请告诉我一种编写代码的方法:

Imports System.Data.OleDb
Public Class AddNewStudent
    Dim cnnOLEDB As New OleDbConnection
    Dim cmdInsert As New OleDbCommand
    Dim con = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\ASSIGNMENT\vbnassignmentfinal.accdb;"
    Dim cmdDelete As New OleDbCommand
    Dim cmdUpdate As New OleDbCommand
    Dim cmdSearch As New OleDbCommand
    Private Sub AddNewStudentSD_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        cnnOLEDB.ConnectionString = con
        cnnOLEDB.Open()
    End Sub

    Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click

        txtsem.ResetText()
        txtsfn.ResetText()
        txtsid.ResetText()
        txtsln.ResetText()
        txtsph.ResetText()
        txtint.ResetText()
        cmbgen.ResetText()


    End Sub

    Private Sub btnHome_Click(sender As Object, e As EventArgs) Handles btnhome.Click
        UserHomepage.Show()
        Me.Hide()
    End Sub

    Private Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnsubmit.Click
        cmdInsert.CommandText = "Insert into student Values(" + txtsid.Text + ",'" + txtint.Text + "','" + txtsfn.Text + "','" + txtsln.Text + "', '" + cmbgen.Text + "', " + txtsph.Text + ", '" + txtsem.Text + "');"
        cmdInsert.CommandType = CommandType.Text
        cmdInsert.Connection = cnnOLEDB
        cmdInsert.ExecuteNonQuery()
        MessageBox.Show("Are you sure you want to proceed?", "Proceed", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
        If DialogResult.Yes Then
            UserHomepage.Show()
            Me.Hide()
        ElseIf DialogResult.No Then
            Me.Show()
            UserHomepage.Hide()
        End If
    End Sub
End Class

标签: visual-studioms-accessvba

解决方案


我认为 Visual StudioNZ function在其 VBA 环境中没有 MS-Access 那样的功能。

您可以创建自己的函数来模仿它:

Public Shared Function Nz(ByVal Value As Object, Optional ByVal Default as Object = String.Empty) As Object
    If Value Is Nothing OrElse IsDBNull(Value) Then
        Return Default
    Else
        Return Value
    End If
End Function

然后修改您的动态 SQL 代码行以将任何 Null 文本字段转换为空字符串。

cmdInsert.CommandText = "Insert into student Values(" + NZ(txtsid.Text,"") + _
 ",'" + NZ(txtint.Text,"") + "','" + NZ(txtsfn.Text,"") + "','" + _
 NZ(txtsln.Text,"") + "', '" + NZ(cmbgen.Text,"") + "', '" + NZ(txtsph.Text,"") _
 + "', '" + NZ(txtsem.Text,"") + "');"

推荐阅读