none
關於複雜性Form的問題 RRS feed

  • 問題

  • 請問一個複雜的問題.............拜託請耐心看完!!

    1.如果我先在DataGridView1-> 智慧標籤 -> 加入資料行 -> 自己填入欄位(9個欄位)

    那麼我原先在Form1_Load寫的程式(如下),在DataGridView就會跑出兩組資料出來。

    程式碼區塊

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

    Dim cmmd As New SqlClient.SqlCommand
            cmmd = 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 = cmmd
            da.Fill(ds, "B_CprPInvertory")
            ds.Tables("B_CprPInvertory").Clear()

     

     

    那如果我先把DataGridView1裡面的欄位刪除的話DataGridView1.Columns.Clear()

    那麼我之前在標題列寫的程式(如下)

    '廠商欄位名稱做連結
            DataGridView1.EnableHeadersVisualStyles = False
            DataGridView1.Columns(4).HeaderCell.Style.Font = New Font("Arial", 10, FontStyle.Underline)
            DataGridView1.Columns(4).HeaderCell.Style.ForeColor = Color.Blue
    就會出現"索引超出範圍。必須為非負數且小於集合的大小。"

    也試將DataGridView1.Columns.Clear()移到這指令下面,但也是一樣的結果。

    2.如果一開始不設DataGridView1的智慧標籤的話,也是會在這行

    DataGridView1.Columns(4).HeaderCell.Style.Font = New Font("Arial", 10, FontStyle.Underline)
    出現錯誤
    "索引超出範圍。必須為非負數且小於集合的大小。"

    因為找不到欄位讓它去執行.....

     

     

    因為在Form1的DataGridView1中,有呼叫到從Form2的DataGridView1裡面的資料到Form1裡,

    所以如果我又將Form1_Load的宣告給刪除掉的話,那麼Form2的資料也就不會跑到Form1

    附上Form2的部份程式碼

    程式碼區塊

    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 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
          
            If fMainDataForm IsNot Nothing Then
               
                fMainDataForm.ChangCell019(v1, v2, v3)
                fMainDataForm.Show()
              
            End If
            Me.Close()
        End Sub

     

     

    再附上Form1中ChangCell019程式碼

    程式碼區塊

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


           Dim row As DataRow
            row = ds.Tables("B_CprPInvertory").NewRow()
            row("物料格編號") = v1
            row("物料編號") = v2
            row("物料名稱") = v3
            ds.Tables("B_CprPInvertory").Rows.Add(row)
            DataGridView1.DataSource = ds.Tables("B_CprPInvertory")
    End Sub

     

     

    請問我要怎麼解決這個問題呢??因為是新手,而一下子會影響那麼多問題所以不知怎麼解決,

    請各位高手在幫幫忙~~~~~~~~~~~~~~謝謝!!

    2007年11月21日 上午 03:59

