目前,我正在尝试使用代码将新学生添加到数据库表中。但是当按下提交时未填充其中一个文本框时,解决方案崩溃。请告诉我一种编写代码的方法:
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
答案 0 :(得分:0)
Private Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnsubmit.Click
cnnOLEDB.Open()
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()
cnnOLEDB.Close()
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
答案 1 :(得分:0)
我不认为Visual Studio在其VBA环境中具有MS-Access所需的NZ function
。
您可以创建自己的功能来模仿它:
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,"") + "');"