
Datatableの主キーで行取得する方法が
わからなくて困っています。
やりたいことは・・・
・DataGridの値をDataTableに反映する。
・DataTableにデータが存在するかチェックする。
・更新データを特定するために条件設定してDataTableの行取得する。
・取得した行の内容を更新してupdateをする。
※取得するデータはuniqueです。(重複なデータはない)
行取得にはFindBy<XXXX>を使いました。
主キーが1つのカラムのDatatableではできたのですが、
主キーが2つ以上のカラムのDatatableの時が
うまくいかず、やりかたもわからず困っています。
ネットで検索してもやり方が書いてないです。
(私が見る箇所を間違ってるか内容を理解してないのでしょうか?)
違う方法を考えないといけないのでしょうか?
ご教授ください。よろしくお願いします。
下記にサンプルのコードを書いておきます。
'datatableとdatatableadapter
Public dt = New dsDB.HogeDataTable
Public da = New dsDBTableAdapters.HogeTA
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
Dim Row As dsDB.MgCamRow '行取得結果
Dim i As Integer
'dgHogeはDataGridです。
For i = 0 To dgHoge.Rows.Count - 1
'以下の4カラムをまとめて主キーにしています。
'4カラムの情報を条件にします。
'データ型はintegerです。
iRow1 = dgHoge("A", i).Value
iRow2 = dgHoge("B", i).Value
iRow3 = dgHoge("C", i).Value
iRow4 = dgHoge("D", i).Value
'※この処理をしようとしてうまくいきません。
'どのように主キーの情報を与えるのでしょうか。
'それとも違う方法が良いのでしょうか。
Row = dtHoge.FindByXXXX(XXXX)
Row.A = iRow1
Row.B = iRow2
Row.C = iRow3
Row.D = iRow4
Row.E = dgCam("E, i).Value
Row.F = dgCam("F, i).Value
Row.G = dgCam("G, i).Value
Next
daHoge.update(dtHoge)
End Sub
No.1ベストアンサー
- 回答日時:
ウィザードが作成した FindBy主キー メソッドなら
主キーのデータを ,で区切って与えるだけなのでは ?
row = dtHoge.FindByXXX( iRow1, iRow2, iRow3, iRow4 )
といった具合で取得して
if not row Is Nothing then
などで 取得できたかどうかの判定を行いましょう
# 2005以降なら
# if row IsNot Nothing then
# といった判定も可能です
さっそくの回答ありがとうございます。
試してみたところ別のエラーが出ました。
FindByXXXが型HogeDataTableにないというエラーです。
XXXを主キーの名前にしています。
主キーはデザイナーのテーブル内で
主キーの編集でつくったのですが、
これがまずいのでしょうか?
回答に質問を重ねて申しわけないです。
つまらないミスをしているかもしれないので
もう少し確認してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) Sub 分けてソートして貼り付ける() Dim srcSheet As Worksheet Dim 6 2023/08/04 19:57
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) エクセル VBA 難しいです 1 2023/02/21 15:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
VBA:小数点以下の数字を取得で...
-
ListView 項目の選択/選択解除...
-
VBAでActiveDirectoryのユーザ...
-
Spreadの選択行の取得について
-
CGIで受信パラメータを解析...
-
like演算子内に変数って使えな...
-
gethostbyaddrでのホスト名取得...
-
「Excel VBA」 Webクエリ マク...
-
時間を分に変換するプログラム
-
現在時刻をミリ秒まで取得
-
LISTを他のクラスから使用したい
-
エクセルVBA リストボック...
-
C#でネットワーク(LAN)上のPC...
-
Excel VBA でログインしてい...
-
VBA Shapesの座標からセル位置...
-
JavaScriptでWindowsログオンID...
-
コンボボックス表示文字列を取...
-
特定のウィンドウのキャプチャ...
-
VBScriptでのPCカード操作方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
ListView 項目の選択/選択解除...
-
VBA:小数点以下の数字を取得で...
-
VBAでActiveDirectoryのユーザ...
-
利用者側のMACアドレスを取得し...
-
count(*)で取得した値をJAVAの...
-
Flexgridで選択行の列の値を取...
-
Spreadの選択行の取得について
-
like演算子内に変数って使えな...
-
EXCELのリストボックスを選択し...
-
データ数をカウントしたいのですが
-
VBA Shapesの座標からセル位置...
-
NTPサーバから時刻を取得する
-
VBA リストボックス内の値を複...
-
エクセルVBAで複数選択できるよ...
-
JavaScriptにおいてコンピュー...
-
時間を分に変換するプログラム
-
JavaScriptでWindowsログオンID...
-
「Excel VBA」 Webクエリ マク...
-
javaで週の最初の日(例:月曜日...
おすすめ情報