none
請問如何讓DataGridVeiw傳資料回來時,可以自動增加一列呢? RRS feed

  • 問題

  • 目前我在Form2中有兩個DataGridview,各別有一個Button可以將資料傳到Form1,

    但是現在有一個問題就是如果先從Form2的DataGridView1傳資料到Form1的DataGridView1時,

    在Form1已經有一筆資料了,那再從Form2的DataGridView2傳資料回Form1的DataGridView1

    資料是可以傳回到Form1中,但之前的那筆就會不見,等於被覆蓋過去,

    請問要可如何讓資料不被覆蓋,而再新增的資料,會自動增加一列呢?

     

    PS:有想過用For迴圈,但執行出來,也沒有成功,是我寫錯迴圈的意思嗎?

    Dim i As Integer
            For i = 0 To ds.Tables("B_CprPInvertory").Columns.Count - 1
                DataGridView1.Columns.Add(ds.Tables("B_CprPInvertory").Columns(i).Caption, ds.Tables("B_CprPInvertory").Columns(i).ColumnName.ToString)
            Next

    2007年12月7日 上午 06:53

解答

  •  這樣是否可行

    程式碼區塊
            Form5112.DataGridView1.CurrentRow.Cells(0).Value = comp2
            Form5112.DataGridView1.CurrentRow.Cells(1).Value = comp1
            Form5112.DataGridView1.CurrentRow.Cells(7).Value = comp
            Form5112.DataGridView1.CurrentRow.Cells(2).Value = comp3

     

            Form5112.DataGridView1.DataSource.Rows.add()

     


     

     

    2007年12月7日 上午 08:36

