Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1390 / 2272 ツリー ←次へ | 前へ→

【7342】二つのテーブルの内容をチェックするには kumakai 06/2/21(火) 14:00 質問[未読]
【7353】Re:二つのテーブルの内容をチェックするに... 小僧 06/2/22(水) 10:14 発言[未読]
【7375】Re:二つのテーブルの内容をチェックするに... kumakai 06/2/23(木) 15:33 質問[未読]
【7377】Re:二つのテーブルの内容をチェックするに... 小僧 06/2/23(木) 16:56 発言[未読]
【7379】Re:二つのテーブルの内容をチェックするに... kumakai 06/2/23(木) 22:04 質問[未読]
【7380】Re: DFirstで大丈夫なの? たん 06/2/24(金) 8:43 回答[未読]
【7383】Re: 補足 たん 06/2/24(金) 10:29 発言[未読]
【7388】Re: 補足 kumakai 06/2/25(土) 9:38 お礼[未読]

【7342】二つのテーブルの内容をチェックするには
質問  kumakai  - 06/2/21(火) 14:00 -

引用なし
パスワード
   こんにちは
二つのテーブルAA、BBがあります。中のデータをチェックをしたいので、
やり方はわかりません。
ご伝授ください。

AAテーブル、BBテーブルのエリア(一番目の内容)は
AAテーブルの内容、「あ」でない場合は、AAテーブルのデータは違います、
BBテーブルの内容、「い」でない場合は、BBテーブルのデータは違います、
AA、BBテーブルの内容、「あ」、「い」の場合は、正しいです。

AAテーブル
エリア


BBテーブル
エリア


【7353】Re:二つのテーブルの内容をチェックするに...
発言  小僧  - 06/2/22(水) 10:14 -

引用なし
パスワード
   ▼kumakai さん:
こんにちは。

>二つのテーブルAA、BBがあります。中のデータをチェックをしたいので、
>やり方はわかりません。

キツイ言い方になりますが、第3者には何をしたら良いのかが殆ど解りません。

まず、どのような時に

・フォーム上に配置されたコマンドボタンをクリックした時
・テーブルに値が入力される時


どの様に結果を返したいのか
・別に用意したxxxテーブルの結果というフィールドに格納
・Msgbox で表示


をはっきりさせないと、回答が付きにくいと思われますよ。
AAテーブル、BBテーブルの関連性についても情報が欲しい所ですね。

【7375】Re:二つのテーブルの内容をチェックするに...
質問  kumakai  - 06/2/23(木) 15:33 -

引用なし
パスワード
   意味不明な質問で、申し訳ありません。

M1、M2の二つテーブルがあり、共通のフィールド「ModelNo」を持っています。
ここで、両テーブルの最初のレコードの「ModelNo」の値は「あ」と「い」であれば、
Msgboxで「正解」を表示したいです。
以下のコードを書いたのですが、うまくいきません。

Sub T-AS()
If DFirst([ModelNo], M1) = "あ" And DFirst([ModelNo], M2) = "い" Then
  MsgBox "正解"
End If
End Sub

【7377】Re:二つのテーブルの内容をチェックするに...
発言  小僧  - 06/2/23(木) 16:56 -

引用なし
パスワード
   ▼kumakai さん:
こんにちは。

>If DFirst([ModelNo], M1) = "あ" And DFirst([ModelNo], M2) = "い" Then

こちらのコードを活かす形ですと。

If DFirst("ModelNo", "M1") = "あ" And DFirst("ModelNo", "M2") = "い" Then

となりますが、残念ながら必ずしもうまくいく訳ではありません。
(うまく行く事もあります。)

下記参考
[#5903] Re:集計について

Access に「最初のレコード」と認識させる為のフィールドが必要になりますね。

【7379】Re:二つのテーブルの内容をチェックするに...
質問  kumakai  - 06/2/23(木) 22:04 -

引用なし
パスワード
   M1、M2のModelNoの値、
最初、最後のレコードはそれぞれ同一のため、以下の形式で大丈夫かと思いますが、
ご指導ください。

メッセージの表示について、以下のコードで実行する場合は、メッセージはバラバラに
なっているため、改修したいです。三つの情報表示を一つのMsgBoxに表示させたいことは
可能なことでしょうか?

Function TEST001()
If DFirst("ModelNo", "M1") = "あ" And DFirst("ModelNo", "M2") = "い" Then
  MsgBox "M1、M2正解"
ElseIf DFirst("ModelNo", "M1") <> "あ" Then
  MsgBox "M1不正解"
End If
  MsgBox "M2不正解"
End Function

【7380】Re: DFirstで大丈夫なの?
回答  たん  - 06/2/24(金) 8:43 -

引用なし
パスワード
   横から失礼。

DFirstには、下記の技術情報が出ています。
http://support.microsoft.com/kb/208190/ja

DFirstでの取得で正しいのかどうかは、質問者が判断して下さい。


また、

>Function TEST001()

については、下記のようにすべきかと。
(同じDLoookupを繰り返すのは処理が遅くなるだけなので、
 1回処理した結果は変数等に格納し、2度手間かけさせないようにすべき。)

Function TEST001()
Dim wk_Dfirst_1 AS String, wk_Dfirst_2 AS String

wk_Dfirst_1 = Nz(DFirst("ModelNo", "M1"), "")
wk_Dfirst_2 = Nz(DFirst("ModelNo", "M2"), "")

If wk_Dfirst_1 = "あ" And wk_Dfirst_2 = "い" Then
  MsgBox "M1、M2正解"
ElseIf wk_Dfirst_1 = "あ" Then
  MsgBox "M1不正解"
ElseIf wk_Dfirst_2 = "い" Then
  MsgBox "M2不正解"
End If
End Function

# 元コードではEnd Ifの後に、MsgBox "M2不正解"やってますよ。

1行でやらせたくても、M1、M2が正解の場合と、どちらかが不正解の
場合に出すメッセージパターンが違うので、現状の仕様では、同一には、
出来ません。

# 出来なくはないけど、結局、IFで3回チェックするのは変わりません。
# (1行に見えるだけで、結局は3回処理させるので)

MsgBox "M1:" & IIF(wk_Dfirst_1 = "あ","正解","不正解") & CHR(13) & _
 "M2:" & IIF(wk_Dfirst_2 = "い","正解","不正解")

というように、正解の時に出すメッセージパターンと不正解の時に出す
メッセージパターンを同一にすれば可能かと。

【7383】Re: 補足
発言  たん  - 06/2/24(金) 10:29 -

引用なし
パスワード
   >DFirstには、下記の技術情報が出ています。
>http://support.microsoft.com/kb/208190/ja
>
>DFirstでの取得で正しいのかどうかは、質問者が判断して下さい。

データベースでは、レコードを表示させる為の並び順と、
実際にレコードが保存されている順は同一ではありません。

# 詳しくは、小僧さん提示の「並び順」のリンク参照。

なので、例え並び順をレコードに指定していても、レコードが保存されて
いる順は、並び順とは無関係なので、DFirstで並び順での先頭を
取得したいと思っても、取得出来るとは限りません。

Dfirstが取得するのは、保存順の先頭なので。

【7388】Re: 補足
お礼  kumakai  - 06/2/25(土) 9:38 -

引用なし
パスワード
   小僧さん、たんさん
お返事ありがとうございました。
今回のレッスンを通じて、Dfirst関数の理解を深めることができました。
いい勉強になりました。

1390 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078229
(SS)C-BOARD v3.8 is Free