配列の使い方がよく分かっていませんので教えてください。
テーブルの内容を変更するプログラムをVB.NETで作っています。
下記のようなテーブルがあったとき、
・テーブル
No 営業所 品物
-------------------------
1 AAAAA aiu
2 AAAAA eo
3 BBBBB kaki
4 AAAAA kuke
5 CCCCC kosa
6 AAAAA sisu
営業所=AAAA を選択したときは下記が選択されますが
・表示
No 営業所 品物
-------------------------
1 AAAAA aiu
2 AAAAA eo
4 AAAAA kuke
6 AAAAA sisu
この時表示だけ、Noを1から順に割り振ります。
(下記のようにしたい)
No 営業所 品物
-------------------------
1 AAAAA aiu
2 AAAAA eo
3 AAAAA kuke
4 AAAAA sisu
ここで、表示上の3番目を修正したい時に、
「No.3 営業所:AAAA⇒BBBB、品物:kuke⇒mume」と表示させ、
実際には、テーブルの4番を修正したいと考えています。
(表示にはFlexGridを使用します。)
Dim cn As New OleDb.OleDbConnection
Dim cmd As New OleDb.OleDbCommand
Dim rs As OleDb.OleDbDataReader
Dim strSQL As String = ""
Dim k As Integer = 0
Dim intNo() as Integer
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strMDBPath
cn.Open()
cmd = cn.CreateCommand()
cmd.CommandText = "SELECT [No],営業所,品物 FROM テーブル WHERE 営業所=AAAA"
rs = cmd.ExecuteReader()
If rs.HasRows = True Then
Do While (rs.Read())
intNo(k) = rs.GetValue(0)
Dim strBuf As String = ""
For i As Integer = 1 To rs.FieldCount - 1
strBuf = k + 1 & vbTab & rs.GetValue(i)
Next
FGrid1.AddItem(strBuf)
k += 1
Loop
rs.Close()
End If
配列に取得したテーブルのNoを代入して、
テーブルの修正を行う時、メッセージには表示上のNoを、
実際には、テーブルのNoを指定して修正を行いたいのです。
上記ですと、「オブジェクト参照がオブジェクトインスタンスに設定されていません」
とエラーになります。
Dim intNo() as Integer
上記で配列の長さを「100」とすると表示ができるのですが、
検索するたびに配列の長さが変わる場合は、どうすればよいでしょうか。
ループ中に↓を入れる
Redim Preserve intNo(k)
それか、配列より、ArrayListを使った方がいいかな。
Dim aryNo as New ArrayList
aryNo.Add(rs.GetValue(0))
ArrayListというのを知りませんでした。
よく調べときます!
これを修正したら、その他の問題がボロボロと出てきましたが、
やりたいことが出来るようになりました。
ありがとうございました。