none
何謂物件參考設定執行個體?? RRS feed

  • 問題

  •  

    以下是我的部份程式碼.......

    而所要完成的指令是.......

    1.如果點到TabPage4的時候,如果它的下一個頁TabPage5裡的BatDataGridVeiw的第四個欄位(批號)

       裡面有值的話就出現訊息,再去執行到TabPage5裡面的指令。

    2.那再如果TabPage5裡面的BatDataGridView沒有資料的話。就將TabPage4裡的CompDataGridView的資料傳到表單的

        DataGridView1中。

     

    問題:執行到 If BatDataGridView.CurrentRow.Cells(5).Value > 0 Then 的時候,就會出現錯誤訊息

    並未將物件參考設定為物件的執行個體

    因為BatDataGridView的資料都是從精靈抓取來的,所以想說應該就有執行到了,

    為什麼會出現沒有設定物件的執行個體,這是什麼原因呢??

    還有請教一下,所謂的執行個體,是指從資料庫傳回的Tables嗎??還是??

    小妹不才,再麻煩各位指導了.......................

     

    程式碼區塊

          

         '點到TabPage4所執行的指令

             If (Me.TabControl2.SelectedTab Is Me.TabPage4) Then
                '如果物料格下的批號別有資料的話,就出現警告訊息
                If BatDataGridView.CurrentRow.Cells(5).Value > 0 Then
                    MessageBox.Show("此物料格有批號控制,請再切到批號層級選擇批號資料", "系統錯誤

       訊息", MessageBoxButtons.OK)

     

                ElseIf BatDataGridView.Rows.Count <= 0 Then
                 '如果物料格下的批號別,沒有資料的話,就將物料格別下的資料傳回DataGridView1
                  Dim LocID As String = Me.CompDataGridView.CurrentRow.Cells(1).Value    

                  Dim CompID As String = Me.CompDataGridView.CurrentRow.Cells(2).Value  

                  Dim Outcomp As String = "0"  

          

                    Dim myRow As DataRow   
                    myRow = ds.Tables("B_CprPInvertory").NewRow()  
                    myRow(0) = LocID     

                    myRow(1) = CompID    

                    myRow(2) = Outcomp   

                    ds.Tables("B_CprPInvertory").Rows.Add(myRow)
                End If
            End If

     

     

    2007年12月13日 上午 02:08

解答

  • 並未將物件參考設定為物件的執行個體

    是指呼叫物件屬性或方法的物件變數是 NULL(Nothing)值時發生的。

    如果不知道什麼叫物件,去翻 OOP 的書,VB 的書應該也有講這個概念,如果你手上的書沒講,那可以丟掉重買了。

     

    以你的 case 來看:

     

    程式碼區塊

    BatDataGridView.CurrentRow.Cells(5)

    不是 CurrentRow = nothing,就是 Cells(5) = nothing。

     

     

    之前已經叫你用除錯器去看了,有用除錯器的話,不太可能不知道問題出在哪裡。

    我為什麼會這樣講,因為你一系列的問題看下來,大部份都是用除錯器去追就可以追出來原因的。

    沒有什麼不才,只有肯不肯做而已。

     

    如果你認為我這樣講對你不公平,那我就此不再說任何一句話。

    2007年12月13日 上午 02:21
    版主

所有回覆

  • 呵呵!!小妹我真是個笨蛋.........

     

    只要將If BatDataGridView.CurrentRow.Cells(5).Value > 0 Then

    改為If BatDataGridView.Row.Count > 0 Then

    這樣就可以執行成功了!!

     

     

    2007年12月13日 上午 02:20
  • 並未將物件參考設定為物件的執行個體

    是指呼叫物件屬性或方法的物件變數是 NULL(Nothing)值時發生的。

    如果不知道什麼叫物件,去翻 OOP 的書,VB 的書應該也有講這個概念,如果你手上的書沒講,那可以丟掉重買了。

     

    以你的 case 來看:

     

    程式碼區塊

    BatDataGridView.CurrentRow.Cells(5)

    不是 CurrentRow = nothing,就是 Cells(5) = nothing。

     

     

    之前已經叫你用除錯器去看了,有用除錯器的話,不太可能不知道問題出在哪裡。

    我為什麼會這樣講,因為你一系列的問題看下來,大部份都是用除錯器去追就可以追出來原因的。

    沒有什麼不才,只有肯不肯做而已。

     

    如果你認為我這樣講對你不公平,那我就此不再說任何一句話。

    2007年12月13日 上午 02:21
    版主
  • 小朱

    對於你說的話,個人並不覺得什麼公不公平。

    因為我也相信,努力學習才是成功之道,

    因為我個人也是從中開始學VB.NET..........

    因為只有一點點概念,也因為工作需要就開始寫程式,自已邊看書,邊找資料,邊學。

    有時完全不知從那裡開始..

    有時寫了一些程式,想說應該是可以執行成功的,

    但有時就是不知那個點出錯.........所以才會一直麻煩所以的大大......

    再來,因為我不會用除錯器,而我也不確定你所說的除錯器,是不是就是我個人所想的用中斷器去查詢程式的流程........

    如果可以的話,也再次麻煩請告訴我,如何使用除錯器。

    衷心感謝!!!

     

    2007年12月13日 上午 06:34
  • 程式錯了就是錯了,沒有 "應該可以" 這件事,程式又不會自己修理,只有在資料錯誤時才有可能時好時壞。

    用除錯器設個中斷點去看變數的變化,就可以解決你的很多問題。

     

    Visual Studio 偵錯:

    http://msdn2.microsoft.com/zh-tw/library/sc65sadd(VS.80).aspx

     

    練習看 MSDN,用 MSDN Library 查資料,不要只會看書,有些在書上沒教的 MSDN 大都可以找的到:

    http://msdn2.microsoft.com/zh-tw/library

     

    用關鍵字查 Google 也是可以抓到很多資料。

    我用你的標題到 Google 去找,馬上就找到一堆,這是其中一篇:

    http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=728872&SiteID=14

     

    至少,我寧願在這裡嚴格要求初學者,也不要讓初學者養成依賴的壞習慣,

    壞習慣一旦養成,以後只會更慘。

    社群上(包括這裡)有很多這種人,我不希望你是其中一個。

     

    PS:

    有些人就認為我這樣講對他不公平,還要我尊重他的問法,實在是 ...

    2007年12月13日 上午 07:00
    版主