所有回覆

  • 再從Form2的DataGridView2傳資料回Form1的DataGridView1

    資料

     

    這段程式 沒看到 ?

    2007年12月7日 上午 07:35
  • 不好意思,程式有點長,以下的程式,是代表Form2的DataGridview2要傳回去的Code

    但是這段傳回去Form1是沒有問題的,是這樣少打了什麼嗎?

    如果,在Form2的DataGridView1一樣,需要傳回去多筆資料回去的話,

    Form1的DataGridView1的列也是會被覆蓋?

     

    程式碼區塊

    Private Sub btnInsertBatch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInsertBatch.Click
            '批號,加入清單按鈕
            Dim cmd As New SqlClient.SqlCommand("SELECT  A_Component.ComponentID AS 物料編號,B_CprPInvertory.LocationID AS 物料格編號,B_CprPInvertory.LocUpID AS 儲位編號,B_CprPInvertory.LocTopID AS 倉庫編號,B_CprPInvertory.DPNum AS 庫存量,A_Component.Component AS 物料名稱,A_Component.UPrice AS 批號單價,B_CprPInvertory.BatchNo FROM A_Component INNER JOIN  B_CprPInvertory ON A_Component.ComponentID = dbo.B_CprPInvertory.ComponentID WHERE B_CprPInvertory.BatchNo  like '%" + Me.TextBox2.Text + "%'", cn)
            da.SelectCommand = cmd
            da.Fill(ds, "BatchNo2")


            Dim Batch As String         '宣告Batch物件,放批號的值
            Batch = ds.Tables("BatchNo2").Rows(0).Item("BatchNo").ToString

     

            If TextBox2.Text <> Batch OrElse TextBox2.Text = "" Then
                MessageBox.Show("你尚未查詢物料批號資料,無法加入倉管作業清單", "維修管理系統", MessageBoxButtons.OK)
            End If


            '宣告comp,comp1,comp2,comp3四個物件,傳回去Form5112(新增發料作業)下的DataGridView1
            Dim comp As Object = TextBox2.Text   '批號
            Dim comp1 As Object = Me.DataGridView3.CurrentRow.Cells(0).Value '物料編號
            Dim comp2 As Object = Me.DataGridView3.CurrentRow.Cells(1).Value '物料格編號
            Dim comp3 As Integer = "0" '設發料數量為0
            Form5112.DataGridView1.CurrentRow.Cells(0).Value = comp2
            Form5112.DataGridView1.CurrentRow.Cells(1).Value = comp1
            Form5112.DataGridView1.CurrentRow.Cells(7).Value = comp
            Form5112.DataGridView1.CurrentRow.Cells(2).Value = comp3
            Me.Close()
        End Sub

     

     

     

    2007年12月7日 上午 07:55
  •  

    試試看 是否可行 

    程式碼區塊

     

     

     

    Private Sub btnInsertBatch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInsertBatch.Click
            '批號,加入清單按鈕
            Dim cmd As New SqlClient.SqlCommand("SELECT  A_Component.ComponentID AS 物料編號,B_CprPInvertory.LocationID AS 物料格編號,B_CprPInvertory.LocUpID AS 儲位編號,B_CprPInvertory.LocTopID AS 倉庫編號,B_CprPInvertory.DPNum AS 庫存量,A_Component.Component AS 物料名稱,A_Component.UPrice AS 批號單價,B_CprPInvertory.BatchNo FROM A_Component INNER JOIN  B_CprPInvertory ON A_Component.ComponentID = dbo.B_CprPInvertory.ComponentID WHERE B_CprPInvertory.BatchNo  like '%" + Me.TextBox2.Text + "%'", cn)


            da.SelectCommand = cmd


            da.Fill(ds, "BatchNo2")


            Dim Batch As String         '宣告Batch物件,放批號的值


            Batch = ds.Tables("BatchNo2").Rows(0).Item("BatchNo").ToString

     

            If TextBox2.Text <> Batch OrElse TextBox2.Text = "" Then
                MessageBox.Show("你尚未查詢物料批號資料,無法加入倉管作業清單", "維修管理系統", MessageBoxButtons.OK)
            End If


            '宣告comp,comp1,comp2,comp3四個物件,傳回去Form5112(新增發料作業)下的DataGridView1
            Dim comp As Object = TextBox2.Text   '批號
            Dim comp1 As Object = Me.DataGridView3.CurrentRow.Cells(0).Value '物料編號
            Dim comp2 As Object = Me.DataGridView3.CurrentRow.Cells(1).Value '物料格編號
            Dim comp3 As Integer = "0" '設發料數量為0
            Form5112.DataGridView1.CurrentRow.Cells(0).Value = comp2
            Form5112.DataGridView1.CurrentRow.Cells(1).Value = comp1
            Form5112.DataGridView1.CurrentRow.Cells(7).Value = comp
            Form5112.DataGridView1.CurrentRow.Cells(2).Value = comp3

     

            Form5112.DataGridView1.Rows.add()

     


            Me.Close()
        End Sub

     

     

     

    2007年12月7日 上午 08:09
  • 出現錯誤訊息:當控制項已繫結資料時,無法以程式設計的方式將資料列加入 DataGridView 的資料列集合。

    因為出現這個錯誤訊息,所以貼上Form1_Load的部份程式碼。

     

    程式碼區塊

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

           Dim cmd As New SqlClient.SqlCommand
            cmd = New SqlClient.SqlCommand("SELECT B_CprPInvertory.LocationID AS 物料格編號,A_Component.ComponentID AS 物料編號,B_CprPInvertory.DPNum AS 發料數量,B_CprPInvertory.DepNo2 AS 領料部門,B_CprPInvertory.Man2 AS 領料人員,B_CprPInvertory.SysID AS 系統編號,B_CprPInvertory.EquipID AS 設備編號,B_CprPInvertory.BatchNo AS 批號,B_CprPInvertory.Remark AS 備註 FROM  A_Component INNER JOIN B_CprPInvertory ON A_Component.ComponentID = B_CprPInvertory.ComponentID ", cn)
            da.SelectCommand = cmd
            da.Fill(ds, "B_CprPInvertory")
           
            Dim builder As SqlCommandBuilder = New SqlCommandBuilder(da)
            da.Update(ds, "B_CprPInvertory")
            Dim i As Integer
           
    ds.Tables("B_CprPInvertory").Clear()
            DataGridView1.Columns.Clear()
            DataGridView1.DataSource = ds.Tables("B_CprPInvertory")

     

     

    2007年12月7日 上午 08:29
  •  這樣是否可行

    程式碼區塊
            Form5112.DataGridView1.CurrentRow.Cells(0).Value = comp2
            Form5112.DataGridView1.CurrentRow.Cells(1).Value = comp1
            Form5112.DataGridView1.CurrentRow.Cells(7).Value = comp
            Form5112.DataGridView1.CurrentRow.Cells(2).Value = comp3

     

            Form5112.DataGridView1.DataSource.Rows.add()

     


     

     

    2007年12月7日 上午 08:36