• 締切済み

DMAXを使って登録ボタンを作りたい

accessを使い現在ある利用者IDの最大値をDMAXで検出し そのIDに+1をして登録を行いたいのですがまったくできません・・・ 現在最大のIDがZZZZ4000だったとすると自動検索してZZZZ4001で登録できるように。 riyou_id = DMAX("riyou_id", "riyou_infotb")+1 とすると「型が一致しません。」となってしまいます。 できれば、最大値+1のIDを検出し登録用のフォームを表示し、新しいレコードを出して登録ができるまでの書き方を教えてください。よろしくお願いします。

みんなの回答

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

ZZZZ???? 下4桁の最大値は ?dmax("right(riyou_id,4)","riyou_infotb","left(riyou_id,4)='ZZZZ'") で求められますので たとえばフォームで ZZZZ???? のレコードを選択しているとすると新IDは left(me!riyou_id,4) & format(dmax("right(riyou_id,4)","riyou_infotb","left(riyou_id,4)=' & left(me!riyou_id,4) & "'") + 1,"0000") 求められると思いますが 一つのフィールドに複数の意味を持たせるのではなく(ややこしくなって使いづらい) フィールド 分類     ZZZZなどを格納 フィールド 連番 (数値型にして 書式に 0000 とする)     上記「分類」フィールド毎の連番を格納 分類 と 連番で複数フィールドのインデックスを作成し重複排除 ちょうどいいのが無かったけど http://www.tsware.jp/labo/labo_06.htm ↑こんな感じ であれば nz(dmax("連番","riyou_infotb","分類 ='" & me!分類 & "'"),0) +1 で求められますけど・・・

noname#135452
質問者

お礼

回答ありがとうございます。 ?dmax("right(riyou_id,4)","riyou_infotb","left(riyou_id,4)='ZZZZ'") なのですが実行後 「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」となりました。 left(me!riyou_id,4) & format(dmax("right(riyou_id,4)","riyou_infotb","left(riyou_id,4)=' & left(me!riyou_id,4) & "'") + 1,"0000") こちらですとコンパイルエラーになりました・・・ できればモジュールだけでどうにかしたいです(涙

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

文字に1を足しても駄目です。文字と数値を切り離してから戻せばOK riyou_id = Left(DMax("riyou_id", "riyou_infotb"),4) & Format(Right(DMax("riyou_id", "riyou_infotb"),4)+1,"0000") でできます。

noname#135452
質問者

お礼

お早い回答ありがとうございます! ですが普通にテーブルをフォームで呼び出しただけの形になってしまって レコードのはじめが表示されただけでした・・・ そしてZZZZの書き出しIDの一番大きいものに+1するものが作りたいです 他にもAABBからの書き出しID等もあるので・・・

関連するQ&A