none
有關DataGridView丟回的值? RRS feed

  • 問題

  • 請問~~~~~~~~~~

    我Form511的DataGridView1的欄位為:

    物料編號/物料格編號/庫存量/倉庫編號/物料名稱

     

    而Form5111的DataGridView 的欄位為:

    物料格編號/物料編號/物料名稱/廠商名稱/入庫量

     

    我已經成功查詢到"物料編號"

    那我要如何將在Form5111找到的"物料格編號,物料編號,物料名稱"

    丟回到Form511呢?

     

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            '將指定到的物料編號加入倉管清單
            Dim dv As New DataView
            dv.Table = ds.Tables("A_Component,B_CprPInvertory")
            dv.RowFilter = "物料編號='" & TextBox1.Text & "'"

            Form511.DataSource=dv                       //用DataSource會將所有的值丟回到Form511

                                                                        要用什麼語法才能丟回其中三個欄位的值呢?

     

    2007年11月12日 上午 07:40

解答

  • 所以囉

    你一開始 就不講清楚 才變成要搞這麼久

     

     

    //    Form5111.VB

     

    程式碼區塊

    Public Sub ChangCell019(ByVal v1 As Object, ByVal v2 As Object, ByVal v3 As Object)

     

            MessageBox.Show("1: Form5111-ChangCell019 Proc Start   ")

     

     

            If Me.DataGridView1.Rows.Count <= 0 Then

                MessageBox.Show("Form5111-DataGridView1.Rows.Add ")
                Me.DataGridView1.Rows.Add()
            End If

     

          

           MessageBox.Show("2: Form5111-ReceiveData=" + v1 + "," + v2 + "," + v3)

                
            Me.DataGridView1.Rows(0).Cells(0).Value = v1
            Me.DataGridView1.Rows(0).Cells(1).Value = v2
            Me.DataGridView1.Rows(0).Cells(9).Value = v3


     

           MessageBox.Show("3: Form5111-ChangCell019 Proc End   ")


       End Sub

     

     

     

     

    2007年11月14日 上午 07:34

