none
DATAGRID 讀取寫入的問題 RRS feed

  • 問題

  • 各位前輩小女子又有功課上的問題來麻煩大大了,假設我在form1裡分別增設了二個datagrid,datagrid及datagrid1且各自連接datagrid.mdb及datagrid1.mdb,假設在datagrid.mdb裡有一資料表(同學名冊),我要如何把我在同學名冊裡選挑選的同學寫至datagrid1.mdb裡,有點類似以下的程式碼:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button4.Click
            ListBox2.Items.Add(ListBox1.Items(ListBox1.SelectedIndex))
        End Sub
    2010年3月4日 上午 01:35

解答

  • 如果妳同學要去的地點不多且固定的話的話,是不是可以用一個很笨的方法,就用CheckBox來做勾選之後全部勾選的就會跑到textbox裡,之後再把textbox內的資料寫到對應的欄位中。
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If CheckBox1.Checked = True Then
                sum1 = sum1 + "台中"
            End If
            If CheckBox2.Checked = True Then
                sum1 = sum1 + "高雄"
            End If
            TextBox1.Text = sum1
        End Sub
    我很程式菜鳥,只是提出我的想法,但我沒試過可不可以用哦。
    • 已標示為解答 陳嘉樺 2010年3月6日 上午 06:04
    2010年3月5日 上午 07:45

