0
Module globalVariable

    Public tblScItem As New DataTable
    Public tempArray()
    Public index As Integer
    Public stringArr() As String

End Module

Private Sub txtQty_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtQty.TextChanged

    stringArr = New String() {"", txtItem.Text, Form2.cbGondola.SelectedItem, txtQty.Text, DateTime.Now, Form1.txtLoginId.Text}

    If txtItem.Text <> Nothing And txtQty.Text <> Nothing Then

        index = 0

        tempArray(index) = stringArr

        tblScItem.Rows.Add(tempArray)

        index += 1

    End If

End Sub

私のプログラムは、アイテムの数量が入力されると、データグリッドに表示され、同時に配列に保存されるように機能する在庫取得プログラムです。トランザクション全体が完了すると、アレイ全体が txt ファイルにエクスポートされます。

stringArrアイテムのすべての詳細を格納する配列を宣言しました。次に、tempArray を使用して各アイテムを格納しましたstringArr( tempArray.

Example: 
tempArray(0) = 'details of item 1 obtained from stringArr
tempArray(1) = 'details of item 2 obtained from stringArr
and so on

ただし、数量を入力した後、「オブジェクトがオブジェクトのインスタンスに設定されていません」というメッセージが表示され続けました。

理由を知っている人はいますか?助けが必要です。

ありがとうございました。

4

2 に答える 2

1

tempArray変数を初期化していないため、エラー メッセージが表示されます。これは単なる配列への参照ですが、参照する配列はありません。

ただし、配列に配列を入れようとしていますが、DataRowCollection.Addメソッドは配列の配列ではなく配列を取ります。

stringArr変数を使用するだけです:

Private Sub txtQty_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtQty.TextChanged

  stringArr = New String() {"", txtItem.Text, Form2.cbGondola.SelectedItem, txtQty.Text, DateTime.Now, Form1.txtLoginId.Text}

  If txtItem.Text <> "" And txtQty.Text <> "" Then

    tblScItem.Rows.Add(stringArr)

  End If

End Sub

Textコントロールのプロパティは neverであることに注意してくださいEmpty。空の文字列かどうかを確認する必要があります。

行を 以外のコレクションに追加する場合DataTable、配列はサイズ変更できないため、使用しません。を使用しますList(Of String())

Public tempList As new List(Of String())

Private Sub txtQty_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtQty.TextChanged

  stringArr = New String() {"", txtItem.Text, Form2.cbGondola.SelectedItem, txtQty.Text, DateTime.Now, Form1.txtLoginId.Text}

  If txtItem.Text <> "" And txtQty.Text <> "" Then

    tempList.Add(stringArr)

    tblScItem.Rows.Add(stringArr)

  End If

End Sub
于 2012-10-09T08:22:41.640 に答える