none
vb.net 时间和combobox问题 RRS feed

  • 问题

  • Private Sub searchmasa()

            Dim objCon As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\ck\Downloads\Software\Green Tools\vb2005 code\sfmenu\sfmenu\sfmenu\db1.mdb;")

     

            Dim objComm As New OleDbCommand()

            objComm.CommandText = "SELECT * FROM serial where (Masa like '" & TextBox4.Text & " %' )"

            ' 這是一個QUERY STRING 來選取資料的

     

            objComm.Connection = objCon

            Dim adapter As New OleDbDataAdapter(objComm) '選取資料後可以用OleDbDataAdapter 把資料存到DATATABLE

            Dim tbl As New DataTable ' 用來存資料, 等一會可以顯示到DATAGRIDVIEW

     

        

     

            Try

                objCon.Open() ' 開啟ACCESS CONNECTION

                adapter.Fill(tbl) ' 把資料存到DATATABLE

                If tbl.Rows.Count <= 0 Then

                    MsgBox("No related data in database.", MsgBoxStyle.Information, "Search Result")

                    DataGridView1.Visible = False

                Else

                    DataGridView1.DataSource = tbl '之後ASSIGN DATAGRIDVIEW DATA SOURCE E.G. 用剛剛取來的DATA TABLE

                    Exit Sub

                End If

     

            Catch ex As Exception

                MsgBox(ex.Message) '有問題ERROR POP UP ERROR MESSAGE BOX

            Finally

                adapter = Nothing '清理data adapter object

                objComm = Nothing '清理command object

                objCon.Close()  '關掉連線

                objCon = Nothing '清理connection object

            End Try

        End Sub

     

    Private Sub DateTimePicker1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged

            TextBox4.Text = DateTimePicker1.Text

        End Sub

     

     

    1.为什么数据库找不到相关的时间?在数据库里时间的数据类型(Data type)是"date/time",(format)格式是"Long Date".

    textbox4.text=12-August-10

    数据库serial表里的Masa(Field)=12-Aug-10(原本是12-August-10 10:19:21 AM,不过我用long date,所以只显示12-August-10.这样不可以吗?)

     

    2.

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

           

            Dim conn As New OleDbConnection _

                             ("provider=microsoft.jet.oledb.4.0;data source=c:\db1.mdb")

            Dim tbl As New DataTable()

            Dim myadapter As New OleDbDataAdapter("select * from serial", conn)

            conn.Close()

            myadapter.Fill(tbl)

            ComboBox1.DataSource = tbl

            ComboBox1.DisplayMember = "Application_Name"

            ComboBox1.ValueMember = "Serial" 

            conn.Close()

            Label7.Text = ComboBox1.SelectedValue

    End Sub

     

    为什么只能显示第一个combobox的数据?我选择其他数据,label7却没有变化?

    3. 

    Dim objCon As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Application.startuppath & "\db1.mdb;")

    这样写对吗?

    4.RadioButton1.Checked = False '为什么还是会被选择?

    2010年8月12日 3:53

答案

  • 你好

    你的意思是當當試用 DateTimePicker 的 VALUE 來 d查詢DATABASE 時 找不到数据 嗎?

    如果是的話

    是因為用DATETIMEPICKER 時, 他們會包括了時間

    如果時間不一樣的話 這是會找不到數據的

    E.G.

    12-August-10 10:19:21 AM 和 12-August-10 10:20:21 AM 已經是不同

    如果可以的話, 或者你可以在把數據加入到資料庫前轉成 日期, E.G. 不要時間

    你可以 用以下的CODE

    DateTimePicker1.Value.Date ' 這便會只取 你所選取的日期了 [不會有時間的]

    如果你真的要包含時間的話, 我也不知况怎樣解決了

    希望其他高人可以幫到你

    Please correct me if my concept is wrong

     


    Chi
    • 已标记为答案 ckjason 2010年8月12日 8:14
    2010年8月12日 7:29
    版主

