• ベストアンサー

アクセスでのオートNOのつけかた

アクセスで請求書の管理システムをつくっています。担当者ごとに、請求書NOをどうしてもふらないといけません。 新規の請求書レコードを作成するたびに、各担当者IDごとにその最終値+1の数字になるよにできないでしょうか?

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

フォームでの新規レコードの入力時に、その担当者のIDでの請求書Noの最終値+1を 新規レコードの請求書Noにしたい、ということでしょうか。 でしたら、フォームの挿入前イベント(BeforeUpdate)辺りで処理するのがよいかと思います。 Private Sub Form_BeforeUpdate() 請求No=DMax("[請求No]","請求書テーブル","[担当者ID]=[Forms]![請求書フォーム]![入力者ID]") 'その担当者によって初めて請求書が出される(→DMax関数でNullを返される)場合に対応 IF IsNull(請求書No)=True Then 請求書ID=1 End Sub ヘッダに「入力者ID」(→記録される値は担当者IDと同じ)というコントロールがある、 という想定です。 これで、フォーム上の請求書Noを使用不可(Enabled=False)か編集ロックをかける (Locked=True)かすれば、入力者が間違った請求書Noを入力することも防げます。

momogai
質問者

お礼

おそくなってしまいましたが、回答、ありがとうございました!

その他の回答 (1)

noname#182251
noname#182251
回答No.1

下記のSQL文で担当者ごとの最終値がでます SELECT テーブル1.担当者ID, Max(テーブル1.請求書No) AS 請求書Noの最大 FROM テーブル1 GROUP BY テーブル1.担当者ID; こういうことではないのでしょうか?

momogai
質問者

お礼

おそくなりましたが、回答、ありがとうございました!

