
どうもお世話になります。
Accessに関しましての質問でございます。
以下のVBAでコンパイルエラーが出るのですが、
どのように致したらエラーが出なくなるでしょうか?
こちらのプログラムは、
チェックインから宿泊最終日を入力すると
日付を1日ずつ増やして、ほかのデータは
固定したままフォームに入力するプログラムです。
ただし、請求書_詳細IDもオートナンバー型です。
--------------------------------------------
Option Compare Database
Private Sub レコードの追加_Click()
Dim strWHERE As String
Dim D As Date
strWHERE = ""
strWHERE = strWHERE & " AND 宿泊日 >=#" & Me.チェックイン & "#"
strWHERE = strWHERE & " AND 宿泊日 <=#" & Me.宿泊最終日 & "#"
If DCount("*", "Qh2f_請求書_詳細", strWHERE) = 0 Then '条件に当て嵌まるデータ件数を取得
Me.Fh2f_請求書_詳細_sub.Requery
With Me.Fh2f_請求書_詳細_sub.Form.RecordsetClone
For D = Me.チェックイン To Me.宿泊最終日
.FindFirst "宿泊日=#" & D & "#AND 請求書_詳細ID ='" & Me.請求書_詳細ID & "'"
If .NoMatch Then
.AddNew
!宿泊日 = D
!請求書_詳細ID = Me.請求書_詳細ID
!部屋番 = Me.部屋番
!氏名2 = Me.氏名2
!商品名 = Me.商品名
!単価 = Me.単価
!人数 = Me.人数
!宿泊数 = Me.宿泊数
!備考 = Me.備考
.Update
End If
Next
End With
Else
MsgBox ("すでに同じ日付が入っています")
End If
End Sub
--------------------------------------------
こちらの設定にしたところ
「コンパイルエラー」
「メソッドまたはデータメンバが見つかりません。」という
エラーが出てしまいます。
そうして、「.請求書_詳細ID」だけが
ブルーになります。
どうしたら、エラーを消して
連投できるようになるでしょうか?
大変お手数とはぞんじますが、
ご返信お待ち致しております。
【補足】
実は他の方に教えてもらった
プログラムを応用して作ったものです。
VBA初心者です。
どうぞよろしくお願い致します。
No.5ベストアンサー
- 回答日時:
>Private Sub レコードの追加_Click()
のコマンドボタンなどがメインフォーム上にあり
.FindFirst "宿泊日=#" & D & "# AND 請求書_詳細ID =" & Me.請求書_詳細ID
の末尾のMe.請求書_詳細IDがサブフォーム上にあるのでしたら
.FindFirst "宿泊日=#" & D & "# AND 請求書_詳細ID =" & Me!サブフォームコントロール名.Form!請求書_詳細ID
でしょうけど、。。。
http://hatenachips.blog34.fc2.com/blog-entry-347 …
Me.請求書_詳細ID が重複している、
OR コントロール名を間違えている、かも?
Me.請求書_詳細ID は何処にあるのでしょう。?
謎の仕様。
上手く行かなかったらより単純に
.FindFirst "宿泊日=#" & D & "# AND 請求書_詳細ID =1"
でもお試しを。
この度は度重なるご返信をありがとうございます。いろいろ参考にさせていただきましたが、あれこれ試した結果無事できるようになりました。どうもありがとうございます。
No.4
- 回答日時:
>請求書_詳細IDもオートナンバー型
であるならば、
>請求書_詳細ID ='" & Me.請求書_詳細ID & "'"
で抽出されるデータは多くて一個しかないということになり、それがなかった場合でも
>!請求書_詳細ID = Me.請求書_詳細ID
繰り返し入れることができなくなるような気がする。
お金に関することなので、状況があまりよくわかっていないので、間違っていてもかまわないという前提の元に話を進めるなら、
・「請求書_親ID」みたいなフィールドを追加し、
セレクト文を
・・・請求書_親ID ='" & Me.請求書_ID & "'"
として、インサートを
.addnew
・・・
!請求書_親ID = Me.請求書_ID
・・・
.update
とする。
インサートするフィールドを眺めていると、テーブルの構造がいまいちな気がして、もう少しRDBについて勉強をしたほうが良いというアドバイスがしたくなるけど、まあ、それは別な話。
No.3
- 回答日時:
ANo2は無視してください。
エラーの出ている行を勘違いしました。
スミマセンでした。
度重なるご返答ありがとうございます。なんとかできるようになりたいです。VBAって本当に難しいですね。本を読んでもよく分かりません。この度はどうもありがとうございます。
No.2
- 回答日時:
フォームの請求書_詳細IDを入れるテキストボックスの名称が間違っている
可能性がありますので、ご確認ください。
というか、me.を入れたときに出てくる候補のどれかを選ぶようにすれば、
そのようなことにはならないと思います。
丁寧なご返信ありがとうございます。
無視とのことですが、一応返信をさせてください。
meの候補には出て参りません。
別の候補はたくさん出てくるのですが・・・
請求書IDとか。ただ、これは親のIDなので関係ないかと思います。
どうでしょうか?
再び話は戻りまして、請求書_詳細IDですが
サブフォーム(出力用)にはテキストボックスはあります。
そのかわり、入力用のテキストボックスはありません。
どうでしょうか? よくわからなくてどうもすみません。
後、外せない理由があって、
請求書IDはオートメーション型ではありません。
数値型になっております。こちらは関係あるでしょうか?
No.1
- 回答日時:
ただし、請求書_詳細IDもオートナンバー型です。
なので、どの行でエラーなのか不明ですが、とりあえず、
.FindFirst "宿泊日=#" & D & "#AND 請求書_詳細ID ='" & Me.請求書_詳細ID & "'"
↓
.FindFirst "宿泊日=#" & D & "# AND 請求書_詳細ID =" & Me.請求書_詳細ID
です。
数値型の場合はシングルクォートで囲みません。
文字列型の場合には必要になります。
かな?
ご返信ありがとうございます。
またわかりやすい解説をありがとうございます。
ただ、修正しましたが、やはり同じ個所にエラーが出てしまいます。
どうしたらよいでしょうか?
.FindFirst "宿泊日=#" & D & "# AND 請求書_詳細ID =" & Me.請求書_詳細ID
の一番末尾の「.請求書_詳細ID」がエラーとなります。
ご指南いただけましたら幸いでございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
access2021 VBA メソッドまたはデータメンバーが見つかりません エラー発生
Access(アクセス)
-
Access2003 メソッドまたはデータメンバが見つかりません
Visual Basic(VBA)
-
エラー「メソッドまたはデータメンバが見つかりません」
Access(アクセス)
-
-
4
Accessレポートのチェックボックスを大きくする方法
Access(アクセス)
-
5
新規レコード行を非表示にしたい
Access(アクセス)
-
6
ACCESSテーブルを RecordSet以外で1レコードづつ読む方法
Visual Basic(VBA)
-
7
アクセスクエリ(複数)→マクロ→エクセル出力(ワークシート別)
その他(パソコン・スマホ・電化製品)
-
8
アクセスのテキストボックス マイナスなら赤文字で
Access(アクセス)
-
9
Accessのサブフォームから値を参照する方法について
その他(データベース)
-
10
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
11
アクセスのマクロ
Visual Basic(VBA)
-
12
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
13
コンパイルすると「メソッドまたはデータメンバが見つかりません」
Visual Basic(VBA)
-
14
access コンボボックス初期表示について
Visual Basic(VBA)
-
15
Access2002 フォームを閉じるたびに「このフォームの変更を保存しますか?」と表示される
その他(データベース)
-
16
Access 複数フォームを開き、画面の最上面にしたいフォームをコント
その他(データベース)
-
17
VB6のプロジェクトロードエラーについて
Visual Basic(VBA)
-
18
access別のテーブルを参照してテキストボックスに値を表示、編集したい
Access(アクセス)
-
19
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
20
アクセス2016 チェックボックス☑表記が-1,0表記になってしまったので直す方法
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
選択したチェックボックスのみ...
-
Accessのフォーム上にレコード...
-
アクセスのフォームのビューが...
-
アクセス:フォームを閉じずに...
-
Formからの複数選択抽出条件に...
-
Access 別フォームへの再クエ...
-
Access2002 フォームを閉じるた...
-
アクセスでテーブルの変更内容...
-
Accessのフォーム画面について
-
ACCESSのフォームからデータの...
-
入力途中の入力した値をすべて...
-
帳票フォームに全レコードを表...
-
アクセスでの項目追加について...
-
アクセス非連結フォームのテキ...
-
Accessのフォームに表示...
-
Accessのメニュー画面
-
ACCESSフォームでのレコード数...
-
Accessが不良です
-
Access フォーム上でコンボボッ...
-
accessの自動更新処理をできな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Formからの複数選択抽出条件に...
-
アクセス:フォームを閉じずに...
-
Accessのフォーム上にレコード...
-
選択したチェックボックスのみ...
-
アクセスのフォームのビューが...
-
ACCESSのフォームからデータの...
-
Access 別フォームへの再クエ...
-
アクセスでテーブルの変更内容...
-
accessの自動更新処理をできな...
-
アクセスでの項目追加について...
-
Access フォーム上でコンボボッ...
-
Access2002 フォームを閉じるた...
-
アクセス 0以外をカウントす...
-
帳票フォームに全レコードを表...
-
入力途中の入力した値をすべて...
-
Accessのハイパーリンクのパス...
-
ACCESSで入力フォームをHTMLフ...
-
Accessフォームのテキストボッ...
-
Accessのフォーム画面について
-
「メソッドまたはデータメンバ...
おすすめ情報