- - PR -
DataTable:入力された値で該当行取得するには?
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-03-24 19:25
こんばんわ。
VB.NETでWindowsアプリケーション開発の練習中です。 フォームにあるテキストボックスに入力された番号に該当するものを削除。 という処理をしたいのですが、該当する行の抜き出し。というとこで躓いています。 流れとしては、 テキストボックスの入力番号がない エラー処理 ある その番号の値をもつレコード行を取得 該当するレコード行を削除。 というものなのですが dataset.Table("T_Test").Rows(該当レコード).Delete() として削除しようと思うのですが、該当レコードを取得する方法がわかりません。 DataGridであれば、クリックされたセルの列と行を抜き出せるのですが DataGridなしの場合はどうすればいいのでしょうか? | ||||
|
投稿日時: 2003-03-24 19:53
追記です。
DataGridをフォームで使用し、クリックされた行を削除する場合の処理は Dim rc As Integer rc = DataGrid1.CurrentCell.RowNumber DataSet.Tables("T_Name").Rows(rc).Delete() で、問題なく処理されました。 今回の場合は削除したい行をテキストボックスより入力して実行ということなのですが テキストボックスに入力された数値をテーブルの全レコードから探し出してそのレコード行番号を取得するということはできないのでしょうか? | ||||
|
投稿日時: 2003-03-24 19:53
例えばSelectメソッドを利用する方法があります。
| ||||
|
投稿日時: 2003-03-25 12:04
NothingBut.NETFXさん、いつもありがとうございます。
Selectメソッドについて理解が不足しているので しっかり調べてから試させていただきます。 | ||||
|
投稿日時: 2003-03-25 17:57
Selectメソッドについて調べてみましたが、配列を抜き出す。という解釈で問題ないのでしょうか?
ソースを参考に試してみましたが、デバッグするとなぜかTextBox1.Textの値が途中で消えてしまい、うまく動作させることができませんでした。 それでもう一度自分なり、考え直してみたところ、以下の方法でなんとか思い通りの動作はできるようになりました。 DataGridを使った場合は DataSet.Tables("T_Name").Rows(DataGrid1.CurrentCell.RowNumber).Delete() ということなので、なんとかRows(int)に該当レコードの行番号さえ入れることができれば・・・。 と言った感じで考えていき、結果として下記のようにすれば思い通りにできました。 =============================================================================== Dim r As DataRow Dim dLgRet As DialogResult Dim dr As Integer DataView1.Sort = "Num" dr = DataView1.Find(TextBox1.Text) r = DStest1.Tables("DGrid").Rows.Find(TextBox1.Text) If Not r Is Nothing Then dLgRet = MessageBox.Show("削除しますか?", "レコード削除", MessageBoxButtons.YesNo, MessageBoxIcon.Question) Select Case dLgRet Case DialogResult.Yes DStest1.Tables("DGrid").Rows(dr).Delete() OleDbDataAdapter1.Update(DStest1, "DGrid") DStest1.Clear() OleDbDataAdapter1.Fill(DStest1) Case DialogResult.No End Select Else MessageBox.Show("削除するレコードが見つかりません。") Return End If =============================================================================== DataViewを使うことで以上のように該当レコードを検索することができたので なんとか思い通りにすることができました。 |
1