所有回覆

  • 你要不要先查查論壇上 Form 互相傳值的討論阿...?

     

    2007年11月12日 上午 07:54
  • 請問有沒有更詳細的回答??

    因為我找不到和我要的相關資訊!!

    謝謝!!

     

    2007年11月12日 上午 09:19
  • 論壇上關於 "Form 傳值" 、"表單 傳值" 的討論值實在太多了...

     

    不管是 DataGridView 或是 TextBox 或是 comboBox 等等...

    甚至是一個值兩個值三個值...觀念都是差不多的...

     

    ex 不同的form傳值請問form之間互傳資料的問題

    2007年11月12日 上午 11:29
  •  

    你是否是  要更新  Form511的DataGridView1的 物料格編號,物料編號,物料名稱 欄位

    還是要 新增 一筆  Form511的DataGridView1的 物料格編號,物料編號,物料名稱 欄位資料

     

    2007年11月12日 下午 03:42
  • 目前我沒有要更新資料,目前我只要將查詢到的資料(某幾個欄位值)帶到另一個Form

     

    2007年11月13日 上午 01:33
  • 最簡單的方式,是直接在Form5111那裡宣告static變數,如
    public static i = 168;
    在form511那裡,可以用 textbox.text = Form5111.i.ToString(); 來獲取值
    或是利用Constructor來處理,如
    在button1_click中
    Form511 temp = new Form511(168);
    temp.Show();
     
    在Form511的建構函式中
    public Form511(int i)
    {
       InitializeComponent();
       Textbox1.text = i.ToString();
    }
    2007年11月13日 上午 01:48
  • 各位大大~~~~~~~~~

    可能是我說的不夠清楚!!

    我說的都只是在DataGridView裡把值都回到另一個DataGridView只是利用button這個動作而以,

    並沒有在任何的Textbox裡將值丟回去哦!!

    我查到的都是用在C#寫的,而我寫的是在visual stuido2005,所以語言上還是不同,

    因為我是才剛學程式,所以我還不能將C#的語法轉到VB.NET ,不好意思..........

     

     

     

    程式碼區塊

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            '將指定到的物料編號加入倉管清單
            Dim dv As New DataView
            dv.Table = ds.Tables("A_Component,B_CprPInvertory")
            dv.RowFilter = "物料編號='" & TextBox1.Text & "'"


            v1 = Me.DataGridView1.CurrentRow.Cells(1)
            v2 = Me.DataGridView1.CurrentRow.Cells(0)
            v3 = Me.DataGridView1.CurrentRow.Cells(6)

     

            Form5111.DataGridView1.CurrentRow.Cells(0) = v1
            Form5111.DataGridView1.CurrentRow.Cells(1) = v2
            Form5111.DataGridView1.CurrentRow.Cells(9) = v3

           
            Me.Close()
        End Sub

     

     

     我暫定將v1,v2,v3三個變數設定到Form511裡0.1.9欄位,

    但我宣告了inteter會出現

    錯誤 1 型別 'System.Windows.Forms.DataGridViewCell' 的值無法轉換成 'Integer'。

    宣告了string就會出現

    錯誤 1 型別 'System.Windows.Forms.DataGridViewCell' 的值無法轉換成 'String'。

    請問我要怎麼解決呢??


     

    2007年11月13日 上午 02:17
  • TRY TRY SEE

    程式碼區塊

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            '將指定到的物料編號加入倉管清單
            Dim dv As New DataView
            dv.Table = ds.Tables("A_Component,B_CprPInvertory")
            dv.RowFilter = "物料編號='" & TextBox1.Text & "'"


            Dim v1 As Object  = Me.DataGridView1.CurrentRow.Cells(1).Value
            Dim v2 As Object = Me.DataGridView1.CurrentRow.Cells(0).Value
            Dim v3 As Object = Me.DataGridView1.CurrentRow.Cells(6).Value

     

            Form5111.DataGridView1.CurrentRow.Cells(0).Value = v1
            Form5111.DataGridView1.CurrentRow.Cells(1).Value = v2
            Form5111.DataGridView1.CurrentRow.Cells(9).Value = v3

           
            Me.Close()
        End Sub

     

     

    2007年11月13日 上午 02:30
  • Form5111.DataGridView1.CurrentRow.Cells(0).Value = v1 這行出現錯誤
    未將物件參考設定為物件的執行個體

     

    並已經宣告了為什麼還要設執行個體呢?

    2007年11月13日 上午 03:17

  • If v1 <> Nothing Then
                Form5111.DataGridView1.CurrentRow.Cells(0).Value = v1
     End If
    2007年11月13日 上午 03:27
  • cmf~~~~~~~~~~

    還是不行也~~~~問題還是一樣會出現同樣的錯誤!!

    2007年11月13日 上午 03:46
  • 我這邊不會ㄋㄟ

     

    該不會是 你的  Form5111.DataGridView1  是 Nothing  ?

     

    先測試一下  V1 是否有值

     

     If v1 <> Nothing Then
                MessageBox.Show(v1)

     End If

     

    若V1 沒問題 就是 你的 Form5111  或  Form5111.DataGridView1  未將物件參考設定為物件的執行個體

     

     

    2007年11月13日 上午 03:55
  • 那請問在Form5111又該如何作呢?

    剛那個問題應該是在Form5111沒有參考物件執行個體!!

     

    2007年11月13日 上午 05:12
  •  

     

     

     

    程式碼區塊

     

    Private Function GetForm5111() As Form5111

            Dim x As Integer

            For x = 0 To (Application.OpenForms.Count) - 1
                If Application.OpenForms.Item(x).Name = "Form5111" Then
                    Return Application.OpenForms.Item(x)
                End If

            Next

            Return Nothing
        End Function

     

     

     

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            '將指定到的物料編號加入倉管清單
            Dim dv As New DataView
            dv.Table = ds.Tables("A_Component,B_CprPInvertory")
            dv.RowFilter = "物料編號='" & TextBox1.Text & "'"


            Dim v1 As Object  = Me.DataGridView1.CurrentRow.Cells(1).Value
            Dim v2 As Object = Me.DataGridView1.CurrentRow.Cells(0).Value
            Dim v3 As Object = Me.DataGridView1.CurrentRow.Cells(6).Value

     

           Dim M As Form5111


           M = GetForm5111()

     

           If M IsNot Nothing  Then

               M.DataGridView1.CurrentRow.Cells(0).Value = v1
               M.DataGridView1.CurrentRow.Cells(1).Value = v2
               M.DataGridView1.CurrentRow.Cells(9).Value = v3

     

           End If

     

           
            Me.Close()


        End Sub

     

     

     

    2007年11月13日 上午 05:34
  • 回到Form5111執行

    Private Function GetForm5111() As Form5111

            Dim x As Integer

            For x = 0 To (Application.OpenForms.Count) - 1
                If Application.OpenForms.Item(x).Name = "Form5111" Then
                    Return Application.OpenForms.Item(x)
                End If

            Next

            Return Nothing
        End Function

    Form51111會出現

     M = GetForm5111()
    名稱 'GetForm5111' 未宣告。 

     

    ???這是怎麼回事呢?

    2007年11月13日 上午 06:06
  •  

    你把  GetForm5111  你放在哪一個檔案之中呢

     

     

    你的  Private Sub Button2_Click 是放在 哪一個檔案之中呢

     

     

     

    報告 這些CODE 我都已經 執行過囉   我這邊是沒問題喔   ︿︿

     

    2007年11月13日 上午 06:11
  •  

    GetForm5111~~~~~~~~~~~這個不是在Form5111作的嗎?

     

    Private Sub Button2_Click ~~~~~~~~~~~~~是在Form51111作的丫

     

    將button指定到的變數v1.v2.v3,傳到Form5111中,不對嗎?

    我也有將GetForm5111改回到Form51111中,但這樣的話,

    又會在M.DataGridView1.CurrentRow.Cells(0).Value = v1~~~~~~~並未將物件參考設定為物件的執行個體

    這樣又不對啦!!!

    我到底是那裡做錯了呢??

     

    2007年11月13日 上午 06:42
  • 好沒關係 

    請跟我 放一樣的位置

     

    程式碼區塊

     

    Public Class Form51111

     

        Private Function GetForm5111() As Form5111

            Dim x As Integer

            For x = 0 To (Application.OpenForms.Count) - 1
                If Application.OpenForms.Item(x).Name = "Form5111" Then
                    Return Application.OpenForms.Item(x)
                End If

            Next

            Return Nothing
        End Function

     

        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            '將指定到的物料編號加入倉管清單
            Dim dv As New DataView
            dv.Table = ds.Tables("A_Component,B_CprPInvertory")
            dv.RowFilter = "物料編號='" & TextBox1.Text & "'"


            Dim v1 As Object = Me.DataGridView1.CurrentRow.Cells(1).Value
            Dim v2 As Object = Me.DataGridView1.CurrentRow.Cells(0).Value
            Dim v3 As Object = Me.DataGridView1.CurrentRow.Cells(6).Value

     

            Dim M As Form5111


            M = GetForm5111()

     

            If M IsNot Nothing Then

                M.DataGridView1.CurrentRow.Cells(0).Value = v1
                M.DataGridView1.CurrentRow.Cells(1).Value = v2
                M.DataGridView1.CurrentRow.Cells(9).Value = v3

     

            End If

     


            Me.Close()


        End Sub

     

    End Class

     

     

     

    2007年11月13日 上午 06:53
  • cmf~~~~~~~~

    這一行還是會出現"並未將物件參考設定為物件的執行個體"~~~~~~~~~~錯誤也!!

    M.DataGridView1.CurrentRow.Cells(0).Value = v1

     

    是因為沒有在Form5111設定使用變數嗎?

     

    2007年11月13日 上午 07:13
  • 太神奇了 ︿︿

     

    可否 貼一下  Form5111.VB  及 Form51111.VB  檔案 內容 來看一下

     

     

     

     

     

     

    2007年11月13日 上午 07:22
  • 這是Form51111

    程式碼區塊

    Private Function GetForm5111() As Form5111

            Dim x As Integer

            For x = 0 To (Application.OpenForms.Count) - 1
                If Application.OpenForms.Item(x).Name = "Form5111" Then
                    Return Application.OpenForms.Item(x)
                End If

            Next

            Return Nothing
        End Function

     

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            '將指定到的物料編號加入倉管清單
            Dim dv As New DataView
            dv.Table = ds.Tables("B_CprPInvertory")
            dv.RowFilter = "物料編號='" & TextBox1.Text & "'"
            Dim v1 As Object = Me.DataGridView1.CurrentRow.Cells(1).Value
            Dim v2 As Object = Me.DataGridView1.CurrentRow.Cells(0).Value
            Dim v3 As Object = Me.DataGridView1.CurrentRow.Cells(5).Value

            Dim M As Form5111

            M = GetForm5111()

            If M IsNot Nothing Then

                M.DataGridView1.CurrentRow.Cells(0).Value = v1
                M.DataGridView1.CurrentRow.Cells(1).Value = v2
                M.DataGridView1.CurrentRow.Cells(9).Value = v3

            End If
            Form5111.Show()

            Me.Close()


        End Sub

     

     

    這是Form5111

    程式碼區塊

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

     

    cmd = New SqlClient.SqlCommand("SELECT  B_CprPInvertory.LocationID AS 物料格編號,A_Component.ComponentID AS 物料編號,B_CprPInvertory.DPNum AS 入庫數量,B_CprPInvertory.FormID AS 請購單編號,B_CprPInvertory.VendorName AS 廠商名稱,A_Component.UPrice AS 單價,B_CprPInvertory.BatchNo AS 批號,B_CprPInvertory.Remark AS 備註,A_Component.Component AS 物料名稱 FROM A_Component INNER JOIN B_CprPInvertory ON A_Component.ComponentID = dbo.B_CprPInvertory.ComponentID", cn)
            da.SelectCommand = cmd
            da.Fill(ds, "A_component")
            ds.Tables("A_component").Clear()
            DataGridView1.DataSource = ds.Tables("A_component")

     

     

     

     

    2007年11月13日 上午 08:10
  • 怎麼沒看到 你 建立 Form5111 視窗 及 Form51111 視窗 的程式碼 ?

    2007年11月13日 上午 08:17
  • 這是Form51111的,Form5111的剛剛那個就是了...

    程式碼區塊

    Public Class Form51111
        Dim cn As New SqlClient.SqlConnection("server=localhost;database=cmms1;uid=sa;password=sescsapw")
        Dim cmd As New SqlClient.SqlCommand("select Top 1 A_Component.ComponentID as 物料編號,B_CprPInvertory.LocationID as 物料格編號, B_CprPInvertory.LocUpID as 儲位編號,B_CprPInvertory.LocTopID as 倉庫編號,A_Component.num as 庫存量,A_Component.Component as 物料名稱  from CMMS1.dbo.A_component inner join B_CprPInvertory on A_Component.ComponentID=B_CprPInvertory.ComponentID", cn)
        Dim da As SqlClient.SqlDataAdapter
        Dim ds As DataSet
        Private Function GetForm5111() As Form5111

            Dim x As Integer

            For x = 0 To (Application.OpenForms.Count) - 1
                If Application.OpenForms.Item(x).Name = "Form5111" Then
                    Return Application.OpenForms.Item(x)
                End If

            Next

            Return Nothing
        End Function

        Private Sub Form51111_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            '查詢物料編號
            ds = New DataSet
            da = New SqlDataAdapter
            Dim i As Integer
            da.SelectCommand = cmd
            da.Fill(ds, "A_Component")
            For i = 0 To ds.Tables("A_Component").Columns.Count - 1
                DataGridView1.Columns.Add(ds.Tables("A_Component").Columns(i).Caption, ds.Tables("A_component").Columns(i).ColumnName.ToString)

            Next
        End Sub

     

     

    2007年11月13日 上午 08:28
  • Form5111 是你的應用程式的主視窗嗎

     

     

    還是沒看到 建立 Form51111  執行個體 的程式碼

     

    如同下列 這個

     

    Dim   F  As New Form51111()

     

     

     

    2007年11月13日 上午 08:41
  • Form5111是我的主視窗

    你說的是下面這個嗎?

     

    程式碼區塊

    cmd = New SqlClient.SqlCommand("SELECT  B_CprPInvertory.LocationID AS 物料格編號,A_Component.ComponentID AS 物料編號,B_CprPInvertory.DPNum AS 入庫數量,B_CprPInvertory.FormID AS 請購單編號,B_CprPInvertory.VendorName AS 廠商名稱,A_Component.UPrice AS 單價,B_CprPInvertory.BatchNo AS 批號,B_CprPInvertory.Remark AS 備註,A_Component.Component AS 物料名稱 FROM A_Component INNER JOIN B_CprPInvertory ON A_Component.ComponentID = dbo.B_CprPInvertory.ComponentID", cn)
            da.SelectCommand = cmd
            da.Fill(ds, "A_component")
            ds.Tables("A_component").Clear()
            DataGridView1.DataSource = ds.Tables("A_component")
            Dim f51 As New Form51111()
            f51.DataGridView1.CurrentRow.Cells(0) = Me.DataGridView1.CurrentRow.Cells(1)

     

     

    2007年11月13日 上午 08:57
  •  新手上路min 寫信:

    Form5111是我的主視窗

    你說的是下面這個嗎?

     

    程式碼區塊

    cmd = New SqlClient.SqlCommand("SELECT  B_CprPInvertory.LocationID AS 物料格編號,A_Component.ComponentID AS 物料編號,B_CprPInvertory.DPNum AS 入庫數量,B_CprPInvertory.FormID AS 請購單編號,B_CprPInvertory.VendorName AS 廠商名稱,A_Component.UPrice AS 單價,B_CprPInvertory.BatchNo AS 批號,B_CprPInvertory.Remark AS 備註,A_Component.Component AS 物料名稱 FROM A_Component INNER JOIN B_CprPInvertory ON A_Component.ComponentID = dbo.B_CprPInvertory.ComponentID", cn)
            da.SelectCommand = cmd
            da.Fill(ds, "A_component")
            ds.Tables("A_component").Clear()
            DataGridView1.DataSource = ds.Tables("A_component")
            Dim f51 As New Form51111()
            f51.DataGridView1.CurrentRow.Cells(0) = Me.DataGridView1.CurrentRow.Cells(1)

     

     

     

     

    是的 !

     

    當  Form5111  載入時 也同時   顯示 Form51111  視窗嗎 ?

     

     

     

     

    2007年11月13日 上午 09:08
  • 不會同時載入,而是有設另一個button去將Form51111秀出來

     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            '查詢物料儲位
            Form51111.Show()

        End Sub

     

    按下button2後才會出現Form51111的畫面,而在Form51111查詢後按下"加入清單button"後,才會將某幾個欄位傳回到Form5111的DataGridView裡!

     

    2007年11月13日 上午 09:20
  • Form51111.Show()

     

    這樣寫 不會發生錯誤嗎?

     

     

    程式碼區塊

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            '查詢物料儲位

           Dim f51 As New Form51111()
            f51.DataGridView1.CurrentRow.Cells(0) = Me.DataGridView1.CurrentRow.Cells(1)


            f51.Show()

     

        End Sub

     

     

    2007年11月13日 上午 09:26
  • 這裡不會有錯丫,因為這個button只是要讓Form51111另外show出來,並不影響到Form5111丫!!

    真正影響的應該是在Form51111裡的button2(加入清單)吧!!

    因為用DataGridView.DataSource=dv

    是可以把在Form51111找到的值全部傳回去,但我現在只要傳回去第0.1.5行的欄位值!!

    所以不會有錯丫!!

     

    dv~~~在前面有宣告它了!!

     

    如果在button2'查詢物料儲位

    寫f51.DataGridView1.CurrentRow.Cells(0) = Me.DataGridView1.CurrentRow.Cells(1)
    一樣會出現在錯誤丫!!

    因為button2只是讓Form51111秀出來,所以不應該給它其它指令吧??

    2007年11月13日 上午 09:34
  • 我把問題簡化...你試著跑跑看...

    程式碼區塊

    using System;
    using System.Data;
    using System.Windows.Forms;

     

    namespace WindowsApplication1
    {
        public partial class Form511 : Form
        {
            public Form511()
            {
                InitializeComponent();
            }

     

            private void Form511_Load(object sender, EventArgs e)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("A", typeof (string));
                dt.Columns.Add("B", typeof (string));
                dt.Columns.Add("C", typeof (int));
                dt.Columns.Add("D", typeof (string));
                dt.Columns.Add("E", typeof (string));

                dt.Rows.Add("1", "2", 3, "4", "5");
                dt.Rows.Add("2", "3", 4, "5", "1");
                dt.Rows.Add("3", "4", 5, "1", "2");
                dt.Rows.Add("4", "5", 1, "2", "3");
                dt.Rows.Add("5", "1", 2, "3", "4");

                dataGridView1.DataSource = dt;
            }

     

            private void button1_Click(object sender, EventArgs e)
            {
                Form5111 f5111 = new Form5111();
                f5111.f511 = this;
                f5111.Show();
            }

     

            public void changeDataGridView(string id, string one, int two, string three)
            {
                int pos = 0;
                foreach (DataGridViewRow dgvw in dataGridView1.Rows)
                {
                    if (dataGridView1.Rows[pos].Cells[0].Value.ToString() == id)
                    {
                        break;
                    }
                    else
                    {
                        pos++;
                    }
                }

                dataGridView1.Rows[pos].Cells["A"].Value = one;
                dataGridView1.Rows[pos].Cells["C"].Value = two;
                dataGridView1.Rows[pos].Cells["E"].Value = three;

     

                dataGridView1.CurrentCell = dataGridView1[0, pos];
                dataGridView1.Rows[pos].Selected = true;
            }
        }
    }

     

     

    程式碼區塊

    using System;
    using System.Windows.Forms;

     

    namespace WindowsApplication1
    {
        public partial class Form5111 : Form
        {
            public Form5111()
            {
                InitializeComponent();
            }

     

            internal Form511 f511;

            private void button1_Click(object sender, EventArgs e)
            {
                // a miracle occurs, I got value
                f511.changeDataGridView("3", "three", -5, "two");
            }
        }
    }

     

     

    2007年11月13日 上午 11:34
  •  新手上路min 寫信:

     

     

    dv~~~在前面有宣告它了!!

     

     

    你前面有說 Form51111 在   dv~~~前面有宣告它嗎 !!     

     

    一些變數 只有你知  誰會知

     

    你要說明清楚  別人才能 幫你 找出  問題與如禾解決

     

    //    Form5111.VB

    程式碼區塊

     

     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            '查詢物料儲位

            Form51111.SetMainDataForm(Me) 
            Form51111.Show()

    End Sub

    Public Sub ChangCell019(ByVal v1 As Object, ByVal v2 As Object, ByVal v3 As Object)

                Me.DataGridView1.CurrentRow.Cells(0).Value = v1
                Me.DataGridView1.CurrentRow.Cells(1).Value = v2
                Me.DataGridView1.CurrentRow.Cells(9).Value = v3

    End Sub

     

     


     

       

     

     

     

    // IN   Form51111.VB

    程式碼區塊

     

       Private fMainDataForm As Form5111

           

       Private Sub SetMainDataForm(ByVal f As Form5111)

            fMainDataForm = f

       End Sub

     

      

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            '將指定到的物料編號加入倉管清單
            Dim dv As New DataView
            dv.Table = ds.Tables("B_CprPInvertory")
            dv.RowFilter = "物料編號='" & TextBox1.Text & "'"


            Dim v1 As Object = Me.DataGridView1.CurrentRow.Cells(1).Value
            Dim v2 As Object = Me.DataGridView1.CurrentRow.Cells(0).Value
            Dim v3 As Object = Me.DataGridView1.CurrentRow.Cells(5).Value

     

            If fMainDataForm IsNot Nothing Then

                fMainDataForm.ChangCell019(v1,v2,v3)

                fMainDataForm.Show()

     

            End If

     

            Me.Close()


        End Sub



     

    2007年11月13日 下午 01:48
  • chhuang~~~~~~~~~~~~~~先謝謝你的指教!!

    但你給我的語法好像不是VB.NET,好像是C#

    因為我是初學者,所以還沒辦法將語法轉換過來VB.NET~~~~~~~~~不好意思!!

     

    2007年11月14日 上午 01:07
  • 參考看看:

    (1) Convert VB.NET to C# (互轉)

    (2) Convert VB.NET code to C#

    (3) Free Code Translation for .NET (互轉)

     

    2007年11月14日 上午 01:10
  •  新手上路min 寫信:

    chhuang~~~~~~~~~~~~~~先謝謝你的指教!!

    但你給我的語法好像不是VB.NET,好像是C#

    因為我是初學者,所以還沒辦法將語法轉換過來VB.NET~~~~~~~~~不好意思!!

     

     

    新手上路min  先試試 我上面給你的  VB   CODE

    若有問題 記得通知我喔 

     

    2007年11月14日 上午 01:19
  • 程式勞工~~~~~~~~~

    Form51111.SetMainDataForm(Me) 

    這行會出現無法在此內容中存取 'ss2.Form51111.Private Sub SetMainDataForm(f As Form5111)',因為它是 'Private'。 

     

    如果將這行先暫時隱藏起來的話,又會對 Dim v1 As Object = Me.DataGridView1.CurrentRow.Cells(1).Value

    出現錯誤"並未將物件參考設定為物件的執行個體"

     

    為什麼會這樣呢??

    2007年11月14日 上午 01:23
  • HI 

     

    改成這樣

     

    //  Form51111.VB

    程式碼區塊

    Public Sub SetMainDataForm(ByVal f As Form5111)

            fMainDataForm = f

        End Sub

     

     

     

    若還有問題  記得回報通知我喔 
    2007年11月14日 上午 01:31
  • 程式勞工~~~~~~~~~

     

    在Form51111的 Dim v1 As Object = Me.DataGridView1.CurrentRow.Cells(1).Value
    出現錯誤"並未將物件參考設定為物件的執行個體"

     

    在Frorm5111的.... Me.DataGridView1.CurrentRow.Cells(0).Value = v1

    也會出現錯誤"並未將物件參考設定為物件的執行個體"

    2007年11月14日 上午 01:42
  •  

    // Form51111.VB

    程式碼區塊

       Private fMainDataForm As Form5111

           

       Public Sub SetMainDataForm(ByVal f As Form5111)

            fMainDataForm = f

       End Sub

     

      

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            '將指定到的物料編號加入倉管清單
            Dim dv As New DataView
            dv.Table = ds.Tables("B_CprPInvertory")
            dv.RowFilter = "物料編號='" & TextBox1.Text & "'"

     


            Dim v1 As Object
            Dim v2 As Object
            Dim v3 As Object

     

            If Me.DataGridView1.CurrentRow.Cells(1).Value <> Nothing Then
                v1 = Me.DataGridView1.CurrentRow.Cells(1).Value
            End If

     

            If Me.DataGridView1.CurrentRow.Cells(0).Value <> Nothing Then
                v2 = Me.DataGridView1.CurrentRow.Cells(0).Value
            End If

     

            If Me.DataGridView1.CurrentRow.Cells(5).Value <> Nothing Then
                v3 = Me.DataGridView1.CurrentRow.Cells(5).Value
            End If

     

            If fMainDataForm IsNot Nothing Then

                fMainDataForm.ChangCell019(v1,v2,v3)

                fMainDataForm.Show()

     

            End If


     

           Me.Close()


        End Sub

     

     

           

    2007年11月14日 上午 01:54
  • fMainDataForm.ChangCell019(v1, v2, v3)~~~~~~~~這行會出現

    警告 1 變數 'v1' 已在指派值之前使用。可能會在執行階段產生 null 參考例外狀況。 

    2007年11月14日 上午 02:15
  •     

    程式碼區塊

            Dim v1 As New Object
            Dim v2 As New Object
            Dim v3 As New Object

     

            If Me.DataGridView1.CurrentRow.Cells(1).Value <> Nothing Then
                v1 = Me.DataGridView1.CurrentRow.Cells(1).Value
            Else
                v1 = "=.="
            End If

            If Me.DataGridView1.CurrentRow.Cells(0).Value <> Nothing Then
                v2 = Me.DataGridView1.CurrentRow.Cells(0).Value
            Else
                v2 = "=.="

            End If

            If Me.DataGridView1.CurrentRow.Cells(5).Value <> Nothing Then
                v3 = Me.DataGridView1.CurrentRow.Cells(5).Value
            Else
                v3 = "=.="
            End If

     

     

    2007年11月14日 上午 02:27
  • 程式勞工~~~~~~~~不好意思!!

    這行If Me.DataGridView1.CurrentRow.Cells(1).Value <> Nothing Then

    還是會出現並未將物件參考設定為物件的執行個體

    這個錯誤也~~~怎麼會這樣呢?

    2007年11月14日 上午 02:53
  •    If Me.DataGridView1 Is Nothing Then
                MessageBox.Show("DataGridView1 Is Nothing ")
                Return
         End If
           

     

          If Me.DataGridView1.CurrentRow Is Nothing Then
                MessageBox.Show("DataGridView1.CurrentRow Is Nothing ")
                Return
         End If

     

           Dim v1 As New Object
            Dim v2 As New Object
            Dim v3 As New Object

     

            If Me.DataGridView1.CurrentRow.Cells(1).Value <> Nothing Then
                v1 = Me.DataGridView1.CurrentRow.Cells(1).Value
            Else
                v1 = "=.="
            End If

            If Me.DataGridView1.CurrentRow.Cells(0).Value <> Nothing Then
                v2 = Me.DataGridView1.CurrentRow.Cells(0).Value
            Else
                v2 = "=.="

            End If

            If Me.DataGridView1.CurrentRow.Cells(5).Value <> Nothing Then
                v3 = Me.DataGridView1.CurrentRow.Cells(5).Value
            Else
                v3 = "=.="
            End If

     

    2007年11月14日 上午 03:16
  • 請問這邊的程式目前應該是ok了,因為沒有出現錯誤訊息,但為什麼找到的值還是沒有跑到Form5111呢?

    是不是我在Form5111少了什麼??

     

    2007年11月14日 上午 03:42
  • 請 先在 Form51111 的 DataGridView1   滑鼠點選  你要傳送的 那一 資料列

     

    然後按下 Button2

    2007年11月14日 上午 03:57
  • 恩恩!!還是不行也!!因為我目前只找筆資料,所以游標也只會在那一行丫!!

    也試過點在一行,也是一樣沒傳過去?

    2007年11月14日 上午 04:03
  •  

    現在已無錯誤訊息

    接下來 請跟著我做  一 步 一步 的 找出 無資料送出之原因

     

    // Form51111.VB

    程式碼區塊

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

     

              

          MessageBox.Show("1: Form51111-Button2_Click Event Proc Start  ")


            '將指定到的物料編號加入倉管清單
             Dim dv As New DataView
             dv.Table = ds.Tables("A_Component,B_CprPInvertory")
             dv.RowFilter = "物料編號='" & TextBox1.Text & "'"


            If Me.DataGridView1.CurrentRow Is Nothing Then
                MessageBox.Show("DataGridView1.CurrentRow Is Nothing ")
                Return
            End If

           

     

            Dim v1 As New Object
            Dim v2 As New Object
            Dim v3 As New Object

            If Me.DataGridView1.CurrentRow.Cells(1).Value <> Nothing Then
                v1 = Me.DataGridView1.CurrentRow.Cells(1).Value
            Else
                v1 = "=.="
            End If

            If Me.DataGridView1.CurrentRow.Cells(0).Value <> Nothing Then
                v2 = Me.DataGridView1.CurrentRow.Cells(0).Value
            Else
                v2 = "=.="

            End If

            If Me.DataGridView1.CurrentRow.Cells(5).Value <> Nothing Then
                v3 = Me.DataGridView1.CurrentRow.Cells(5).Value
            Else
                v3 = "=.="
            End If

     

            MessageBox.Show("2: Form51111-SendData=" + v1 + "," + v2 + "," + v3)


            If fMainDataForm IsNot Nothing Then

                MessageBox.Show("3: CALL fMainDataForm.ChangCell019 Function")
                fMainDataForm.ChangCell019(v1, v2, v3)

     

                fMainDataForm.Show()

            Else
                MessageBox.Show("3: fMainDataForm is NULL")

     

            End If

     

           

     

             MessageBox.Show("5: Form51111-Button2_Click Event Proc End  ")        

     


            Me.Close()


        End Sub

     

     

    //    Form5111.VB

     

    程式碼區塊

    Public Sub ChangCell019(ByVal v1 As Object, ByVal v2 As Object, ByVal v3 As Object)

     

             MessageBox.Show("1: Form5111-ChangCell019 Proc Start   ")

     

           If Me.DataGridView1.CurrentRow Is Nothing Then

                MessageBox.Show("Form5111-DataGridView1.CurrentRow Is Nothing")
                Return

            End If

     

           MessageBox.Show("2: Form5111-ReceiveData=" + v1 + "," + v2 + "," + v3)

     

                Me.DataGridView1.CurrentRow.Cells(0).Value = v1
                Me.DataGridView1.CurrentRow.Cells(1).Value = v2
                Me.DataGridView1.CurrentRow.Cells(9).Value = v3

     

             MessageBox.Show("3: Form5111-ChangCell019 Proc End   ")


       End Sub

     

     

     

     

    1. 請 先在 Form51111 的 DataGridView1   滑鼠點選  你要傳送的 那一 資料列

     

    2. 然後按下 Button2

     

    3. 在按下 Button2之後 請將所有的訊息方塊內容 從第一個到最後一個 完整的告訴我

       我才知道 蟲 躲在那邊  

     

    2007年11月14日 上午 05:34
  • 1:Form51111-Button2_Click Event Proc Strart

    2:Form51111-SendData:102-04-07050,102-04-07050,中性矽利康

    3:CALL fMainDataForm.ChangCell019Function

    1:Form5111-ChangCell019 Proc Start

    Form5111-DataGridView1.CurrentRow Is Nothing

    5:Form51111-Button2_Click Event Proc End

    你尚未查詢物料資料,無法加入倉管作業清單

    2007年11月14日 上午 06:11
  •  

    1:Form51111-Button2_Click Event Proc Strart

    2:Form51111-SendData:102-04-07050,102-04-07050,中性矽利康

    3:CALL fMainDataForm.ChangCell019Function

    1:Form5111-ChangCell019 Proc Start

    Form5111-DataGridView1.CurrentRow Is Nothing  <-----問題點在此

    5:Form51111-Button2_Click Event Proc End

     

     

    Form51111 已經有將資料 傳給 Form5111

    只是 Form5111-DataGridView1.CurrentRow 是 NULL  所以無法資料寫入 Form5111 的 DataGridView1

     

     

    1. 請先在 Form5111 的 DataGridView1   滑鼠點選  你要接收資料的 那一 資料列

     

    2. 然後在 Form51111 的 DataGridView1   滑鼠點選  你要傳送的 那一 資料列

     

    2. 然後按下 Form51111 的 Button2

     

    3. 在按下 Button2之後 看看是否還有其他問題    請將所有的訊息方塊內容 從第一個到最後一個 完整的告訴我

       我才知道 蟲 躲在那邊  

    2007年11月14日 上午 06:41
  • 我在Form5111主要的目地是要新增作業清單,Form5111裡的DataGridView一開始是要空白的,是在Form51111查詢到資料後,將那列的的欄位0,1,5的資料傳回到Form5111的DataGridView1。

    所以我在Form5111先將DataGridView的資料清除。

    //Form5111

    程式碼區塊

    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.FormID AS 請購單編號,B_CprPInvertory.VendorName AS 廠商名稱,A_Component.UPrice AS 單價,B_CprPInvertory.BatchNo AS 批號,B_CprPInvertory.Remark AS 備註,A_Component.Component AS 物料名稱 FROM A_Component INNER JOIN B_CprPInvertory ON A_Component.ComponentID = dbo.B_CprPInvertory.ComponentID", cn)
            da.SelectCommand = cmd
            da.Fill(ds, "A_component")
            ds.Tables("A_component").Clear()   '將資料先清除
            DataGridView1.DataSource = ds.Tables("A_component")

     

     

     

    2007年11月14日 上午 07:14
  • 所以囉

    你一開始 就不講清楚 才變成要搞這麼久

     

     

    //    Form5111.VB

     

    程式碼區塊

    Public Sub ChangCell019(ByVal v1 As Object, ByVal v2 As Object, ByVal v3 As Object)

     

            MessageBox.Show("1: Form5111-ChangCell019 Proc Start   ")

     

     

            If Me.DataGridView1.Rows.Count <= 0 Then

                MessageBox.Show("Form5111-DataGridView1.Rows.Add ")
                Me.DataGridView1.Rows.Add()
            End If

     

          

           MessageBox.Show("2: Form5111-ReceiveData=" + v1 + "," + v2 + "," + v3)

                
            Me.DataGridView1.Rows(0).Cells(0).Value = v1
            Me.DataGridView1.Rows(0).Cells(1).Value = v2
            Me.DataGridView1.Rows(0).Cells(9).Value = v3


     

           MessageBox.Show("3: Form5111-ChangCell019 Proc End   ")


       End Sub

     

     

     

     

    2007年11月14日 上午 07:34
  • 真是太感動了~~~~~~~~~~成功了!!

    真是太感謝~~~~~~~~~~~所有的高手幫忙,尤其是程式勞工和cmf,挺力相助!!

    在問一個問題!!

    目前在Form5111只能加入一筆從Form51111傳過來的資料,

    那如果查詢多次Form5111的資料,要再傳回到Form5111

    要怎麼寫呢??

     

    2007年11月14日 上午 07:56
  •  

    新手上路min :  恭喜 ^^ 你成功了

     

    由於篇幅已過長 (50篇 )    所以您的新問題 請另闢 新主題 發問

     

                                                                                             謝謝

     

     

    2007年11月14日 上午 08:13