質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Q&A

解決済

1回答

2482閲覧

VBA

bird5678a

総合スコア29

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

0グッド

0クリップ

投稿2015/11/28 12:03

お尋ねします。

ACCESSで商品テーブルのフィールドで

IIf([テーブル1]![フィールド1]=[テーブル2]![フィールド1],True,False)

IIf([テーブル1]![フィールド2]=[テーブル2]![フィールド2],True,False)

IIf([テーブル1]![フィールド3]=[テーブル2]![フィールド3],True,False)

上記でVBAのコードをかき、一致しないデータをフラグをたてるコードの書き方をご教授ください。

If 条件式1 Then
条件式1が真(True)の場合に実行される処理
ElseIf 条件式2 Then
条件式2が真(True)の場合に実行される処理
・・・
Else
すべての条件式が偽(False)の場合に実行される処理
End If

Select Case 判断条件の対象
Case 条件1
条件1が真(True)の場合に実行される処理
Case 条件2
条件2が真(True)の場合に実行される処理
・・・
Case Else
すべての条件式が偽(False)の場合に実行される処理
End Select

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

izkn

2016/02/01 10:17

こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました 「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。
guest

回答1

0

ベストアンサー

一致しないデータをフラグをたてるコード

VBAで実現させる事ではなく、クエリで実現させるのが一般的かと思います。

例えば、一番簡単な実現方法としては、
クエリウイザードの不一致クエリがあります。
不一致クエリで作成したSQLは以下となっています。

テーブル1とテーブル2を左結合して、テーブル2がNullの物を出力しています。
逆パターンも作れば、それぞれの不一致が確認できます。

SQL

1SELECT [テーブル1].* 2FROM テーブル1 LEFT JOIN テーブル2 ON [テーブル1].[フィールド1] = [テーブル2].[フィールド1] 3WHERE ((([テーブル2].[フィールド1]) Is Null));

さらに、等価結合してあげれば、一致するものが出力されます。

SQL

1SELECT [テーブル1].[フィールド1] 2FROM テーブル1 INNER JOIN テーブル2 ON [テーブル1].[フィールド1] = [テーブル2].[フィールド1];

①これらのクエリをVBA内でクエリ発行。
②クエリ結果の値を配列やコレクションで取得。
③取得した行数文、Forなどの繰り返し文で実行
④繰り返し文内で条件分岐させれば、お望みの処理は可能かと思います。

元のテーブルにフラグを書き込みたいとの事であれば、条件分岐の中でInsert文を発行すれば可能です。

VBAはあくまでプログラムなので、データを結び付けてゴニョゴニョする場合は、
データベースの機能(クエリ=SQL)を使った方が便利ですよ。

追記:
VBA側(プログラム側)でも出来なくはないですが、複雑怪奇になります。
それを解消する為に考え出されたのが、RDB(Relational Database)であり、
SQL(Structured English Query Language)=クエリです。
余談として、スピードを重視する一部業界では、
逆に、SQLを使わず複雑怪奇にプログラムで実現させている場合もあります。

投稿2015/11/28 13:56

編集2015/11/28 14:17
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問