【发布时间】:2020-05-12 12:11:59
【问题描述】:
我试图在插入日期之前检查一列是否为空,但我收到一个错误,我不知道如何解决它。我读到了ExecuteScalar(),但在我的情况下它没有帮助。
代码:
Dim sql As String = "UPDATE [TA-Arbeitszeit] SET Ende = @ende WHERE Personal_nr = @Personal_nr AND Arbeitstag = @Arbeitstag"
Dim sql2 As String = "SELECT * FROM [TA-Arbeitszeit] WHERE Personal_nr = @Personal_Nr AND Arbeitstag = @Arbeitstag"
Using conn2 As New OleDbConnection(connectionString),
cmd2 As New OleDbCommand(sql2, conn2)
conn2.Open()
cmd2.Parameters.Add("@Personal_nr", OleDbType.VarChar).Value = tbxUserInput.Text.Trim()
cmd2.Parameters.Add("@Arbeitstag", OleDbType.VarChar).Value = DateTime.Now.ToString("d")
Dim ende As String
Using reader0 As OleDbDataReader = cmd2.ExecuteReader()
reader0.Read()
ende = reader0(3)
End Using
If String.IsNullOrEmpty(ende) Then
Using conn As New OleDbConnection(connectionString),
cmd As New OleDbCommand(sql, conn)
conn.Open()
cmd.Parameters.Add("@ende", OleDbType.VarChar).Value = DateTime.Now.ToString("G")
cmd.Parameters.Add("@Personal_nr", OleDbType.VarChar).Value = tbxUserInput.Text.Trim()
cmd.Parameters.Add("@Arbeitstag", OleDbType.VarChar).Value = DateTime.Now.ToString("d")
Dim icount As Integer = cmd.ExecuteNonQuery
End Using
frmGreetings.Label1.Text = eveninggreetingsAray()
frmGreetings.Label2.Text = "Sie haben Ihren Arbeitstag beendet."
frmGreetings.ShowDialog()
tbxUserInput.Select()
Else
frmNotificationBox.Label1.Text = "Ihren Arbeitstag ist schon beendet!"
frmNotificationBox.ShowDialog()
tbxUserInput.Select()
End If
End Using
【问题讨论】:
-
只有在数据库中的值为 null 时才更新
Ende? -
Re“我收到一个错误”,您收到的具体错误是什么?哪条线?
-
我想在为空时更新 Ende。如果已经有一些东西我不想更新它并向用户说该列已填充。错误出现在 ende=reader0(3) 行。
-
我们不得不问这个问题有点不可思议,别介意两次,但错误信息是什么?
标签: sql vb.net visual-studio oledb