teratail header banner
teratail header banner
質問するログイン新規登録

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

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

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

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

1回答

5223閲覧

クエリで最新の日付を抽出したい

bee96

総合スコア8

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2020/10/30 06:31

編集2020/10/30 07:52

0

0

accessについて教えてください。 クエリで最新の日付を抽出する関数をいれたのですが構文エラーになってしまいます。
DMax("年月日","社員マスタ","社員番号=" & [社員マスタ].[社員番号])
こちらの式を年月日というフィールドに入れました。
しかし、「クエリ式'社員番号='の構文エラー:演算子がありません」と表示されます。 どこが間違っているか指摘頂ければと思います。
よろしくお願いいたします。

社員マスタの社員番号:数値型
年月日  :日付/時刻型

SQL

SELECT 社員マスタ.社員番号, 社員マスタ.氏名, 社員マスタ.入社年月日, 社員マスタ.生年月日, 社員マスタ.郵便番号, 社員マスタ.都道府県, 社員マスタ.市区町村, 社員マスタ.番地, 社員マスタ.[マンション等], 社員マスタ.退職, ([社員マスタ].[都道府県] & ([社員マスタ].[市区町村]) & [社員マスタ].[番地] & ([社員マスタ].[マンション等])) AS 全住所, DateDiff("yyyy",[生年月日],Date())+(Format([生年月日],"mmdd")>Format(Date(),"mmdd")) & "歳" AS 年齢, 社員マスタ.年月日 FROM 社員マスタ LEFT JOIN 社員マスタ ON 社員マスタ.社員番号 = 社員マスタ.社員番号 WHERE (((社員マスタ.退職)=False) And ((社員マスタ.年月日)=DMax("年月日","社員マスタ","社員番号=" & 社員マスタ.社員番号)));

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

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

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

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

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

sazi

2020/10/30 06:38

社員マスタに社員番号が空のデータはありませんか?
bee96

2020/10/30 06:42

社員番号が空のデータはありません。 社員番号は入力されていてもフィールドになにも入力されていないレコードはあります・・・
sazi

2020/10/30 06:46 編集

クエリーをSQLビューに切り替えて、内容を質問に追記して貰えますか? DMaxに拘らないなら、サブクエリーでも同じことは出来ますので。
bee96

2020/10/30 07:05

追記いたしました。
sazi

2020/10/30 07:07

一部ではなく全体でお願いします
bee96

2020/10/30 07:52

追記しました。
hatena19

2020/10/31 00:35 編集

社員マスターの「年月日」というのは何の年月日なのでしょうか。 SQLを見ると「入社年月日」「生年月日」はありますがそれとは別に「年月日」というフィールドがあるのですか。 社員マスターの主キーフィールドはなんですか。 また、最新日というのは何でグループ化した場合の最新なんでしょうか。社員番号でグループ化した最新日ということですか。 可能なら、サンプルデータを提示して、希望の出力結果も提示してもらうと分かり安いです。
guest

回答1

0

ベストアンサー

[年月日]は履歴管理用ですか?
それはともかく、LEFT JOIN句は不要ではないでしょうか。

SQL

1SELECT 社員マスタ.社員番号, 社員マスタ.氏名, 社員マスタ.入社年月日, 社員マスタ.生年月日, 社員マスタ.郵便番号, 社員マスタ.都道府県, 社員マスタ.市区町村, 社員マスタ.番地, 社員マスタ.[マンション等], 社員マスタ.退職, ([社員マスタ].[都道府県] & ([社員マスタ].[市区町村]) & [社員マスタ].[番地] & ([社員マスタ].[マンション等])) AS 全住所, DateDiff("yyyy",[生年月日],Date())+(Format([生年月日],"mmdd")>Format(Date(),"mmdd")) & "歳" AS 年齢, 社員マスタ.年月日 2FROM 社員マスタ 3WHERE (((社員マスタ.退職)=False) And ((社員マスタ.年月日)=DMax("年月日","社員マスタ","社員番号=" & 社員マスタ.社員番号)));

投稿2020/11/01 19:13

kitasue

総合スコア314

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問