解答

  •  

    Private Sub Form5111_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'TODO: 這行程式碼會將資料載入 'CMMS1DataSet.Data' 資料表。您可以視需要進行移動或移除。
            Me.DataTableAdapter.Fill(Me.CMMS1DataSet.Data)
            'TODO: 這行程式碼會將資料載入 'CMMS1DataSet.Comp' 資料表。您可以視需要進行移動或移除。
            Me.CompTableAdapter.Fill(Me.CMMS1DataSet.Comp)
            'TODO: 這行程式碼會將資料載入 'CMMS1DataSet.Loc' 資料表。您可以視需要進行移動或移除。
            Me.LocTableAdapter.Fill(Me.CMMS1DataSet.Loc)
            '表單上DataGridView1連結資料來源
            Dim cmmd As New SqlClient.SqlCommand
            cmmd = 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 = cmmd
            da.Fill(ds, "B_CprPInvertory")
            ds.Tables("B_CprPInvertory").Clear()


           

     DataGridView1.Columns.Remove(Me.Column1)

     DataGridView1.Columns.Remove(Me.Column2)

     DataGridView1.Columns.Remove(Me.Column3)

     DataGridView1.Columns.Remove(Me.Column4)

     DataGridView1.Columns.Remove(Me.Column5)

     DataGridView1.Columns.Remove(Me.Column6)

     DataGridView1.Columns.Remove(Me.Column7)

     DataGridView1.Columns.Remove(Me.Column8)

     DataGridView1.Columns.Remove(Me.Column9)

     


            '將BindingNavigator1和DataGridView1做聯繫
            bs.DataSource = ds.Tables("B_CprPInvertory")
            BindingNavigator1.BindingSource = bs
            DataGridView1.DataSource = bs

     

            '廠商名稱做連結
            DataGridView1.EnableHeadersVisualStyles = False
            DataGridView1.Columns(4).HeaderCell.Style.Font = New Font("Arial", 10, FontStyle.Underline)
            DataGridView1.Columns(4).HeaderCell.Style.ForeColor = Color.Blue
           

     

     

     

            '作業清單的DataGridView
            LocDataGridView.DataSource = LocBindingSource
            t = CMMS1DataSet.Loc.Rows(0)(1)
            Dim cmd As New SqlClient.SqlCommand("select SetUpID as 上層編號,SetSysID as 儲存空間編號,SetName as 空間說明 from D_InvIndex", cn)
            da.SelectCommand = cmd
            da.Fill(ds, "InvIndex2")
            ds.Tables("InvIndex2").Clear()
            cmd = New SqlClient.SqlCommand("select D_InvIndex.SetUpID AS 上層編號,D_InvIndex.SetSysID AS 儲存空間編號,D_InvIndex.ComponentID AS 物料編號,A_Component.Component AS 物料名稱,A_Component.Specification AS 規格,D_InvIndex.Num AS 庫存量 FROM D_InvIndex INNER JOIN A_Component ON D_InvIndex.ComponentID = A_Component.ComponentID WHERE D_InvIndex.SetLevelNo = 5", cn)
            da.SelectCommand = cmd
            da.Fill(ds, "InvIndex3")
            ds.Tables("InvIndex3").Clear()

     

     

    2007年11月21日 上午 09:05

