Access (一般機能)

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

 
(Windows 10全般 : Access 2016)
フォームのフィールドに最大値
投稿日時: 19/10/28 17:14:20
投稿者: Cyber033

フォームで新規レコード入力時、フィールド1にフィールド1の文字列(数字)とフィールド2の文字列(数字)を結合した値の最大値のフィールド1の桁数分とフィールド2の桁数分のみ表示させたい。
  例)フィールド1 フィールド2
         2019001 001
         2019001 002
         2019002 000
         2019003 000
         2019003 001
         2019003 002
         2019004 000
 
  新規
     2019004 000

回答
投稿日時: 19/10/29 03:48:23
投稿者: hatena
投稿者のウェブサイトに移動

下記でどうでしょうか。
 
フィールド1のテキストボックスの規定値プロパティ
=DMax("フィールド1","テーブル名")
 
フィールド2のテキストボックスの規定値プロパティ
=DMax("フィールド2","テーブル名","フィールド1='" & [フィールド1] & "'")

投稿日時: 19/10/29 13:53:12
投稿者: Cyber033

早速 フォームのフィールドのプロパティシートで式ビルダーへ下記の如く入力しました。
 
フィールド1(工番)の規定値プロパティ
=DMax("工番","機器リスト")
 
フィールド2(枝番)の規定値プロパティ
=DMax("枝番","機器リスト","工番='" & [工番} & "'")
 
レコード新規はフィールド1には工番の最大値が表示されましたが、フィールド2は
エラーと表示されました。

回答
投稿日時: 19/10/29 17:32:05
投稿者: hatena
投稿者のウェブサイトに移動

=DMax("枝番","機器リスト","工番='" & [工番} & "'")
 
を下記に修正してください。
 
=DMax("枝番","機器リスト","工番='" & [工番] & "'")

投稿日時: 19/10/30 16:24:07
投稿者: Cyber033

hatena様 申し訳ありません。
当方でフィールド2の式ビルダーに入れた式は[工番}ではなく[工番]でした。
よってhatena様からの御指示通りに入力したつもりです。

回答
投稿日時: 19/10/30 16:57:34
投稿者: hatena
投稿者のウェブサイトに移動

当方で質問通りのテーブルとそれをソースとするフォームを作成して、確認してみましたが、
新規レコードには、
2019004 000
と正しく表示されました。
 
もう一度、間違いがないか確認してみてください。

回答
投稿日時: 19/10/30 17:04:39
投稿者: hatena
投稿者のウェブサイトに移動

念のために確認ですが、
「工番」「枝番」フィールドのデータ型は、「短いテキスト」(テキスト型)になってますよね。

投稿日時: 19/11/01 11:29:45
投稿者: Cyber033

見た目は合っているように思えますが、" ' & , の後は半角スペースの有無により違ってしまうの
でしょうか。 工番 枝番フィールドともデータ型はテキストにしています。

投稿日時: 19/11/01 11:36:15
投稿者: Cyber033

"フィールド1='" & [フィールド1] & "'"の構文の意味がよくわかりません。
これを教えてください。

回答
投稿日時: 19/11/01 13:41:41
投稿者: hatena
投稿者のウェブサイトに移動

Cyber033 さんの引用:
"フィールド1='" & [フィールド1] & "'"の構文の意味がよくわかりません。
これを教えてください。

 
DMax関数の第3引数には、SQLの抽出条件式を文字列として設定します。
 
フォーム上の [フィールド1] の値が 2019004 の場合、
"フィールド1='" & [フィールド1] & "'"
は、
"フィールド1='2019004'"
という文字列になります。
これがSQLの抽出条件になり、その条件のなかでの最大値が取得できます。
SQLではテキスト型のデータは''で囲むという決まりがあります。
 

投稿日時: 19/11/01 15:31:39
投稿者: Cyber033

hatena様
御面倒をかけています。
 
式ビルダーに再度、御指示通り打ち込んでみてもやはりエラーとなってしまいます。
ACCESSは2007〜2016ファイルとなっており、何か考えられる問題点はあるでしょうか。

回答
投稿日時: 19/11/01 15:44:14
投稿者: sk

引用:
工番 枝番フィールドともデータ型はテキストにしています。

引用:
=DMax("工番","機器リスト")

引用:
レコード新規はフィールド1には工番の最大値が表示されました

引用:
=DMax("枝番","機器リスト","工番='" & [工番] & "'")

引用:
フィールド2はエラーと表示されました。

DMax 関数の第 3 引数 Criteria に渡している文字列式において、
"=" や "'" が半角文字ではなく全角文字の "=" や "’" に
なっていたりはしないでしょうか。

投稿日時: 19/11/05 10:39:21
投稿者: Cyber033

ACCESSは6,7年ぶりのトライで、規定値等の式入力方法を忘れてしまい、御面倒を
おかけします。
フィールドの工番、枝番の規定値プロパティに再度半角で、
  工番の規定値:=DMax("工番","機器リスト")
    枝番の規定値:=DMax("枝番","機器リスト","工番='" & [工番] & "'")
と入力し、保存しました。
すると保存中エラーとなり、'機器リスト.工番'に設定されている入力規則又は
規定値の関数'DMax'が見つかりませんとjetデータベースエンジンで入力検査の
あるフィールド'工番' テーブル'機器リスト'の規定値が認識されません。
と表示されました。

回答
投稿日時: 19/11/05 11:45:40
投稿者: sk

引用:
フィールドの工番、枝番の規定値プロパティに再度半角で、
  工番の規定値:=DMax("工番","機器リスト")
    枝番の規定値:=DMax("枝番","機器リスト","工番='" & [工番] & "'")
と入力し、保存しました。
すると保存中エラーとなり、'機器リスト.工番'に設定されている入力規則又は
規定値の関数'DMax'が見つかりませんjetデータベースエンジンで入力検査の
あるフィールド'工番' テーブル'機器リスト'の規定値が認識されません。
と表示されました。

フォーム上の連結テキストボックスの[既定値]プロパティではなく、
テーブル[機器リスト]の(デザインビューで)
各フィールドの[既定値]プロパティを設定なさろうと
しているのではないでしょうか。

投稿日時: 19/11/05 13:36:54
投稿者: Cyber033

ありがとうございました。
 
ご指摘の通りフォームの連結テキストボックスの規定値プロパティから
設定したら保存中エラーという表示が出ず、フォームのレコード新規入力
で工番の最大値とその時の枝番表示となりました。
ただ、私には連結テキストボックスの規定値プロパティとテーブルのデザインビュー
で規定値プロパティの使い方のちがいが理解できません。