Vb.net 问题是从字符串到类型日期的转换无效

Vb.net 问题是从字符串到类型日期的转换无效,vb.net,Vb.net,Tarikh是申报日期 从字符串到类型日期的转换无效问题显然在于: Option Explicit On Imports System.Data.OleDb Public Class Form1 Dim objCon As New OleDbConnection Dim strSQL As String Dim strConnect As String = "Provider= Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\

Tarikh是申报日期


从字符串到类型日期的转换无效

问题显然在于:

Option Explicit On
Imports System.Data.OleDb

Public Class Form1
    Dim objCon As New OleDbConnection
    Dim strSQL As String
    Dim strConnect As String = "Provider= Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Abry\Documents\Bilik.accdb"
    Dim da As New OleDb.OleDbDataAdapter
    Dim ds As New DataSet

    Private Sub TempahButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TempahButton.Click
        Dim startDate As String = DateTimePicker1.Value.ToString("dd/MM/yyyy")
        Dim str As String
        startDate = DateTimePicker1.Value

        objCon.ConnectionString = strConnect
        objCon.Open()
        str = "Insert into bilik(Bilik, Tujuan, [Masa Masuk], [Masa Keluar]) values(?, ?, ?, ?)"
        str = "Insert into bilik(Tarikh) values(startDate = DateTimePicker1.Value.ToShortDateString)"
        Dim cmd As OleDbCommand = New OleDbCommand(str, objCon)
        cmd.Parameters.Add(New OleDbParameter("Bilik", CType(BilikComboBox.SelectedIndex, String)))
        cmd.Parameters.Add(New OleDbParameter("Tujuan", CType(TujuanTextBox.Text, String)))
        cmd.Parameters.Add(New OleDbParameter("Tarikh", CType(DateTimePicker1.Value, Date)))
        cmd.Parameters.Add(New OleDbParameter("Masa Masuk", CType(MasaMasukMaskedTextBox.Text, String)))
        cmd.Parameters.Add(New OleDbParameter("Masa Keluar", CType(MasaKeluarMaskedTextBox.Text, String)))

        Try
            cmd.ExecuteNonQuery()
            cmd.Dispose()
            objCon.Close()
            TujuanTextBox.Clear()
            BilikComboBox.Text = ""
            DateTimePicker1.Value = ""
            MasaMasukMaskedTextBox.Clear()
            MasaKeluarMaskedTextBox.Clear()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Class
这意味着你发布的其他内容都是无关紧要的。问题是,正如错误消息明确指出的那样,将空的
字符串
分配给类型为
Date
的属性是无效的

DateTimePicker
Value
属性的类型为
Date
,因此必须为其分配
Date
值。没有空的
日期
,因此您必须指定默认日期,例如今天的日期:

DateTimePicker1.Value = ""

或者,您需要使用
DateTimePicker
控件内置的功能来指示未选择日期。如果您想知道
DateTimePicker
控件是如何工作的,请阅读类文档。

首先,感谢您没有告诉我们错误发生在代码的何处。这当然是有趣的涉水通过所有的代码,这是荒谬的部分,并试图找出哪一行可能会产生错误。现在,乐趣已经结束,结果是,除了产生错误的一行之外,你发布的所有内容都是完全无关的。再次感谢。代码在某些方面相当荒谬,甚至忽略了您正在询问的特定问题。您声明了strDate,然后给它分配了两个不同的值,然后再也不用它了。您还为
str
分配了两个不同的值,只有第二个值会被使用,而只有第一个值才有意义。因为DateTimePicker1.value的值是Date类型,所以我认为您不需要将其类型转换为Date,请尝试将CType(DateTimePicker1.value,Date)更改为仅DateTimePicker1.value。我看一下你的代码,你填了两次str,哪一个会被执行?最后,除了日期值之外,不能将任何数据存储到日期选择器。
DateTimePicker1.Value = Date.Today