所有回覆

  • HI

     

    1.如果我先在DataGridView1-> 智慧標籤 -> 加入資料行 -> 自己填入欄位(9個欄位)

    那麼我原先在Form1_Load寫的程式(如下),在DataGridView就會跑出兩組資料出來。

     

     

    請問一下 所謂的 兩組資料  是指 變成18個欄位 還是  2 ROW?
    2007年11月21日 上午 05:00
  • cmf~~~~~~~~~~~

    Form_Load變成18個欄位

    2007年11月21日 上午 05:04
  • 1.如果我先在DataGridView1-> 智慧標籤 -> 加入資料行 -> 自己填入欄位(9個欄位)

     

    如果 設計時期 不使用 DataGridView1-> 智慧標籤 -> 加入資料行 -> 自己填入欄位(9個欄位) 呢?
    2007年11月21日 上午 05:07
  • cmf~~~~~

    就會像我第二點講的一樣,

    2.如果一開始不設DataGridView1的智慧標籤的話,也是會在這行

    DataGridView1.Columns(4).HeaderCell.Style.Font = New Font("Arial", 10, FontStyle.Underline)
    出現錯誤
    "索引超出範圍。必須為非負數且小於集合的大小。"

    因為找不到欄位讓它去執行.....

     

    2007年11月21日 上午 05:43
  • HI

     

    可否借看一下 這兩個 的完整內容

     

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

     

    Private Sub InitializeComponent()

     

     

     

    2007年11月21日 上午 05:56
  • 我附上Form_Load的完整資料,但問題的重點、說明,還是在我第一次主題那裡哦!!

    這裡就沒有在多加說明,如還有問題,請和我說,我在補充......

     

    程式碼區塊

     

    Imports System.Data
    Imports system.Data.SqlClient
    Imports System.Windows.Forms
    Public Class Form5111
        Inherits System.Windows.Forms.Form
        Dim t As String = Nothing
        Dim t1 As String = Nothing
        Dim cn As New SqlClient.SqlConnection("server=.;database=cmms1;uid=sa;password=sesc")
        Dim da As New SqlClient.SqlDataAdapter
        Dim ds As New DataSet
        Dim a As String = Nothing
        Dim b As String = Nothing
        Dim c As String = Nothing

     Private bs As New BindingSource
     Private VendorName As DataGridViewLinkColumn

    Private Sub Form5111_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'TODO: 這行程式碼會將資料載入 'CMMS1DataSet.Data' 資料表。您可以視需要進行移動或移除。
            Me.DataTableAdapter.Fill(Me.CMMS1DataSet.Data)
            'TODO: 這行程式碼會將資料載入 'CMMS1DataSet.Comp' 資料表。您可以視需要進行移動或移除。
            Me.CompTableAdapter.Fill(Me.CMMS1DataSet.Comp)
            'TODO: 這行程式碼會將資料載入 'CMMS1DataSet.Loc' 資料表。您可以視需要進行移動或移除。
            Me.LocTableAdapter.Fill(Me.CMMS1DataSet.Loc)
            '表單上DataGridView1連結資料來源
            Dim cmmd As New SqlClient.SqlCommand
            cmmd = 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 = cmmd
            da.Fill(ds, "B_CprPInvertory")
            ds.Tables("B_CprPInvertory").Clear()
            DataGridView1.Columns.Clear()
            '廠商名稱做連結
            DataGridView1.EnableHeadersVisualStyles = False
            DataGridView1.Columns(4).HeaderCell.Style.Font = New Font("Arial", 10, FontStyle.Underline)
            DataGridView1.Columns(4).HeaderCell.Style.ForeColor = Color.Blue
            'DataGridView1.Columns.Clear()

            '將BindingNavigator1和DataGridView1做聯繫
            bs.DataSource = ds.Tables("B_CprPInvertory")
            BindingNavigator1.BindingSource = bs
            DataGridView1.DataSource = bs

     

            '作業清單的DataGridView
            LocDataGridView.DataSource = LocBindingSource
            t = CMMS1DataSet.Loc.Rows(0)(1)
            Dim cmd As New SqlClient.SqlCommand("select SetUpID as 上層編號,SetSysID as 儲存空間編號,SetName as 空間說明 from D_InvIndex", cn)
            da.SelectCommand = cmd
            da.Fill(ds, "InvIndex2")
            ds.Tables("InvIndex2").Clear()
            cmd = New SqlClient.SqlCommand("select D_InvIndex.SetUpID AS 上層編號,D_InvIndex.SetSysID AS 儲存空間編號,D_InvIndex.ComponentID AS 物料編號,A_Component.Component AS 物料名稱,A_Component.Specification AS 規格,D_InvIndex.Num AS 庫存量 FROM D_InvIndex INNER JOIN A_Component ON D_InvIndex.ComponentID = A_Component.ComponentID WHERE D_InvIndex.SetLevelNo = 5", cn)
            da.SelectCommand = cmd
            da.Fill(ds, "InvIndex3")
            ds.Tables("InvIndex3").Clear()

     

     

    2007年11月21日 上午 06:23
  • 如果  紅色那幾行 先不執行  會出現什麼結果

    程式碼區塊

    Private Sub Form5111_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'TODO: 這行程式碼會將資料載入 'CMMS1DataSet.Data' 資料表。您可以視需要進行移動或移除。
            Me.DataTableAdapter.Fill(Me.CMMS1DataSet.Data)
            'TODO: 這行程式碼會將資料載入 'CMMS1DataSet.Comp' 資料表。您可以視需要進行移動或移除。
            Me.CompTableAdapter.Fill(Me.CMMS1DataSet.Comp)
            'TODO: 這行程式碼會將資料載入 'CMMS1DataSet.Loc' 資料表。您可以視需要進行移動或移除。
            Me.LocTableAdapter.Fill(Me.CMMS1DataSet.Loc)
            '表單上DataGridView1連結資料來源
            Dim cmmd As New SqlClient.SqlCommand
            cmmd = 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 = cmmd
            da.Fill(ds, "B_CprPInvertory")
            ds.Tables("B_CprPInvertory").Clear()
            DataGridView1.Columns.Clear()
            '廠商名稱做連結
            'DataGridView1.EnableHeadersVisualStyles = False
            'DataGridView1.Columns(4).HeaderCell.Style.Font = New Font("Arial", 10, FontStyle.Underline)
            'DataGridView1.Columns(4).HeaderCell.Style.ForeColor = Color.Blue
            'DataGridView1.Columns.Clear()

            '將BindingNavigator1和DataGridView1做聯繫
            bs.DataSource = ds.Tables("B_CprPInvertory")
            BindingNavigator1.BindingSource = bs
            DataGridView1.DataSource = bs

     

            '作業清單的DataGridView
            LocDataGridView.DataSource = LocBindingSource
            t = CMMS1DataSet.Loc.Rows(0)(1)
            Dim cmd As New SqlClient.SqlCommand("select SetUpID as 上層編號,SetSysID as 儲存空間編號,SetName as 空間說明 from D_InvIndex", cn)
            da.SelectCommand = cmd
            da.Fill(ds, "InvIndex2")
            ds.Tables("InvIndex2").Clear()
            cmd = New SqlClient.SqlCommand("select D_InvIndex.SetUpID AS 上層編號,D_InvIndex.SetSysID AS 儲存空間編號,D_InvIndex.ComponentID AS 物料編號,A_Component.Component AS 物料名稱,A_Component.Specification AS 規格,D_InvIndex.Num AS 庫存量 FROM D_InvIndex INNER JOIN A_Component ON D_InvIndex.ComponentID = A_Component.ComponentID WHERE D_InvIndex.SetLevelNo = 5", cn)
            da.SelectCommand = cmd
            da.Fill(ds, "InvIndex3")
            ds.Tables("InvIndex3").Clear()

     

     

    2007年11月21日 上午 06:40
  • cmf~~~~~~~~~~

    紅色那幾行,是我目前重點,所以不能不執行,

    就是因為要執行那行程式,才會去影響到我其它的程式,

    那說一次我的重點好了........

    現在目前我是要將我在Form裡面的DataGridView1裡的第四個欄位(廠商名稱)做連結到開另一個From變成廠商名稱

    而因為我在Form_Load之前已經有宣告過cmd,所以當我在寫下面這行指令時會出現錯誤訊息

    '廠商名稱做連結
            'DataGridView1.EnableHeadersVisualStyles = False
            'DataGridView1.Columns(4).HeaderCell.Style.Font = New Font("Arial", 10, FontStyle.Underline)
            'DataGridView1.Columns(4).HeaderCell.Style.ForeColor = Color.Blue
            'DataGridView1.Columns.Clear()

     

     

    因為一直覺的很奇怪,所以在開另一個Form去測試過下面這段程式,是可以執行成功的,

    但條件是不可以在Form_Load宣告cmd

    DataGridView1.EnableHeadersVisualStyles = False
    DataGridView1.Columns(4).HeaderCell.Style.Font = New Font("Arial", 10, FontStyle.Underline)
    DataGridView1.Columns(4).HeaderCell.Style.ForeColor = Color.Blue
    2007年11月21日 上午 07:11
  •  DataGridView1.Columns.Clear() <-------------- 你這裡執行清除動作 當然 下面的程式碼 會發生錯誤
            '廠商名稱做連結
            'DataGridView1.EnableHeadersVisualStyles = False
            'DataGridView1.Columns(4).HeaderCell.Style.Font = New Font("Arial", 10, FontStyle.Underline)
            'DataGridView1.Columns(4).HeaderCell.Style.ForeColor = Color.Blue

     

     

    我是說 "先" 不執行 看結果為何     

     

     

    順便貼一下 Private Sub InitializeComponent() 內容來看看

    2007年11月21日 上午 07:19
  • cmf~~~~~~~~~~

    1.DataGridView1.Columns.Clear() 這行原本是寫在cmd底下的

    Dim cmmd As New SqlClient.SqlCommand
            cmmd = 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 = cmmd
            da.Fill(ds, "B_CprPInvertory")
            'ds.Tables("B_CprPInvertory").Clear()
            'DataGridView1.Columns.Clear()

    原本的用意是讓cmd載入資料來源時,先將之前的欄位清除,這樣就不會有18個欄位,(那是有用在智慧標籤時)

    但這樣的話,那我在寫'廠商名稱連結的時候,如以下程式

    DataGridView1.EnableHeadersVisualStyles = False
    DataGridView1.Columns(4).HeaderCell.Style.Font = New Font("Arial", 10, FontStyle.Underline)
    DataGridView1.Columns(4).HeaderCell.Style.ForeColor = Color.Blue

    因為已經做清除的動作DataGridView1.Columns.Clear()

    那麼廠商名稱連結那行指令也就沒有用處了..............因為已經被清除

    後來試過將DataGridView1.Columns.Clear() 都先隱藏起來,

    那麼就會出現一開始講的,變成18個欄位(9個在智慧標籤做的,9個從資料庫抓的)

     

     

    那再如果將一開始的宣告cmd隱藏起來,只剩下用智慧標籤作的欄位,

    那麼我之前在其它Form中把資料抓回來到Form1裡的DataGridView1 中的程式,

    又會有問題。

     

    這樣能大概懂我的意思了嗎??不懂的在問我,我在說明~~~~~~~~

    2007年11月21日 上午 07:35
  •  

     

     

    HI

     我一直說 要看    Private Sub InitializeComponent() 內容  你卻不貼上來 ?

     

     

    "變成18個欄位(9個在智慧標籤做的,9個從資料庫抓的)" 

    那 刪掉 9個在智慧標籤做的  不就變成 9個拉

     

    試過將DataGridView1.Columns.Clear() 都先隱藏起來

    EX:

     DataGridView1.Columns.Remove(Me.Column1DataGridViewTextBoxColumn)

     DataGridView1.Columns.Remove(Me.Column2DataGridViewTextBoxColumn)

     DataGridView1.Columns.Remove(Me.Column3DataGridViewTextBoxColumn)

     DataGridView1.Columns.Remove(Me.Column4DataGridViewTextBoxColumn)

     DataGridView1.Columns.Remove(Me.Column5DataGridViewTextBoxColumn)

     DataGridView1.Columns.Remove(Me.Column6DataGridViewTextBoxColumn)

     DataGridView1.Columns.Remove(Me.Column7DataGridViewTextBoxColumn)

     DataGridView1.Columns.Remove(Me.Column8DataGridViewTextBoxColumn)

     DataGridView1.Columns.Remove(Me.Column9DataGridViewTextBoxColumn)

    2007年11月21日 上午 07:49
  • cmf~~~~~~~~

    我沒有Private Sub InitializeComponent()

    下面這些指令和DataGridView1.Columns.Clear()

    DataGridView1.Columns.Remove(Me.Column1DataGridViewTextBoxColumn)

     DataGridView1.Columns.Remove(Me.Column2DataGridViewTextBoxColumn)

     DataGridView1.Columns.Remove(Me.Column3DataGridViewTextBoxColumn)

     DataGridView1.Columns.Remove(Me.Column4DataGridViewTextBoxColumn)

     DataGridView1.Columns.Remove(Me.Column5DataGridViewTextBoxColumn)

     DataGridView1.Columns.Remove(Me.Column6DataGridViewTextBoxColumn)

     DataGridView1.Columns.Remove(Me.Column7DataGridViewTextBoxColumn)

     DataGridView1.Columns.Remove(Me.Column8DataGridViewTextBoxColumn)

     DataGridView1.Columns.Remove(Me.Column9DataGridViewTextBoxColumn)

    應該是一樣的意思吧!!

    是剩下九個沒錯,那九個也是可以將我在其它Form的資料傳回到From裡的DataGridView

    但這樣的話,我要的目前將廠商連結 這些程式就辦法指令成功了。

    DataGridView1.EnableHeadersVisualStyles = False
    DataGridView1.Columns(4).HeaderCell.Style.Font = New Font("Arial", 10, FontStyle.Underline)
    DataGridView1.Columns(4).HeaderCell.Style.ForeColor = Color.Blue
    2007年11月21日 上午 08:11
  •  

    選取 DataGridView1 按下右鍵 -> 選擇  「移至定義」 就可以看到  Private Sub InitializeComponent()

     

     

    "我要的目前將廠商連結 這些程式就辦法指令成功了。"

     

    看不懂這句?

     

    2007年11月21日 上午 08:19
  • 在Form1裡的DataGridView1的標題列中第四個欄位(廠商名稱)

    我要將廠商名稱變成廠商名稱這個樣子,讓它能連結到另一個Form

    所以在Form1_Load裡,我寫了以下程式

    DataGridView1.EnableHeadersVisualStyles = False
    DataGridView1.Columns(4).HeaderCell.Style.Font = New Font("Arial", 10, FontStyle.Underline)
    DataGridView1.Columns(4).HeaderCell.Style.ForeColor = Color.Blue

     

    讓它能連結到另一個Form,寫了以下程式

    Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
            If e.ColumnIndex = 4 Then
                Vendormenu.Show()
            End If
        End Sub

     

     

     

    因為Private Sub InitializeComponent() 很長,不便附上太多,所以你想要看那段的??

    我在另外貼~~~

    2007年11月21日 上午 08:39
  • 因為Private Sub InitializeComponent() 很長,不便附上太多,所以你想要看那段的??

    我在另外貼~~~

     

     

    我猜想 你的 應該有 18 個    您查查看

    Friend WithEvents Column1DataGridViewTextBoxColumn As System.Windows.Forms.DataGridViewTextBoxColumn

            .

            .

            ..

    Friend WithEvents Column18DataGridViewTextBoxColumn As System.Windows.Forms.DataGridViewTextBoxColumn

     

     

    若是18 個 請自行 刪除

    2007年11月21日 上午 08:48
  • 只有9個而以

        Friend WithEvents Column1 As System.Windows.Forms.DataGridViewTextBoxColumn
        Friend WithEvents Column2 As System.Windows.Forms.DataGridViewTextBoxColumn
        Friend WithEvents Column3 As System.Windows.Forms.DataGridViewTextBoxColumn
        Friend WithEvents Column4 As System.Windows.Forms.DataGridViewTextBoxColumn
        Friend WithEvents Column5 As System.Windows.Forms.DataGridViewTextBoxColumn
        Friend WithEvents Column6 As System.Windows.Forms.DataGridViewTextBoxColumn
        Friend WithEvents Column7 As System.Windows.Forms.DataGridViewTextBoxColumn
        Friend WithEvents Column8 As System.Windows.Forms.DataGridViewTextBoxColumn
        Friend WithEvents Column9 As System.Windows.Forms.DataGridViewTextBoxColumn

     

    2007年11月21日 上午 08:50
  •  

    Private Sub Form5111_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'TODO: 這行程式碼會將資料載入 'CMMS1DataSet.Data' 資料表。您可以視需要進行移動或移除。
            Me.DataTableAdapter.Fill(Me.CMMS1DataSet.Data)
            'TODO: 這行程式碼會將資料載入 'CMMS1DataSet.Comp' 資料表。您可以視需要進行移動或移除。
            Me.CompTableAdapter.Fill(Me.CMMS1DataSet.Comp)
            'TODO: 這行程式碼會將資料載入 'CMMS1DataSet.Loc' 資料表。您可以視需要進行移動或移除。
            Me.LocTableAdapter.Fill(Me.CMMS1DataSet.Loc)
            '表單上DataGridView1連結資料來源
            Dim cmmd As New SqlClient.SqlCommand
            cmmd = 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 = cmmd
            da.Fill(ds, "B_CprPInvertory")
            ds.Tables("B_CprPInvertory").Clear()


           

     DataGridView1.Columns.Remove(Me.Column1)

     DataGridView1.Columns.Remove(Me.Column2)

     DataGridView1.Columns.Remove(Me.Column3)

     DataGridView1.Columns.Remove(Me.Column4)

     DataGridView1.Columns.Remove(Me.Column5)

     DataGridView1.Columns.Remove(Me.Column6)

     DataGridView1.Columns.Remove(Me.Column7)

     DataGridView1.Columns.Remove(Me.Column8)

     DataGridView1.Columns.Remove(Me.Column9)

     


            '將BindingNavigator1和DataGridView1做聯繫
            bs.DataSource = ds.Tables("B_CprPInvertory")
            BindingNavigator1.BindingSource = bs
            DataGridView1.DataSource = bs

     

            '廠商名稱做連結
            DataGridView1.EnableHeadersVisualStyles = False
            DataGridView1.Columns(4).HeaderCell.Style.Font = New Font("Arial", 10, FontStyle.Underline)
            DataGridView1.Columns(4).HeaderCell.Style.ForeColor = Color.Blue
           

     

     

     

            '作業清單的DataGridView
            LocDataGridView.DataSource = LocBindingSource
            t = CMMS1DataSet.Loc.Rows(0)(1)
            Dim cmd As New SqlClient.SqlCommand("select SetUpID as 上層編號,SetSysID as 儲存空間編號,SetName as 空間說明 from D_InvIndex", cn)
            da.SelectCommand = cmd
            da.Fill(ds, "InvIndex2")
            ds.Tables("InvIndex2").Clear()
            cmd = New SqlClient.SqlCommand("select D_InvIndex.SetUpID AS 上層編號,D_InvIndex.SetSysID AS 儲存空間編號,D_InvIndex.ComponentID AS 物料編號,A_Component.Component AS 物料名稱,A_Component.Specification AS 規格,D_InvIndex.Num AS 庫存量 FROM D_InvIndex INNER JOIN A_Component ON D_InvIndex.ComponentID = A_Component.ComponentID WHERE D_InvIndex.SetLevelNo = 5", cn)
            da.SelectCommand = cmd
            da.Fill(ds, "InvIndex3")
            ds.Tables("InvIndex3").Clear()

     

     

    2007年11月21日 上午 09:05
  • 這行出現錯誤也~~~~~~~~~~

     DataGridView1.Columns.Remove(Me.Column1)

    提供的儲存格不屬於此 DataGridView 控制項。
    參數名稱: dataGridViewColumn

     

    2007年11月22日 上午 12:08
  • 提供的儲存格不屬於此 DataGridView 控制項。

    !!!!!!!!!!!!!!!!!!

    只有9個而以

        Friend WithEvents Column1 As System.Windows.Forms.DataGridViewTextBoxColumn



    ????????????



    因為 你 無 提供 Private Sub InitializeComponent() 內容  所以 我也無法得知

    你的 FORM 裡有哪些 元件


    2007年11月22日 上午 12:24
  • cmf~~~~~~~~~~~

    後來我重新在整理過,重開檔,就可以執行成功了!!

    再次謝謝您!!

    再來就是將廠商連結到另一個Form,在把值抓回來的事了!!

     

    Private Sub Form5111_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                  Dim cmmd As New SqlClient.SqlCommand
            cmmd = 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 = cmmd
            da.Fill(ds, "B_CprPInvertory")
            ds.Tables("B_CprPInvertory").Clear()


           '將BindingNavigator1和DataGridView1做聯繫
            bs.DataSource = ds.Tables("B_CprPInvertory")
            BindingNavigator1.BindingSource = bs
            DataGridView1.DataSource = bs

     

            '廠商名稱做連結
            DataGridView1.EnableHeadersVisualStyles = False
            DataGridView1.Columns(4).HeaderCell.Style.Font = New Font("Arial", 10, FontStyle.Underline)
            DataGridView1.Columns(4).HeaderCell.Style.ForeColor = Color.Blue
           

     

     

     

       

    2007年11月23日 上午 07:45