関連するQ&A

  • access IDの振り直しについて

    皆さん、明けましておめでとうございます。今年もいろいろとお世話になりますm(_ _)m さて、accessに挑戦しているところですが、データをいろいろいじくっているうちに、オートナンバー型のIDが不整列となってしまいました。そこで、いったん「デザイン」からIDを削除し、再び「行の挿入」でIDを作成したところ、今度はまたIDが別の形で(飛び番=例えば、100の次に1000が来て、1100の次に101が来るというような)不整列となりました。 テーブルのフィールドには「No」というのを設けてあり、これはデータのレコード番号なのですが、それとIDが一致するようにするつもりでした。 このような場合、IDの「振り直し」はどのようにやれば出来るのでしょうか? もう一つお尋ねです。最終「No」とレコード数は一致するはずなのですが、レコードが1個足りません。このような場合、何番のレコード(No)が抜けているのか知るには、どのようにすればよろしいでしょうか? access初心者ですので、いろんなところでつまづいてしまいます。どうかご教示のほどよろしくお願いしますm(_ _)m xp+office2003です。

  • アクセスについて教えてください。

    アクセス2002 XP使用 Aテーブル ID 氏名 電話番号 住所  などの個人情報入力 Bテーブル ID (リレーションするためのID主キー) 管理ID 購入商品 上記のように今作っているのですが、AテーブルIDとBテーブルは1対多でのリレーションしてます。 フォームで帳票形式で見たとき、 管理NOの数だけレコード表示されるのはいいのですが、 AテーブルID 1に対し、管理IDが111と三件分あるとして、(勿論BテーブルIDには123となってます) AテーブルID1にひとつ、受付NOを追加して、   ID  受付NO  管理ID   1   1    1   1   2    1   1   3    1   2   1    2   2   2    2   3   1    3 見たいに受付NOがIDごとに123。。。と自動入力されル洋にしたいのですがどのようにすればできますか?素人なので説明もうまくできなくわけが変わらないかもしれませんがおしえてください。よろしくお願いします。

  • accessテーブル作成クエリを実行したときにオートNo(のような)振る方法

    お知恵をかしてください。 access2000でテーブル作成クエリを実行した時、作成したテーブルのデーターにIDを1番から振りたいのですが(オートNoのような感じで)、方法がわかりません。 計算式・SQLステートメントでの記述でも、どちらでも良いので、お分かりになる方教えてください★

  • access2007のオートナンバーについて

    access2007のオートナンバーについて こんにちは、さっそくですが質問させていただきます。 accessの勉強を始めた者ですが、 オートナンバーを指定したフィールドと、その他の必要な項目の フィールドから成るテーブルを作成して、 オートナンバー1~3までのレコードを入力して、 オートナンバー3のレコードを削除した時、 そのあとで、レコードを追加すると、 オートナンバー4のレコードが作成されるのですが、 このレコードをオートナンバー3のレコードとして、 作成することはできるのでしょうか? そのような設定ができろのかどうか、もしできるのであれば、 その方法や、参考になるサイトなど、なにぶん初心者ですので 教えていただけないでしょうか。 よろしくお願いします。

  • 私は、アクセス2007を使っています。

    私は、アクセス2007を使っています。 そこで本の在庫管理のデータベースを作り テーブルに10件ばかりテーターを入力しました。 そこで、2番目のレコードを削除したら、ID2が削除されました。 私は入力した10件のデーターが全て下から上へくりあがると思ってました。 つまり、 ID3のレコードのデーターが繰り上がってID2のレコードに入るとおもって ID2は削除されないとおもってました。 初めは、ID1 ID2 ID3 ID4 ID5 ID6 ID7 ID8 ID9 ID10 レコード削除後  ID1  ID3 ID4 ID5 ID6 ID7 ID8 ID9 ID10 レコード削除とともに!ID2も削除されました。 削除されたID2を戻す方法はないでしょうか? また、新たに ID1 「削除された箇所  」 ID3 ID4の  「 削除された箇所   」に 再び、ID2をID注入し新たな、レコードを作成したいと思います。 作れますでしょうか? もし できるのなら ID2の注入の方法を教えてください よろしくお願いします。

  • Access2003で

    Access2003で AテーブルとBテーブルがあります。 両テーブルにも、NOフィールドがあります。 両テーブルとも1からの数字を付与しています。 NOフィールドの他に名称などのフィールドがあります。 ここでお聞きしたいのですが、BテーブルのNOフィールドの2のレコードを、 AテーブルのNOフィールドの2のレコードに上書きしたいのですが、どうすれば良いでしょうか? ちなみにBテーブルには上書きしたいレコード(この例でいきますとフィールド2)だけが格納されています。 どうすれば良いでしょうか? よろしくお願いします。

  • DBに'no'というint型のフィールドがあってレコードは歯抜けになっ

    DBに'no'というint型のフィールドがあってレコードは歯抜けになっています。 このとき、一番小さい数字の「4」を取得したい場合、どのような方法がよいのでしょうか? レコード数から、ひとつひとつ見ていくのは余りに非効率だと思いましたが、よい案が浮か びません。アドバイスを頂けないでしょうか。 no ID 1 aaa 2 bbb 3 ccc 10 abc 11 efg

    • ベストアンサー
    • MySQL
  • MS ACCESS 2003 サブレポート機能でメインレコードと関係の

    MS ACCESS 2003 サブレポート機能でメインレコードと関係のないレコードも表示される どなたかアクセスに詳しい方、教えて頂けませんでしょうか。 MS ACCESS 2003 にて、帳票印刷システムを構築しております。 ・請求ヘッダテーブル・・・顧客ID、顧客会社名、顧客氏名、住所 等 ・請求明細テーブル・・・顧客ID、請求明細名、単価、数量、小計 等 となっております。 こちらの状態で、顧客ID別(1人ずつ)に、紙面の上部に請求ヘッダテーブルの情報を羅列し、 紙面の下部に表形式で請求明細テーブルを表示するような形式の「レポート」を作成したいと考えております。 そこで、メインレポート/サブレポート機能を使って、上記を実現したいと思い、以下のような手順でトライしているのですが、サブレポート部分(デザインビューで見た場合の「詳細」部分)に、でメインレポート部分の顧客IDの請求明細データではないレコード(違う顧客IDの請求明細)まで表示されてしまいます。 ■リレーションを作成 ・メニュー「ツール」⇒「リレーションシップ」にて、請求ヘッダ-請求明細をひもづけ。 ・参照整合性にチェック。 ・結合の種類は「請求明細の全レコードと請求ヘッダの同じ結合フィールドのレコードだけを含める」。 ■レポートを作成 ・レポート⇒新規作成⇒レポートウィザードでレポートを作成。請求ヘッダのみの情報で作成。 ・デザインビューの詳細部分にて、サブレポートを呼び出し。請求明細テーブルを選択し、顧客ID、請求明細名、単価、数量、小計 等を選択。 上記のようにすると、顧客IDとは関連なく(正しい詳細データもそうでないデータも合わせて)10件の請求明細データが表示されます。 また顧客ID=1の場合も、次のページの顧客ID=2の場合もすべて同じ10件の明細データが現れます。 インプレスのアクセス本を参照しながら作業しているのですが、詳しくない分非常に苦労しております。 どなたか、なにとぞよろしくお願いいたします。

  • Access 検索した値を別フォームに

    Accessのシステムを会社で作ってます。 検索したIDをサブフォーム(データシート型) で表示したレコードを編集フォーム(別フォーム)に呼び出したいのですが上手く出来ません。 ネットでも検索しましたが良いのがありませんでした。 どなたか、お手数ですがコードを教えていただけないでしょうか? 何卒よろしくお願いします。 *adodbとDAOのどちらか使う必要があるならDAOを使用して作成したいです。 *クエリは使わずに作成したいです。 ○検索フォーム 検索ボタン ID入力テキスト 編集ボタン サブフォーム(データシート型) 編集ボタンを押すと ○編集フォーム 単帳型 *レコード項目 ID プロジェクト名 日付 モジュールNO

  • ACCESSの権限について

    Access2000勉強中の初心者です。 次のようなことをしたいのですが、できますでしょうか? 同一データぺースの利用者が複数います。利用者を取扱できる権限によって「担当者」と「責任者」に分けたいと思っています。 1.担当者ができる行為   フォームでのデータ入力(レコード作成) 2.責任者ができる行為   担当者が入力したデータの検証→レコードを確定→   担当者がレコードを変更、削除できなくする。   また、反対に確定したレコードを解除し、担当者が   変更、削除できるようにする。 3.どの担当者がレコードを作製し、どの責任者が検証   したか作業した人の名前をレコード上に記録する。 非常に抽象的な説明で申し訳ないのですが、要は会社の中で担当者にデータ入力作業をさせ、その管理を上司がするといったイメージです。 よろしくお願いします。