教えて下さい。
以下のように記述し、GRD_入力(DataGridView)で2列目の項目がダブルクリックされた場合、別画面から番号を
取得し、それを最終行に追加するというような事を行っています。
その際に、次々に追加する場合は問題なく最終行に追加されますが、例えば3行目の入力する際に、1行目
をクリックした後に3行目をダブルクリックし、その後同じ事をすると3行目が空白となり、4行目にデータが表示
されてしまいます。
純粋にどのような形であっても最終行にデータを表示させる場合はどのような記述をすれば良いでしょうか?
教えて頂ければ幸いです。
よろしくお願いします。
Private Sub GRD_入力_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles GRD_入力.CellDoubleClick
Dim C_Row As String
Dim C_Col As String
Dim C_Val As String
C_Row = GRD_入力.CurrentCell.RowIndex
C_Col = GRD_入力.CurrentCell.ColumnIndex
C_Val = GRD_入力.CurrentCell.Value.ToString()
'2列目に入力があった場合のみ処理を行う
If C_Col = 1 Then
Dim frm_品目マスタ As New 品目マスタ検索
frm_品目マスタ.ShowDialog()
Dim PIN_番号 As String
Dim Connection As New OracleConnection
Dim Command As OracleCommand
Dim DataReader As OracleDataReader
PIN_番号 = frm_品目マスタ.Kekka '結果プロパティから
Dim DIN_番号 As String
DIN_番号 = GRD_入力.CurrentCell.Value.ToString()
If DIN_番号 <> "" Then
Return
Exit Sub
End If
frm_品目マスタ.Dispose()
frm_品目マスタ = Nothing
'Oracleへのコネクションの確立
Connection.ConnectionString = "User Id=XXXXXX; Password=999999; Data Source=XE"
'オープン
Connection.Open()
'コマンド作成
Command = Connection.CreateCommand
If PIN_番号 <> "" Then
'SQL作成
Command.CommandText = "SELECT * FROM T_品目マスタ WHERE 番号 = '" + PIN_番号 + "'"
'データリーダーにデータ取得
DataReader = Command.ExecuteReader
'データを全件出力
Do Until Not DataReader.Read
If IsDBNull(DataReader.Item("番号")) Then
KIN_番号 = ""
Else
KIN_番号 = DataReader.Item("番号").ToString
End If
If IsDBNull(DataReader.Item("名称")) Then
KIN_名称 = ""
Else
KIN_名称 = DataReader.Item("名称").ToString
End If
Loop
DataReader.Close()
Dim data_row As DataRow = dtTable.NewRow()
lngRet = dtTable.Rows.Count()
data_row("番号") = KIN_番号
data_row("名称") = KIN_名称
dtTable.Rows.Add(data_row)
End If
'DataGridViewの最終行を非表示にする
GRD_入力.AllowUserToAddRows = False
End If
End Sub
ツイート | ![]() |