DLookup関数と、DMAX関数を組み合わせて、検索をすれば良いのですが、
表示する項目が多い為、DAOを使って検索を考えています。
検索するコードが複数存在し、最大の日付のレコードを表示
したいと思っています。
コードの名称は・・・
Quotation_B_Noです。
日付が入っている名称は
Input_dayです。
フォーム内のMe.W_Revise_Noにコードを入力して、検索を行います。
検索するテーブルは、T_Quotation_B_request_received_tableです。
この中にある。
コードを最初にあるか、どうかをチェックして、
あれば、そのコードに対する、最大の日付のレコードを
検索したいと思っています。
現在、このように組みましたが、
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim han As Date
Set db = CurrentDb()
Set rs = db.OpenRecordset("T_Quotation_B_request_received_table", dbOpenDynaset)
rs.FindFirst "Quotation_B_No ='" & Me.W_Revise_No & "'"
If rs.NoMatch = True Then
MsgBox "Not found Supplier code"
Cancel = True
Me.W_Revise_No.Undo
Exit Sub
Else
han = DMax("Input_day", "T_Quotation_B_request_received_table ", "Quotation_B_No ='" & Me.W_Revise_No & "'")
rs.FindFirst "#" & "han" & "#" And "Quotation_B_No ='" & Me.W_Revise_No & "'"→ここで、エラーが発生します。
Me.W_Control_No = rs!Control_No
・・・・・
End If
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
どのように組めば良いのか、さっぱり分かりません。
ご指導、宜しくお願いします。
No.1ベストアンサー
- 回答日時:
先にテーブル[T_Quotation_B_request_received_table]の列[Quotation_B_No]毎の最大日付を取得するクエリを作成しておく、ではいかがでしょう?
select Quotation_B_No, max(Input_day)
from T_Quotation_B_request_received_table
group by Quotation_B_No;
Quotation_B_Noが存在しないものは検索できませんので、(1)検索できるか(2)検索できたら最大日付を取得、の二段階を踏まなくてもすみます。
No.3
- 回答日時:
<tab1>
ID___Quotation_B_No___Input_day
1____A_001________________2007/10/01
2____A_001________________2007/11/01
3____A_002________________2007/10/01
4____A_002________________2007/12/01
このようなテーブルがあるとします。
フォームには、
field_ID
field_Quotation_B_No
field_Input_day
という検索したレコード情報を表示するテキストボックスを配置。
さらに、[W_Revise_No] を配置。
さて、コマンドボタンをクリックして該当するレコード情報を表示したいとのこと。
で、実際に以下のコードを書いて試してみました。
Private Sub コマンド0_Click()
Dim isOk As Boolean
Dim strHiduke As String
Dim Msg As String
If Len(Me.W_Revise_No & "") Then
strHiduke = DBMax("input_day", "Tab1", "Quotation_B_No='" & Me.W_Revise_No & "'") & ""
If Len(strHiduke) Then
isOk = DisplayRecord(Me, "SELECT * FROM Tab1 WHERE Input_Day=#" & strHiduke & "#")
If isOk Then
Msg = "フォームに該当するレコード情報を表示しました"
End If
Else
Msg = Me.W_Revise_No & " に対応する日付はありません。"
End If
Else
Msg = "先に、'W_Revise_No' を入力して下さい。"
End If
MsgBox Msg
End Sub
まあ、ごくごく簡単なコードを書いているだけです。
こんなやり方もありますよ。
要は、質問者の書いているコードを関数化しただけです。
よかったら、DBMax関数とDisplayRecord関数を補足します。
No.2
- 回答日時:
>rs.FindFirst "#" & "han" & "#" And・・・
エラーの原因はFindfirstの構文がおかしいからです
引数にはcriteria(条件式)を与えなきゃだめですよ
>"#" & "han" & "#"
これは日付リテラルで条件式ではありません
それより
>日付の最大値を求めるには
> DLookup関数と、DMAX関数を組み合わせて、検索をすれば良いのですが、
この認識がおかしいですね
普通日付が最大のレコードを求めるには抽出クエリで
抽出条件にサブクエリまたはDMax関数を使います
>表示する項目が多い為
だったらなおさらクエリのほうが便利だと思いますが
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
ACCESS 一番最新の日付の金額を出したいのですが・・
その他(データベース)
-
ACCESSで、DMax関数の条件の書き方
Access(アクセス)
-
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
-
4
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
5
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
6
AccessのDMax関数の複数条件式に関して
Access(アクセス)
-
7
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
8
アクセスVBAのMe!と[ ]
Access(アクセス)
-
9
Access サブフォームでの選択行の取得
その他(データベース)
-
10
日付と文字列を条件としてDLookup関数で抽出さ
その他(プログラミング・Web制作)
-
11
ACCESS クエリの抽出条件に他のテーブルの値を参照する方法
Access(アクセス)
-
12
どこにもフォーカスを当てたくない
Access(アクセス)
-
13
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
14
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
15
あるフィールドの最大値を条件にデータを抽出する方法
その他(データベース)
-
16
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
17
2つ目のレコードの値を取得するには?
Access(アクセス)
-
18
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
19
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
-
20
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「24日の0時」って・・・
-
パソコンで購入したデーターが...
-
回覧板の日付について質問です...
-
会社や役所などに提出する書類...
-
日付の大小の表現
-
ACCESSVBAのseekで複数INDEX検...
-
Access VBA SQL文で教えてください
-
下の画像はアンドロイドタブレ...
-
自己推薦書についてです! 自己...
-
Access関数: なぜ日付を指定す...
-
エクセルで日付け表示で、明治...
-
vba 今日の日付が変われば自動...
-
差し込み印刷に当日の日付が入...
-
ピボットテーブルの日付フィル...
-
「時間」、「期日」、「日付」...
-
差込印刷 縦書きで和暦(漢数...
-
郵便 メータースタンプの数字...
-
ACCESS SQL 日付での検索がで...
-
「日にち」と「日付」の違いに...
-
履歴書の日付間違いで落ちますか。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パソコンで購入したデーターが...
-
「24日の0時」って・・・
-
回覧板の日付について質問です...
-
差し込み印刷に当日の日付が入...
-
日付の大小の表現
-
「時間」、「期日」、「日付」...
-
エクセル マクロ 名前を付けて...
-
エクセルで日付別にシートを分...
-
履歴書の日付間違いで落ちますか。
-
EXCELで日付を****年上期、****...
-
エクセルで6ヵ月後を自動入力で...
-
ACCESSで日付ごとに自動連番(...
-
WEEKDAYが反映されない
-
2つの日付の中間の日付 エク...
-
Excelでヘッダに前日の日付を表...
-
エクセルで日付け表示で、明治...
-
ACCESSで1月1日~12月31日まで...
-
アンドロイドスマホ。カメラに...
-
差込印刷 縦書きで和暦(漢数...
-
Excel関数 基準日に一番近い指...
おすすめ情報