
VB.NETで DataTableを作成 ⇒ ユーザが値を選択 ⇒ 登録時にユーザが選択した値よりDataRow()を利用して、
コードを取得⇒取得したコードをデーターベースに登録
したいのですが、値からコードの取得方法がわかりません。
### 該当のソースコード
Public Class Form4
Dim dt As New DataTable("KoujiTable")
Private Sub Form4_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
' データセットを作成します
' Dim dt As New DataTable("KoujiTable")
dt.Columns.Add("ColumnA", Type.GetType("System.String"))
dt.Columns.Add("ColumnB", Type.GetType("System.String"))
dt.Columns.Add("ColumnC", Type.GetType("System.String"))
dt.Rows.Add("", "")
dt.Rows.Add(100, "AAA", "123")
dt.Rows.Add(200, "BBB", "223")
dt.Rows.Add(300, "CCC", "323")
dt.Rows.Add(400, "dAA", "423")
dt.Rows.Add(500, "eBB", "523")
dt.Rows.Add(600, "fCC", "623")
dt.AcceptChanges()
' マルチカラムコンボボックス型セルを設定します (グレープシテイのスプレッドシートにコンボボックスを作成)
Dim mc As New FarPoint.Win.Spread.CellType.MultiColumnComboBoxCellType
mc.DataSourceList = dt
mc.ListWidth = 260
mc.AcceptsArrowKeys = FarPoint.Win.SuperEdit.AcceptsArrowKeys.AllArrows
mc.AutoSearch = FarPoint.Win.AutoSearch.SingleCharacter
mc.Editable = True '編集を許可する
FpSpread1.ActiveSheet.Cells(2, 2).CellType = mc
end sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim rows As DataRow()
Dim tmp As String
dt.PrimaryKey = New DataColumn() {dt.Columns("ColumnA")}
TextBox1.Text = dt.Rows.Find("AAA")("")
TextBox2.Text = dt.Rows.Find("200")("Columnc")
rows = dt.Select("ColumnC = '423'")
'*** ここで、「ColumnC = '423'」より『ColumnAのコード』(100)を取得したいのですが、
方法を調べても見当たりませんでした。
End Sub
No.3ベストアンサー
- 回答日時:
Dim rows As DataRow()
とあるように、変数rowsは 「DataRowの配列」になっています。
一つ一つのDataRowは rows(0) 等のように添字を指定することで取得できます。
また、For Eachで全てを順番に処理することもできます。
DataRowの中の特定の列を得るには、 列名の文字列か、列番号を指定します。
TextBox2.Text = dt.Rows.Find("200")("Columnc")
これは
Dim dr as DataRow
dt=dt.Rows.Find("200")
でDataRowを取得して
TextBox2.Text =dr("Columnc")
とDataRowの"Columnc"列を取得する、ということを1行にまとめたものです。
DataTable.Select メソッドは、見つかったDataRowの全てを配列で返します。
複数見つかることも、全く見つからないこともあるからです。
見つからない場合どうするのか、複数見つかったらどうするのか、を考慮する必要があります。
No.1
- 回答日時:
有償ソフトらしきもの?なので検証は出来ませんが、ちょっと気になった部分だけ。
dt.Columns.Add("ColumnA", Type.GetType("System.String"))
dt.Columns.Add("ColumnB", Type.GetType("System.String"))
dt.Columns.Add("ColumnC", Type.GetType("System.String"))
において書き込む値は、
dt.Rows.Add(100, "AAA", "123")
と 数値、文字列、文字列 となっているのと、
TextBox2.Text = dt.Rows.Find("200")("Columnc")
と列名が大文字・小文字については区別がないのかなって点ですかね。
今回の質問には関係ない情報かもですかねぇ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
DataSetから、DataTableを取得したい。
C言語・C++・C#
-
DataTableから条件を満たした行を別のDatatableへコピーしたい
その他(プログラミング・Web制作)
-
CloseとDisposeの違い
Visual Basic(VBA)
-
-
4
この行は既に別のテーブルに属しています
Visual Basic(VBA)
-
5
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
6
VB.NET getとsetの概念がわかりません。
Visual Basic(VBA)
-
7
DataTableに特定のフィールドが存在するかどうか調べるには?
Visual Basic(VBA)
-
8
データセットのレコード更新がしたい
Visual Basic(VBA)
-
9
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
10
VB.net 任意の例外を発生させるには・・・
Visual Basic(VBA)
-
11
VB.NET2005 TextBox 高さ(Height) 変更
Visual Basic(VBA)
-
12
オブジェクト参照がオブジェクト インスタンスに設定されていません というエラーについて
Microsoft ASP
-
13
別フォームから戻ったときのイベント
Visual Basic(VBA)
-
14
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
15
VB.NETで小数点以下の桁数を取得したい
その他(ソフトウェア)
-
16
VB.NET Excelを読み込んでDataTableに格納し、DBにデータをINSERTする
Microsoft ASP
-
17
2つのDataTableをJoin
Visual Basic(VBA)
-
18
SPREAD(GrapeCity)のセルにフォーカスを設定するにはどうしたらいいのでしょうか?
Visual Basic(VBA)
-
19
VB.NETでDataTableにデータ追加したい
Visual Basic(VBA)
-
20
配列の重複する値とその個数を取得したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
PHP8でWarning:Undefined varia...
-
VBでインストール済みアプリケ...
-
vbaで、オートシェイプ文字幅と...
-
コンボボックスの表示は最大何行?
-
ListView 項目の選択/選択解除...
-
データ数をカウントしたいのですが
-
利用者側のMACアドレスを取得し...
-
outlookでメールのフォルダパス...
-
コンボボックス表示文字列を取...
-
count(*)で取得した値をJAVAの...
-
URIでのページの移動について
-
アクセスしてきたコンピュータ...
-
ファイル名の取得について
-
VB .netにて現在時刻+1時間後...
-
VBA:小数点以下の数字を取得で...
-
モニタの物理解像度を得る(Win3...
-
VBAでActiveDirectoryのユーザ...
-
バージョンナンバーの取得
-
PostgresSQL JDBC で Select結...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
PHP8でWarning:Undefined varia...
-
データ数をカウントしたいのですが
-
VBAでActiveDirectoryのユーザ...
-
ListView 項目の選択/選択解除...
-
count(*)で取得した値をJAVAの...
-
利用者側のMACアドレスを取得し...
-
Flexgridで選択行の列の値を取...
-
VBA:小数点以下の数字を取得で...
-
JavaScriptにおいてコンピュー...
-
Spreadの選択行の取得について
-
ASP(vbscript)におけるクライア...
-
エクセルVBAで複数選択できるよ...
-
asp.netでtextboxの値を取得
-
コンボボックス表示文字列を取...
-
現在時刻をミリ秒まで取得
-
EXCELのリストボックスを選択し...
-
Excel VBA でログインしてい...
-
URIでのページの移動について
-
VBA リストボックス内の値を複...
おすすめ情報
TextBox1.Text = dt.Rows.Find("AAA")("") <-----*a
TextBox2.Text = dt.Rows.Find("200")("Columnc") <-----*b
rows = dt.Select("ColumnC = '423'") <-------*c
*a TextBox1.Text は、エラーでこけない為の確認です。(今回のQAに直接関係ありません)
*b,*cは正常に動作することは確認できてます。
QAの趣旨は、rows = dt.Select("ColumnC = '423'")より
rows の該当行からコード"ColumnA"を抽出したいのです。