自己解決できず、どなたかお助けくださいませ。
環境:OS/Win7 ACCESS2010
やりたいことは、結合テーブルのクエリからPrimaryKeyを取得したいのです。
次の2つのテーブルと2つのフィールドを作成したとします。
Tbl_a.Fld_ID / Tbl_a.Fld_Name
Tbl_b.Fld.ID / Tbl_b.Fld_Sex
※どちらも Fld_ID フィールド を PrimaryKey 名でINDEX設定します。
ACCESSに次のクエリを作成したとします。
SELECT Tbl_a.Fld_ID, Tbl_a.Fld_Name, Tbl_b.Sex
FROM Tbl_a INNER JOIN Tbl_b ON Tbl_a.ID = Tbl_b.ID
クエリ名:Q_AandB
次のVBAを作成したとします。
※引数 VR には10万件の2次元配列 0:ID 1:氏名 2:性別 が入っている
Public Sub UpdateExe(Byval VR As Variant)
Dim DB As DAO.Database: Set DB = CurrentDB
Dim RS As DAO.Recordset: Set RS = DB.OpenRecordset("Q_AandB")
Dim Z As Long
With RS
For Z = 0 To UBound(VR)
.Index = "PrimaryKey" ← ここでエラーが出ます。
.Seek "=", VR(Z,1)
IF .NoMatch Then
.AddNew
!Fld_ID = VR(Z,0) 'ID
!Fld_Name = VR(Z,1) '氏名
!Fld_Sex = VR(Z,2) '性別
.Update
Else
.Edit
!Fld_ID = VR(Z,0) 'ID
!Fld_Name = VR(Z,1) '氏名
!Fld_Sex = VR(Z,2) '性別
.Update
End If
Next Z
.RS.Close
End With
Set RS = Nothing
DB.Close: Set DB = Nothing
End Sub
これを実行すると、「実行エラー'3251': この操作は、このタイプのオブジェクトには
実行できません。」 とのエラーで弾かれてしまいました。
結合テーブルでのプライマリキーの取得がわからず困っております。
以上、何卒よろしくお願い申し上げます。
No.1ベストアンサー
- 回答日時:
Seek 出来るのはレコードセットタイプがDbOpenTableの場合だけです。
ヘルプより
『インデックス付きのテーブル タイプの Recordset オブジェクトで、現在のインデックスの指定された抽出条件を満たすレコードを検索し、そのレコードをカレント レコード にします 。』
で、
クエリの場合に Set RS = DB.OpenRecordset("Q_AandB", dbOpenTable)
と指定しても無効な処理として怒られます。
Seek(Index) を諦めて Rs.FindFirst (やや遅)にするとか
Rs.Filter(もっと遅)にするとか
じゃないですかね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) このマクロの説明文を教えてほしいです。 1 2023/01/12 09:17
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Visual Basic(VBA) フォーム上のリストボックスに重複して表示しています 3 2022/10/19 11:55
- Visual Basic(VBA) VBA チェックボックスの設定について 1 2022/10/24 10:27
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS2007 フォーム 「バリア...
-
Accessでクエリを完了できませ...
-
Access VBA [リモートサーバー...
-
実行時エラー3086 削除クエリ...
-
ACCESSのODBCリンクテーブルに...
-
結合テーブルクエリPrimaryKey...
-
大きなテーブルに対する問い合...
-
PhpMyAdminで作成して実行せよ...
-
SQL Serverのテーブルってどう...
-
ユニオンクエリで繋げられるテ...
-
accessでSQL実行時のテーブル名...
-
VBAの実行時エラー'2522'について
-
Select ~ into ~ で作成した...
-
Access Update文の副問い合わせ
-
SQL文でテーブル作成 Access2002
-
SSIS 変数の値をSQL実行タスク...
-
「マスタ」と「テーブル」の違...
-
ACCESSのSQLで、NULLかNULLでな...
-
accessテーブル作成クエリを実...
-
Accessにインポートしたら並び...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS2007 フォーム 「バリア...
-
Access VBA [リモートサーバー...
-
Accessでクエリを完了できませ...
-
ユニオンクエリで繋げられるテ...
-
ACCESSのODBCリンクテーブルに...
-
大きなテーブルに対する問い合...
-
VBAの実行時エラー'2522'について
-
Select ~ into ~ で作成した...
-
accessでSQL実行時のテーブル名...
-
実行時エラー3086 削除クエリ...
-
TRY CATCHでシステムエラーを検...
-
Access Update文の副問い合わせ
-
Oracleデータベーストリガーの...
-
PhpMyAdminで作成して実行せよ...
-
SQL Serverのテーブルってどう...
-
SQL SERFVER で外部キーのエラ...
-
AccessのテーブルをSQL Server...
-
ACCESSにてテーブルをEXCEL形式...
-
SQL文でテーブル作成 Access2002
-
MS Access2000でエクスポート時...
おすすめ情報