• ベストアンサー

(ACCESS)連番取得について

naminami01の回答

回答No.1

オートナンバー型で管理するのではだめなのですか?

mmmmm_1984
質問者

補足

はい。オートナンバーはレコードを削除した場合などに欠番が発生すると聞いたので、出来ればそれ以外の方法で設定したいと思っています。

関連するQ&A

  • Access VBAで自動連番を振るには

    Access2000で株主管理DBを作成中です。 【テーブル名】T_株券管理 【フォーム名】F_株主入力 【フィールド名】株主ID(テキスト型)(主キー) フォームに入力する際にオートナンバーを使用せずに、 レコードが切り替わると「株主ID」が「00001」「00002」「00003」・・・・というように1づつ発番されるようにしたく、AccessVBAの本を読んだり、ネットでDmax等調べているのですが、必要な情報が探せずに困っています。お手数ですが教えて頂けますでしょうか。よろしくお願い致します。

  • Access VBAで自動連番を振るには

    【テーブル名】T_株券管理 【フォーム名】F_株主入力 【フィールド名】株主ID(テキスト型)(主キー) フォームに入力する際にオートナンバーを使用せずに、 レコードが切り替わると「株主ID」が「00001」「00002」「00003」・・・・というように1づつ発番されるようにしたく、AccessVBAの本を読んだり、ネットでDmax等調べているのですが、必要な情報が探せずに困っています。 本当はオートナンバーでIDを振っても良いのですが、レコードの削除等行った時に歯抜けになってしまうので、うる覚えで申し訳ないのですが・・・確か、フォームのテキストボックスのプロパティ、コードビルダでVBを「レコードが移動した際に」→「株主IDが0の場合に”00001”を、0でない場合には既存の数値に+1した数値をテーブルT_株券管理の”株主ID”に入力する。」といった感じの記述がしてあったと思います。VB初心者なので、説明が上手くできずにすみません。 このような記述方法はありますでしょうか?

  • [Access]別テーブルの最大値以降の連番振り

    過去の質問を色々調べたのですが、結局以下の連番の振り方が分からず・・・困っています。 どなたか助けて下さい。お願いいたします。 テーブルA(蓄積されている過去テーブル) 伝票番号  顧客NO  注文日 001 111111 2012/11/10 001 111111 2012/11/10 002 222222 2012/11/25 002 222222 2012/11/25 002 222222 2012/11/25 003 333333 2012/12/31 テーブルB(新規にインポートするテーブル) 004 444444 2013/02/01 004 444444 2013/02/01 005 222222 2013/02/15 005 222222 2013/02/15 006 555555 2013/02/15 006 555555 2013/02/15 上記のように、テーブルBをインポートした時に、伝票番号を「004,004,005・・・」という風に 顧客NO毎に連番を振りたいです。 DmaxやDcount関数を使う事はなんとなく分かったのですが、うまくいきません。 出来れば、クエリで実現したいと思ってます。 テーブルAにある顧客がテーブルBに出てきたとしても、関係なく連番が振れれば問題無いので、 テーブルAからは最大値+1の値だけ取れればいいです。 宜しくお願いいたします!!

  • Accessで分類毎の連番を既定値に表示したい

    Access2007で業務用のデータベースを構築しております。 Excelは良く利用するのですが、Accessでは初めてになります。 ご教示のほど、よろしくお願いします。 加工食品の原料のデータベースを構築しております。 原料の分類ごとに通し番号を付与し、それをフォーム上で既定値として表示させたいと考えております。 現状は「T_原料リスト」があり、フィールドに「分類ID」・「原料No」・「原料ID」・「原料名」・・・となってます。 別途「T_分類マスタ」があり、リレーションで「分類ID」と結合しています。 実現したいのは、フォームで「分類ID」をコンボボックスから選択すると、その分類の「原料No」の最大値を既定値として表示させることです。また、「分類ID」と「原料No」を結合し「原料ID」にしたいと考えております。 例えば、分類IDで「10(糖類)」を選ぶと、原料Noの最大値が「121」と表示され、原料IDが「10121」と決まる、といった具合です。 原料IDはイレギュラーに「99999」を入力したい状況もあるかもしれませんので、手入力でも良いかなと思ってます。 私なりに調べましたところ、フォームの「原料No」のプロパティシートの既定値に =Dmax("原料No","T_原料リスト","[分類No]=&[Forms]![F_原料リスト].[分類No]")+1 と入力すれば良いはずだと思いやってみたのですが、エラー表示になってしまいます。 質問ですが、 (1)上記の式が間違っているのでしょうか? (2)もっと良い方法があればお教えいただきたいです。 (3)分類IDと原料Noを結合して、自動で「原料ID」を入力するにはどうすれば良いでしょうか? 以上です。何卒よろしくお願いします。

  • Access2013のオプションボタンが押せない?

    たとえば、一つのテーブルがあります。 テーブル名:テーブル1 フィールド名:処理済み  Yes/No型 true/false 既定値0 そこで、フォームを作り、「処理済み」フィールドに入力するために グループコントロールにします。 ラジオボタン1:未処理 0 ラジオボタン2:処理済み 1 既定値0にします フォームから入力するとき、未処理はボタンを押せますが、処理済が ボタンがおせないです。 OS:Windows8.1 よろしくお願いします。

  • accessのコンボボックスのことで質問です。

    accessを勉強しているのですが、ちょっとしたことで分からなくなってしまいました・・。 質問の内容なのですが、まずフォーム上にコンボボックスAとコンボボックスBを配置するとします。 レコードソースには仮に[情報テーブル]というテーブルが選択されているとします。 コンボボックスAには[情報テーブル]のフィールド名が、 例えば[顧客NO]、[商品]、[値段]というフィールド名が入っているとし、フィールドにはそれぞれ10件ずつデータが入力されています。 そしてコンボボックスAで[顧客NO]を選択するとコンボボックスBに[顧客NO]の10件のデータが挿入され、選択できるようにしたいのです。 他のフィールド名を選んだときにも同じようにコンボボックスBにフィールドのデータが入るようにしたいと思っています。 コンボボックスAにテーブル名を入れることはできたのですが、 コンボボックスAで選択されたフィールドのデータを、コンボボックスBで選択できるようにするというやり方がわからないのです・・。 accessは2002を使っています。 よろしくお願いします。

  • Accessデータ並べ替えをハイブリッドにしたい

    [使用しているツール] Access 2007 PROFFESSONAL [やっていること(現状)] 1つのテーブルで複数のクエリ(複数のフィールドの並べ替えが必要な為)と複数(クエリと同数)のフォームを作成して、フォームの数だけコマンドボタンを作成してフォームを一覧表示で開いています。 [やりたいこと] 1つのテーブルで「1つのクエリ」による複数のフィールド(名)を切替えて、「1つのフォーム」で表示(一覧)させたいと思っています。 例えば、テーブル名:顧客名簿(取引先、県名、商品名、入庫日)、クエリ名:顧客名簿クエリ、フォーム名:顧客名簿一覧としたとき、(取引先、県名、商品名、入庫日)をコンボボックス等で切り替えることで、指定したフィールド(名)で並び替えられたデータを「フォーム名:顧客名簿一覧」に表示させられないでしょう。 [考えたこと] コンボボックス(名前:コンボ1)を作成し値集合ソースに「”取引先”;”県名”・・・・。」と入力、クエリ「顧客名簿クエリ」の抽出条件欄にビルダを起動させて「・・・コンボ1」を指定、フォーム「顧客名簿一覧」のレコードソースにクエリ「顧客名簿クエリ」を選択しました。しかし、フォーム「顧客名簿一覧」を開いても、データは抽出できずデータなしの表示で先へ進めていません。 以上ですが、宜しくお願いします。

  • 条件別に自動連番にするには

    たとえば会員マスターのような会員のデータを入力するためのテーブルおよびフォームを作成したいのですが、そのとき男性なら1000→1001という連番を振り、女性なら2000→2001というように連番を振っていきたいのですが、その際どうやったらできるのでしょうか? 単に連番を振るのなら、Dmax関数でできるのですが、条件が入ってきたらわからなくなってしまいました。 Access2000 または 2002を利用しています。

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

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

  • accessのサブフォーム毎に連番をふり直す

    accessのフォーム入力において、メインのフォームにサブフォームが一つ配置されています。 単票形式のメインフォームには、フィールド「ID」(主キー)と「社員名」と「日付」、「評価」が格納されておさり、「ID」で紐付けされたサブフォーム(帳票またはデータシート形式)に、社員の行動記録が入力されます。 ※行動記録:08:30~10:00 A社訪問 …など。 サブフォームにデータが入力される際、行動した時系列順に項番を振って管理したいと考えています。 データ例 メイン ID  日付   社員名   評価 1 2016/03/16 田中一郎  C 2 2016/03/16 鈴木政夫  D 3 2016/03/17 田中一郎  B サブ ID 項番 開始時間 終了時間 業務内容 1 1  08:30   10:00  A社訪問 1 2  10:25   11:40  見積書作成 2 1  08:30   12:00  会議 3 1  12:50   16:30  現場監督 3 2  17:00   21:50  報告書作成 クエリやイベントプロシージャにDcountやDMax関数、carrentrecordなどを使ったアドバイスのある回答やブログを見付けて、色々と試してみたのですが、どれも上手く行きません。 一番簡単そうなDMaxをサブフォームの項番の既定値に =NZ(DMax("項番", "サブフォームのテーブル名")+1,1) とするも、「項番」の最大値+1の「3」が表示されます。 データの入力は、日付当日とは限らず、また、入力順序も、(新規にレコードを追加する場合を除き)ID順だとは限りません(後日修正を行う場合も有ります) こういった場合の対処方法について、ご教示をお願いします。 なお、当方の技能レベルは、VBAのコードの意味を理解しないまま、他人の作ったコードをコピーして、何となく修正して使用できている、と言った程度です。 よろしくお願いします。