Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
型の不一致
投稿日時: 19/03/12 20:19:25
投稿者: Manabukunn

お世話になっております。
 
 
受診日テーブル
主キー:受診日ID;オートナンバー型
    患者ID;数値型
    受診日;日付型
 
のようなテーブルがあります。
 
そのテーブルを参照してあるフォーム上に存在する受診日IDに入力されている受診日IDを使用して、下記のコードが実行するようにしています。
 
 
Private Sub Form_Current()
 
    If Not Me!受診日ID = 0 Then
 
        Me!PatientID.Caption = DLookup("患者ID", "受診日", "受診日ID=" & Me!受診日ID)
 
        Me!date.Caption = DLookup("受診日", "受診日", "受診日ID=" & Me!受診日ID)
     
    End If
 
     
End Sub
 
これを実行すると→実行時エラー13 型が一致しません。
となってしまいます。上のコードは3つのフォームで使っているのですが2つは問題なく動き、一つは上記のエラートなってしまいます。考えられる原因などありましたらお願いいたします。

回答
投稿日時: 19/03/13 10:16:32
投稿者: sk

引用:
これを実行すると→実行時エラー13 型が一致しません。

そのプロシージャの中のどのステートメントが実行されようとした時に
そのエラーが発生するのかを具体的に明記されることをお奨めします。
 
引用:
Me!PatientID.Caption = DLookup("患者ID", "受診日", "受診日ID=" & Me!受診日ID)

([PatientID]がラベルコントロールであるとして)
例えば DLookup 関数の戻り値が Null であれば
実行時エラー 13 が発生することになるでしょう。
  
引用:
Me!date.Caption = DLookup("受診日", "受診日", "受診日ID=" & Me!受診日ID)

同上。
 
・テーブル[受診日]には、フィールド[受診日ID]の値が
 フォーム上のテキストボックス[受診日ID]の値に等しい
 レコードが存在しない。
 
・テーブル[受診日]には、フィールド[受診日ID]の値が
 フォーム上のテキストボックス[受診日ID]の値と同じである
 レコードが存在するが、そのレコードのフィールド[患者ID]
 またはフィールド[受診日]の値が Null である。
 
引用:
上のコードは3つのフォームで使っているのですが2つは問題なく動き
一つは上記のエラートなってしまいます。

全てのフォームにおいて、テキストボックス[受診日ID]の値を
同じにした(カレントレコードを同じレコードにしている)状態で
比較された上でのお話でしょうか。
 
引用:
そのテーブルを参照してあるフォーム上に存在する受診日IDに
入力されている受診日IDを使用して、下記のコードが実行する
ようにしています。

また、そのフォームのレコードソースがテーブル[受診日]であるならば、
わざわざこのようなコードを実行しなくても、フィールド[患者ID]や[受診日]を
コントロールソースとする連結テキストボックスを詳細セクション上に
配置すれば済む問題なのではないのでしょうか。
(何故テキストボックスではなくラベルなのか、とも言えますが)

投稿日時: 19/03/13 18:00:04
投稿者: Manabukunn

お返事ありがとうございます。
 
 

引用:
テーブル[受診日]には、フィールド[受診日ID]の値が
 フォーム上のテキストボックス[受診日ID]の値に等しい
 レコードが存在しない。

 
まさにこれでした^^;
オープンフォーム時に読み込むテーブル名が間違っていたのに
気が付きました。
初歩的なことで誠に申し訳ございません。
エラーが示される行だけの問題ではないのだということを
痛感いたしました。
今後ともよろしくお願いいたします。