全部回复

  •  

    你好

    1.为什么数据库找不到相关的时间?在数据库里时间的数据类型(Data type)是"date/time",(format)格式是"Long Date".

     

    textbox4.text=12-August-10

     

    数据库serial表里的Masa(Field)=12-Aug-10(原本是12-August-10 10:19:21 AM,不过我用long date,所以只显示12-August-10.这样不可以吗?)

     

    其實只要資料庫能保存 日期時間的值, 在VB APPLIATION 中 你便可以用 格式化的方式來改變顯然的資訊

    例如:用

    textbox4.text=DateTimePicker1.Value.ToLongDateString()

     

    格式日期時間 詳情可以參考以下URL

     

    http://msdn.microsoft.com/zh-cn/library/system.datetime_methods(v=VS.71).aspx

     

    在以下URL回覆了, 不知道能不能解決這個問題,  詳情可以參考以下URL

    http://social.microsoft.com/Forums/zh-CN/vbasiczhchs/thread/032714d0-e02d-4a33-854d-965a8291ee7c

    ---

    或者你可以嘗試調動一下你的CODE

    Label7.Text = ComboBox1.SelectedValue '放到最前面

    例如:

     

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

                Label7.Text = ComboBox1.SelectedValue '放到最前面, 這樣當COMOBOX從新綁定資料時便不會影響你SELECTEDVALUE 了

            Dim conn As New OleDbConnection _

                             ("provider=microsoft.jet.oledb.4.0;data source=c:\db1.mdb")

            Dim tbl As New DataTable()

            Dim myadapter As New OleDbDataAdapter("select * from serial", conn)

            conn.Close()

            myadapter.Fill(tbl)

            ComboBox1.DataSource = tbl

            ComboBox1.DisplayMember = "Application_Name"

            ComboBox1.ValueMember = "Serial"

            conn.Close()

         ' Label7.Text = ComboBox1.SelectedValue '放到最前面

     

     End Sub

     

     

    Please Correct me if my concept is wrong

     

    Chi
    2010年8月12日 5:54
    版主
  •  

    你好

     

    1.为什么数据库找不到相关的时间?在数据库里时间的数据类型(Data type)是"date/time",(format)格式是"Long Date".

     

    textbox4.text=12-August-10

     

    数据库serial表里的Masa(Field)=12-Aug-10(原本是12-August-10 10:19:21 AM,不过我用long date,所以只显示12-August-10.这样不可以吗?)

     

    其實只要資料庫能保存 日期時間的值, 在VB APPLIATION 中 你便可以用 格式化的方式來改變顯然的資訊

    例如:用

    textbox4.text=DateTimePicker1.Value.ToLongDateString()

     

    格式日期時間 詳情可以參考以下URL

     

    http://msdn.microsoft.com/zh-cn/library/system.datetime_methods(v=VS.71).aspx

     

     

    在以下URL回覆了, 不知道能不能解決這個問題,  詳情可以參考以下URL

    http://social.microsoft.com/Forums/zh-CN/vbasiczhchs/thread/032714d0-e02d-4a33-854d-965a8291ee7c

    ---

    或者你可以嘗試調動一下你的CODE

    Label7.Text = ComboBox1.SelectedValue '放到最前面

    例如:

     

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

                Label7.Text = ComboBox1.SelectedValue '放到最前面, 這樣當COMOBOX從新綁定資料時便不會影響你SELECTEDVALUE 了

            Dim conn As New OleDbConnection _

                             ("provider=microsoft.jet.oledb.4.0;data source=c:\db1.mdb")

            Dim tbl As New DataTable()

            Dim myadapter As New OleDbDataAdapter("select * from serial", conn)

            conn.Close()

            myadapter.Fill(tbl)

            ComboBox1.DataSource = tbl

            ComboBox1.DisplayMember = "Application_Name"

            ComboBox1.ValueMember = "Serial"

            conn.Close()

         ' Label7.Text = ComboBox1.SelectedValue '放到最前面

     

     End Sub

     

     

    Please Correct me if my concept is wrong

     

    Chi
    Private Sub DateTimePicker1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged
            TextBox4.Text = DateTimePicker1.Value.ToLongDateString()
        End Sub
    还是找不到数据。。。
    2010年8月12日 6:21
  • 你好

    你的意思是當當試用 DateTimePicker 的 VALUE 來 d查詢DATABASE 時 找不到数据 嗎?

    如果是的話

    是因為用DATETIMEPICKER 時, 他們會包括了時間

    如果時間不一樣的話 這是會找不到數據的

    E.G.

    12-August-10 10:19:21 AM 和 12-August-10 10:20:21 AM 已經是不同

    如果可以的話, 或者你可以在把數據加入到資料庫前轉成 日期, E.G. 不要時間

    你可以 用以下的CODE

    DateTimePicker1.Value.Date ' 這便會只取 你所選取的日期了 [不會有時間的]

    如果你真的要包含時間的話, 我也不知况怎樣解決了

    希望其他高人可以幫到你

    Please correct me if my concept is wrong

     


    Chi
    • 已标记为答案 ckjason 2010年8月12日 8:14
    2010年8月12日 7:29
    版主