所有回覆

  • Hi!

    關於您的問題,可先閱讀 ADO.NET 相關資料,參考

    .NET Framework 開發人員手冊 ADO.NET
    以 DataAdapter 更新資料來源 (ADO.NET)


    小歐ou是個菜鳥工程師,回答不好請不要標我的回覆為解答,有網友熱心回覆也請發問者儘快回應,謝謝
    歡迎參觀我的Blog.NET菜鳥自救會
    • 已提議為解答 Lolota Lee 2010年3月4日 上午 02:48
    • 已取消提議為解答 陳嘉樺 2010年3月4日 上午 04:03
    2010年3月4日 上午 02:19
    版主
  • HI,

    您可以先用DataGridView的SelectedRows屬性取得所有被選中的同學, 再利用ADO.NET的功能新增到DataGrid1.mdb中
    • 已提議為解答 Lolota Lee 2010年3月4日 上午 02:48
    • 已取消提議為解答 陳嘉樺 2010年3月4日 上午 04:03
    2010年3月4日 上午 02:22
  • 大大再請問一下,ADO.NET我研究了一下,可是我還是無法理解裡面的意思,我是想設一個Button,當我按下這個BUUTON後,我在datagrid.mdb所選的人會自動加到datagrid1.mdb裡,還有一個問題就是我還有設二個FORM,裡面一樣是連結datagrid.mdb資料庫,其中一個FORM如下:
    Public Class Form3

        Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged


        End Sub

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button4.Click
            ListBox2.Items.Add(ListBox1.Items(ListBox1.SelectedIndex))
        End Sub

        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            '** ListBox2.Items.Remove(ListBox1.Text)
            '** ListBox2.Items.Remove(TextBox1.Text)
            ListBox2.Items.Remove(ListBox2.Text)
        End Sub

        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            Me.Close()
        End Sub

        Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
            ListBox2.Items.Add(TextBox1.Text)
        End Sub

        Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
            ListBox1.Items.Add(TextBox2.Text)
        End Sub

        Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
            ListBox1.Items.Remove(TextBox2.Text)
        End Sub

        Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
            Me.Close()
           
        End Sub

        Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged

        End Sub

    ----------------------------------------------------------------------------------------------------------------
    另一個如下:
    Public Class Form2

        Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

     

        End Sub

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

        End Sub

        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            Form3.Show()
        End Sub

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim oledbl As New OleDbConnection
            oledbl.ConnectionString = "provider = microsoft.jet.oledb.4.0; data source=x:\125.mdb"
            oledbl.Open()
            If ConnectionState.Open Then
                Dim cmdl As New OleDbCommand
                cmdl.Connection = oledbl
                cmdl.CommandText = "Insert into 同學系統 (姓名,地點,日期,時間,使用者) values ('" + TextBox1.Text + "'" + ",'" + Form3.ListBox2.Text + "'" + ",'" + DateTimePicker1.Text + "'" + ",'" + DateTimePicker2.Text + "'" + ",'" + ComboBox2.Text + "')"
                cmdl.ExecuteNonQuery()
                oledbl.Close()
            End If
            Form1.Show()
            Me.Close()
        End Sub
    End Class
    -----------------------------------------------------------------------------------------------------------------
    這個問題是這樣的,我在FORM3的 ListBox2裡有多筆資料(文字),但當我按下在FORM2的的
    Button1時,資料是會寫入到125.mdb的同學系統資料中的地點,可是只會寫入我在listbox中的第一項資料(文字)
    請問一下我那裡寫錯了,要怎麼改才能把我在listbox2中的資料全部寫入地點欄位中,謝謝教導

    2010年3月4日 上午 04:01
  • 大大再請問一下,ADO.NET我研究了一下,可是我還是無法理解裡面的意思,我是想設一個Button,當我按下這個BUUTON後,我在datagrid.mdb所選的人會自動加到datagrid1.mdb裡,還有一個問題就是我還有設二個FORM,裡面一樣是連結datagrid.mdb資料庫,其中一個FORM如下:
    Public Class Form3

        Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged


        End Sub

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button4.Click
            ListBox2.Items.Add(ListBox1.Items(ListBox1.SelectedIndex))
        End Sub

        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            '** ListBox2.Items.Remove(ListBox1.Text)
            '** ListBox2.Items.Remove(TextBox1.Text)
            ListBox2.Items.Remove(ListBox2.Text)
        End Sub

        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            Me.Close()
        End Sub

        Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
            ListBox2.Items.Add(TextBox1.Text)
        End Sub

        Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
            ListBox1.Items.Add(TextBox2.Text)
        End Sub

        Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
            ListBox1.Items.Remove(TextBox2.Text)
        End Sub

        Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
            Me.Close()
           
        End Sub

        Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged

        End Sub

    ----------------------------------------------------------------------------------------------------------------
    另一個如下:
    Public Class Form2

        Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

     

        End Sub

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

        End Sub

        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            Form3.Show()
        End Sub

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim oledbl As New OleDbConnection
            oledbl.ConnectionString = "provider = microsoft.jet.oledb.4.0; data source=x:\125.mdb"
            oledbl.Open()
            If ConnectionState.Open Then
                Dim cmdl As New OleDbCommand
                cmdl.Connection = oledbl
                cmdl.CommandText = "Insert into 同學系統 (姓名,地點,日期,時間,使用者) values ('" + TextBox1.Text + "'" + ",'" + Form3.ListBox2.Text + "'" + ",'" + DateTimePicker1.Text + "'" + ",'" + DateTimePicker2.Text + "'" + ",'" + ComboBox2.Text + "')"
                cmdl.ExecuteNonQuery()
                oledbl.Close()
            End If
            Form1.Show()
            Me.Close()
        End Sub
    End Class
    -----------------------------------------------------------------------------------------------------------------
    這個問題是這樣的,我在FORM3的 ListBox2裡有多筆資料(文字),但當我按下在FORM2的的
    Button1時,資料是會寫入到125.mdb的同學系統資料中的地點,可是只會寫入我在listbox中的第一項資料(文字)
    請問一下我那裡寫錯了,要怎麼改才能把我在listbox2中的資料全部寫入地點欄位中,謝謝教導

    2010年3月4日 上午 04:04
  • Hi,

    你Insert的Command只有在Button1_Click後執行了一次
    當然只會有一筆
    看你帶的參數都不是ListBox
    應該你有用DataBinding把當前的資料繫到其它控制項顯示

    要全部寫入要馬For迴圈把每一筆資料一個個塞入
    要馬就是用OleDBDataAdapter.Update去做
    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2010年3月4日 上午 04:41

  • MSDN 文件庫很重要
    問題本身越具體, 越容易得到大家的回應
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    2010年3月4日 下午 04:39
    版主
  • 如果妳同學要去的地點不多且固定的話的話,是不是可以用一個很笨的方法,就用CheckBox來做勾選之後全部勾選的就會跑到textbox裡,之後再把textbox內的資料寫到對應的欄位中。
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If CheckBox1.Checked = True Then
                sum1 = sum1 + "台中"
            End If
            If CheckBox2.Checked = True Then
                sum1 = sum1 + "高雄"
            End If
            TextBox1.Text = sum1
        End Sub
    我很程式菜鳥,只是提出我的想法,但我沒試過可不可以用哦。
    • 已標示為解答 陳嘉樺 2010年3月6日 上午 06:04
    2010年3月5日 上午 07:45