• ベストアンサー

独自の形式で連番をふりたい(Access97)

Windows98SE + Access97 現在ユーザーサポートの「問い合わせ管理簿」を作成しています。 ユーザーから新しい問い合わせがあるたびにレコードを一つずつ 増やしていくわけなのですが、そこに独自の形式の連番を振りたいのです。 「"年(4桁)" - "月(2桁)" - "その月での問い合わせ件数 + 1(3桁)"」という形式です。 具体的には、今日が2002年1月28日で、1月の問い合わせ件数が30件だと すると、「2002-01-031」という形式で新しいデータに連番を振りたいの です。 2月になったら「2002-02-001」から始まります。 これを実現するにはどういったロジックが考えられるでしょうか。 助言をお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.1

年と月、通番を別々のフィールドにします。 新しい通番を取得する際、年と月を指定して Selectし、DMaxで通番の最大値を求め、+1した値で書き込みます。

その他の回答 (1)

  • Watapo3
  • ベストアンサー率76% (33/43)
回答No.2

同じ様な回答を今したばかりですのでご参考に m(_ _)m

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?qid=195773

関連するQ&A

  • フォームでの連番

    お世話になります。 フォームにて書類に連番をつけていきたいと思うのですが VBやマクロがわからないので、質問させていただきます。 アクセス2000を使用しています。 状況は、連番の頭に西暦2008年なら2008の様に番号をつけ そのあとは普通に001、002・・・と3桁の番号をふっていきます。 自分でわからないなりに調べたのですが、どうもIF文とDcount文を 使うみたいなのですが、どうもプログラムというものがわからず 困っております。 初歩的かもしれませんが、教えていただけませんでしょうか? 出来れば、ボタン一発で次のレコードの追加と連番を同時に 処理できれば幸いです。 説明がわかりにくいかもしれませんが、何卒よろしくお願い いたします。

  • Accessでレコードの更新を任意のタイミングで行うには

    Accessではテーブル内のレコードを編集したあと、他のレコードにカーソルを移動すると、編集されたレコードが更新(コミット)されてしまいますが、このようなアクションを行っても更新(コミット)されないようにして、ユーザーが任意のタイミングで更新(コミット)出来るように設定することは可能ですか? VBAでロジックを組まなくても実現可能なら良いのですが・・・。

  • ACCESSで日付ごとに自動連番(日付+連番)する方法

    ACCESSで日付ごとに自動連番(日付+連番)する方法 ACCESSとvba、共に初心者です。 ACCESS2003を使用しています。日付ごとに自動連番する方法が知りたくいろいろ調べていたところ過去ログ(http://okwave.jp/qa/q726921.html)のベストアンサーさんの回答にたどりつきました。 とりあえず勉強と思い紹介されている通りにテーブル作成からフォームのレコード移動時へのコード貼り付けまで一通り行ってみましたが、自動連番とならず同じ番号のままとなってしまいます。(日付はパソコンの日付更新時にちゃんと反映されています。) 自動連番されないのは何が原因なのでしょうか。どなたかご教授の程よろしくお願いします。 例)DATEが5月5日の場合のIDへの記載値  0505001  0505001←ここが001のまま0505002にしたい。  0506001←日付が変われば0506(5月6日)に変わる。 以上、よろしくお願いいたします。

  • ACCESS 宛名ラベル(レポート)の連番の書式を設定したい

    ACCESS初心者です。 「符号」-「連番」順の住所一覧テーブルから、 クエリで「符号」別にわけ、「符号」別に分けたクエリから 「符号」別に宛名ラベルを作っています。(符号は10種類) 2000件ほどの連続番号を振っているので、連番のラベル表記を 『A-0001』のように4桁で統一したいのですが、 テーブルやクエリでは4桁で表示されるのに、 ラベルではうまく表示されません。(1ならA-1となってしまいます) フィールドは、符号と連番は別フィールドで、 連番の書式は、書式設定で4桁の0を入力して設定しています(『0000』) レポートを作成する際に、「符号」と「連番」を連結して 表示させています。 できれば、レポートの設定で上記を実現したいのですが、 どうすればいいのでしょうか? よろしくお願いしますm(_)m

  • 年月-連番を付与するマクロを教えて下さい。

    連番を付与するマクロを教えて下さい。 初心者です。 B列に値が入ったタイミングでA列に今日の年月-01の連番を付けたいと思います。 年は西暦の下2桁月2桁-数字2桁 1401-01 できれば月が変わったら連番も01スタートなら最高です。 1401-01 1401-02 1402-01 こんな感じです。 B列には下に値が無ければ順番に下の行に値が入るマクロが入っています。 初心者ゆえ説明もわかりにくいかと思いますが、よろしくお願いします。

  • アクセスからSqlサーバーへ移行したほうが良い基準

    どのくらいのレコード件数になったら アクセスからSqlサーバーへ移行したほうが良いのでしょうか? 今はレコード数が70000件です。 ユーザーは一人で共有はしません。 レコード数だけじゃ基準になりませんか?

  • ACCESSでのひとつ前レコードの求め方について

    ACCESS2000にてDLOOKUP関数とDMAX関数を用いて一つ前のレコード内容フィールドを クエリにて作成しようとしております。下記の式を設定しクエリを実行すると一つ前の レコード情報(前レコードの ”終了時間”内容)は出力されるのですが、暫くすると "クエリ式 '連番' の構文エラー:演算子がありません" と表示されます。 上記エラーの対処方法を教えて頂けたら思います。 尚、該当の数式ですが 前終了時間: DLookUp("終了時間","訪問業務テーブル(更新後)","連番=" & DMax("連番","訪問業務テーブル(更新後)","連番<" & [連番])) となっております。 ”連番”は オートナンバー形式のもので 1から順番に振られており、この連番を元にひとつ前レコードを参照する様にしております。 上記式に使用されている フィールドのデータ型ですが (1)連番: オートナンバー型 (2)終了時間: テキスト型 となっております。 お手数ですがよろしくお願いします。

  • Accessのフォームヘッターに表示されるレコード件数を表示させることは可能でしょうか?

    Access2003を使用しています。 お客様からの問い合わせを記録しているテーブルがあります。テーブル名:T対応記録 それを月単位で表示できるフォームを作りました。フォーム名:F対応履歴_月単位抽出 (レコードソースはT対応記録から作ったクエリです。パラメータクエリで発生日でyyyy/mm形式で抽出できるようにしました。) 詳細には抽出月のレコードが表示されます。 そのフォームヘッターに、抽出レコードの総件数を表示させたいのですが、可能でしょうか? レコードセレクタは非表示にしたく、そうするとレコード件数も表示されなくなってしまうので、その変わりにフォームヘッターに表示をさせたいのです。 どなたかご存知の方がいらっしゃいましたらご教示いただきますようお願いいたします。

  • Accessの連番(文字+日付+文字)2 (泣)

    先だって下記の質問をさせていただいた際には回答いただいてありがとうございました ≪質問≫ 下記のような連番を振る方法を教えてください "Eyymmdd A "E"は固定で yy(西暦2ケタ)mm(月)dd(日)A(Aから始め、同じ日だとB,C,…と最大26(Z)まで)振っていく。日が変わるとまたAから始まる 「テーブル名」連絡文書E 「クエリ名」連絡文書Eクエリ 「フォーム名」連絡文書E 「フィールド名」管理番号(テキスト型) E110105 A E110130 A E110130 B E110130 C E110202 A… と"E"を固定 yy(西暦2ケタ)mm(月)dd(日)Aから始まり、同日であればB,C~と 日が変わるとAからまた始まるという連番をふりたいです ≪いただいた回答≫ Function getNewSeq()   If Format(Date, "yymmdd") = Mid(DMax("管理番号", "連絡文書E"), 2, 6) Then     If Right(DMax("管理番号", "連絡文書E"), 1) = "Z" Then       MsgBox "Zまで一杯です"       Exit Function     End If     getNewSeq = "E" & Format(Date, "yymmdd") & " " & _           Chr(Asc(Right(DMax("管理番号", "連絡文書E"), 1)) + 1)   Else     getNewSeq = "E" & Format(Date, "yymmdd") & " " & "A"   End If End Function さらに、フォームでも デザインビューでフォームのプロパティのイベントの、「レコード移動時」に Private Sub Form_Current() If Me.NewRecord Then Me!管理番号 = getNewSeq End If End Sub 補足をさせていただいたデバックも何度かテーブルからやり直し できるようになりました!! 本当に助かりました しかし、新たにわからない事態が起きてしまいました ご教示下さい フォームを単票形式で作成して、上記の連番が振れるようになりました しかし、データシート(形式)でフォームを作成したところ連番が振られなくなってしまいました 同じAccess内でではなく、新規作成したり、同じAccess内でのフォーム新規作成をしてみましたが、できません データシートでの連番は無理なのでしょうか? 「テーブル名」連絡文書E 「クエリ名」連絡文書Eクエリ 「フォーム名」連絡文書E2 「フィールド名」管理番号(テキスト型) テーブルとクエリは前回と同じものを使いました 何卒ご教示お願いいたします

  • Microsoft Accessで自動採番をさせたい。

    いつも大変お世話になっております。 アクセスでの質問です。 フィールドに「管理ID」があって、ここに8ケタのコードが自動採番されるようなしくみにしたいと考えています。 この管理IDは8ケタで、採番の仕組みは以下の通りです。 (1)「アイテム分類」というフィールドに入った製品によって頭2桁が決まる。 例)野菜・・・YA   果物・・・KU   鮮魚・・・SE (2)入力しているのが06年07月だったら次の4桁は「0607」になる。 ここまでで、頭の6ケタ「YA0607」などまでが決まる。 最後の2桁は、その月に発生している情報の連番をつけていきたい。 例) 06年07月に1番目に採番されたデータ→YA060701 06年07月に5番目に採番されたデータ→YA060705 という具合に・・・ これにはたくさんの要素がつまっています。 要素(1) 採番するフィールド以外のフィールド(アイテム分類)を見て、頭2文字を決めること。(ただし、規則はありますので、DBで表すことはできます) 要素(2) 現在のDATEから、年と月だけ4桁拾うこと 要素(3) 過去に発生しているレコードを抽出・カウントし、最後の数字の+1になる番号をつける ということです。 上記のようなことが可能なのでしょうか? 分かりましたら、できるだけ具体的に教えてください。よろしくお願いします。m(_ _)m