
ACCESS2002を使用しています。
自動的に連番を採番するコードを書きましたが、DMax関数でうまく最大値を取得できません。
条件式がうまく書けていないと思うのですが、どうぞお知恵をお貸しください。
テーブル[t_受注]にあるフィールド[受注コード]は、「yyyymm000」のように9桁表示です。
「yyyymm」の部分は現在の年月から取得し、「000」の部分は年月ごとに001~連番を採番しています。
しかし年月が変わるとうまく最大値を取得できず、次のように連番が採番されてしまいました。
[受注コード]
200705001
200705002
200705003
200705004
200706001
200706005(本当は200706002と自動採番したいのです)
最大値(MaxID)取得するコードはこのように書いております。
よろしくお願いします。
-------------------------------------------------------------------------------------------
Dim NowYearMonth As String
Dim MaxYearMonth As String
Dim MaxID As String
NowYearMonth = Format(Date, "yyyymm")
MaxYearMonth = Nz(DMax("Mid$([受注コード],1,6)", "t_受注"), "")
MaxID = Nz(DMax("Mid$([受注コード],7,3)", "t_受注"), "NowYearMonth=MaxYearMonth")
-------------------------------------------------------------------------------------------
No.2ベストアンサー
- 回答日時:
今晩は。
1>MaxYearMonth = Nz(DMax("Mid$([受注コード],1,6)", "t_受注"), "")
2>MaxID = Nz(DMax("Mid$([受注コード],7,3)", "t_受注"), "NowYearMonth=MaxYearMonth")
1>では、格納中の最大年月を取得し、
2>では、格納中の最大番号(年月を除いた中での最大)しかもとまりません。
1>と2>の関連が無いのです。
以下で如何でしょう。
※"[受注コード]"は文字列フィールドとして定義しています。
Dim nowMax As Variant
Dim newMax As String
Dim NowYearMonth As String
NowYearMonth = Format(Date, "yyyymm")
nowMax = Nz(DMax("[受注コード]", "t_受注", "Mid([受注コード],1,6)='" & NowYearMonth & "'"), "")
If nowMax = "" Then
newMax = NowYearMonth & "001"
Else
newMax = NowYearMonth & Format(Val(Mid$(nowMax, 7, 3)) + 1, "000")
End If
私のコードの何が間違っているのかの説明までして頂き、よく理解することができました。
そもそも連番部分のみの最大値を取得しなくてもよいのですね。
サンプルで試してみたところ、思い通りの結果となりました!
数時間悩んでいたものが、あっという間に解決でき嬉しいです。
回答本当にありがとうございました。
No.3
- 回答日時:
こんにちは。
#2です。>nowMaxはStringではなくVariantにすべきでしょうか?
YYYYMMnnnの数値のみであること。
nz(Dmax(),"")の様にNULL値を補正しているのであれば
Stringで問題ないです。
※ご提示したコードのNZ()未対応の際にVariantとした名残でした。
No.1
- 回答日時:
うーん、試してないですけど下記じゃないですかね?
×MaxID = Nz(DMax("Mid$([受注コード],7,3)", "t_受注"), "NowYearMonth=MaxYearMonth")
↓
○MaxID = Nz(DMax("Mid$([受注コード],7,3)", "t_受注"), "Mid$([受注コード],1,6)=" & MaxYearMonth)
おせっかいですが、DMax関数を使用した簡易的なものを書いてみました
※たぶんできるはず(^^;)
Dim NowMaxID As String
Dim NewMaxID As String
Dim Counter As Integer
NowMaxID = Nz(DMax("受注コード", t_受注), "")
NewMaxID = Format(Date, "yyyymm")
Counter = 0
If NowMaxID <> "" Then
If Left(NowMaxID, 6) = Format(Date, "yyyymm") Then
Counter = CInt(Mid(NowMaxID, 7, 3))
End If
End If
NewMaxID = NewMaxID & Format(Counter + 1, "000")
DMax関数での条件式ばかりで考えていたので、IF文でも記述できることに気がつきませんでした。
教えて頂いたサンプルで試してみたところ、思い通りの結果が出てきました!
回答本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
AccessのDMax関数の複数条件式に関して
Access(アクセス)
-
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
-
4
前のレコードの値を自動で入れたい
PowerPoint(パワーポイント)
-
5
最新日のデータのみ抽出するクエリを教えて下さい
Access(アクセス)
-
6
Access サブフォームでの選択行の取得
その他(データベース)
-
7
Access2010 「演算子がありません」エラー
その他(データベース)
-
8
ACCESS 「パラメータの入力」を消したい!!
Access(アクセス)
-
9
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
10
クエリのデータをテーブルに入れたい
Access(アクセス)
-
11
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
12
AccessのフォームのテキストボックスにLOOKUPで表示したい
Access(アクセス)
-
13
Accessのテーブルのフィールドに式を入れる方法
Access(アクセス)
-
14
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
15
Accessで、定型入力を使って年と月のデータだけ入力したい
Access(アクセス)
-
16
Accessのサブフォーム内で連続番号を振りたい
Access(アクセス)
-
17
エクセルをACCESSのレポートに変換する方法
その他(Microsoft Office)
-
18
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
19
どこにもフォーカスを当てたくない
Access(アクセス)
-
20
レコードを保存するコード アクセスvba
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「直需」の意味を教えてください
-
作番ってどういう意味でしょうか?
-
マクロ転記で指定した列の最終...
-
Excel 2019 のピボットテーブル...
-
【マクロ】列を折りたたみ非表...
-
導出された関数従属
-
Access2000のフォームのテキス...
-
(Access)名簿の非表示
-
エクセルVBAで5行目からオート...
-
複数選択するとテーブルに反映...
-
特定場所、ファイル名の変更
-
集計表の作り方
-
エクセルグラフの凡例スペース
-
SELECT文について
-
Accessについて
-
デザインビューで、連結式 を...
-
ACCESS コントロールソースの...
-
ワードで4段組みで文章を書い...
-
テーブルからレコードを(在れ...
-
【Access】フォームで自動計算...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「直需」の意味を教えてください
-
「失注」の意味を教えてくださ...
-
作番ってどういう意味でしょうか?
-
マクロ転記で指定した列の最終...
-
受注受付期間とはなんですか?...
-
アクセスのクエリで、前回に入...
-
access 更新?追加? クエリ
-
Access 製品情報を他のテーブ...
-
ACCESSで、DMax関数の条件の書き方
-
AccessVBAでSQL文を書いています
-
エクセルのフィルタオプション...
-
大量の受注メールをデータベー...
-
データシート形式のサブフォー...
-
excelの積上げグラフについて
-
クエリにSQL文を書き込みたい
-
エクセルマクロVBA初心者です。...
-
エクセル抽出・コード番号から...
-
エクセルで困ってます
-
ACCESSの同時にデータ入力★初心...
-
Excelで在庫管理表を作ってます...
おすすめ情報