• ベストアンサー

Accessでデータに連番をつけたい

Accessで、ひとつの親番号に対していくつかの子番号 をひもつけて管理したいと考えています。 例: 親番号 AAA BBB CCC 子番号 001、002、003 →AAA-001、  AAA-002・・・  BBB-001、  BBB-002・・・ というふうに管理する。 そこで、データの新規登録時に親番号を取得後、フォーム上でボタンを押すと自動的に「親-子」という形になるようにしたいのですが、どうすればよいでしょうか? イベントプロシージャがなかなかうまく行かず・・。 お助けください!

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

  • ベストアンサー
回答No.1

こんばんは。 例えば下記↓のようなコードでいかがでしょうか? (前提) フォームに非連結の「親」と「親-子」コントロールがあります。 テーブルに「親-子」フィールドがあります。 フォームの「親」を入力すると「親-子」に値が表示されます。 Private Sub 親_AfterUpdate() Dim Cn As ADODB.Connection Dim Rs As ADODB.Recordset Set Cn = CurrentProject.Connection Set Rs = New ADODB.Recordset Rs.CursorLocation = adUseClient Rs.Open "テーブル1", Cn, adOpenDynamic, adLockOptimistic Rs.Sort = "[親-子] DESC" Rs.Find "[親-子] like '" & Me![親] & "*'" If Rs.EOF Then Me![親-子] = Me![親] & "-" & "001" Else Me![親-子] = Me![親] & "-" & Format(Val(Right(Rs![親-子], 3)) + 1, "000") End If Rs.Close: Set Rs = Nothing Cn.Close: Set Cn = Nothing End Sub > イベントプロシージャがなかなかうまく行かず・・。 どこが分からないのか明確でないのでコメントは入れてません。 もし、分からない箇所がありましたらご指摘くださいね。

mierda13
質問者

お礼

お礼が遅くなってしまい、申し訳ありません。 参考になりました!ありがとうございます。

関連するQ&A

  • アクセスからのメール送信

    現状下記のプログラムでアクセスのレポートをメールで送っています。 ToとCCにあたるところですが時々変更になるのでできればフォーム上のテキストボックスから取得したいのですができるのでしょうか。 下記のaaa@bbb.comとccc@ddd.comのところをフォーム上のテキストボックスから取得したいのです。宜しくお願い致します。 DoCmd.SendObject acSendReport, _ "rptABC", _ "PDFFormat(*.pdf)", _ " aaa@bbb.com", _ " ccc@ddd.com", _ "", _ " ABC", _ "ABC"

  • 【Excel】条件を満たすデータをまとめる

    Excel2003を使用しています。 《表1》 日付       コード  社名   受注番号  金額 2012/04/30   100   AAA   123-45   10000 2012/05/31   100   AAA   123-45   15000 2012/06/30   100   AAA   120-56   10000 2012/05/31   101   BBB   121-44   20000 2012/06/30   101   BBB   123-45   20000 2012/04/30   102   CCC   124-40   30000 2012/06/30   102   CCC   124-40   10000 2012/07/31   102   CCC   124-40   10000 《表1》で、コードと受注番号の両方が同じ場合、その金額を合計して1行にまとめ、《表2》のようにしたいです。 日付は新しいほうを残したいのですが、可能でしょうか? 《表2》 日付        コード  社名   受注番号  金額 2012/05/31    100   AAA   123-45   25000 2012/06/30    100   AAA   120-56   10000 2012/05/31    101   BBB   121-44   20000 2012/06/30    101   BBB   123-45   20000 2012/07/31    102   CCC   124-40   50000 《表2》の状態からさらに他のデータと比較して転記したく、最初はピボットテーブルを使用してみたのですが、使い慣れていないせいか、うまくいかず…。 できれば、VBAか関数で《表2》のようにしたいです。 よろしくお願いします。

  • アクセスで複数レコードを1レコードにできますか?

    アクセスで複数レコードを1レコードにできますか? お世話になります。 お教えください。 以下のようなレコード(テーブル)があります。 氏名 日付  金額 aaa 5/12 200 aaa 5/24 500 bbb 5/01 300 ccc 5/04 100 これを aaa 5/12 200 5/24 500 bbb 5/01 300 ccc 5/04 100 のようにデータを表示(クエリで)したいのですが どのようにしたらいいでしょうか?

  • Access2007抽出のことで

    Access2007のクエリ、デザインビューのことです。 データが例えば aaa bbb ccc ddd とあるとして、このうちaaaとcccの2つを抽出しようと 思って「"aaa"and"ccc"」とか書いても データシートビューでは空欄になってしまいます。 条件の書き方がおかしいのでしょうか?

  • Access Nullの評価について

    お世話になります。 Access2010 フォームを作成しました。 「登録」ボタンが押されたら、フォーム上の値の変更有無をチェックし 変更がなければ何もせず、変更があった場合のみ該当レコードを更新 します。 そこで質問ですが、  If Me.AAA = Me.BK_AAA And Me.BBB = Me.BK_BBB And Me.CCC = Me.BK_CCC Then    '変更が無ければ何もしない  Else    該当レコードにAAA~CCCの値を上書き  End If としておりますが、例えばMe.CCCとMe.BK_CCCにそれぞれNullが 入っている場合、Elseになってしまいます。 ※M.BK_CCCは変更前の値が入っている 恐らく、  If Me.AAA & "@" = Me.BK_AAA & "@" ・・・ のように文字をくっつけて評価させればよいかと思うのですが、 そもそもNullの場合は、イコールで評価出来ないのでしょうか。 ご教示の程、宜しくお願い致します。

  • AccessSQL 1つのテーブルに複数のデータ

    お世話になっております。 アクセスSQLでの質問です。 --テーブル---------- F_1 F_2 AAA BBB AAA CCC BBB XXX CCC DDD DDD YYY 1.F_1のAAAを条件にF_2のBBB・CCCを取得し、 F_1のBBB・CCCと、F_2のXXXとDDDを取得します。 次に、取得したF_2のXXX・DDDを条件に、F_1のDDD、F_2のYYYを取得します。 つまり、AAAを取得した結果、SQL一つで、上記テーブルデータをF_1:AAA以外、取得したい要件です。 有識者の方、ご享受頂きたいです。 宜しくお願い致します 【自力で考えた結果】 -------------------------- select F_MenuCD,F_ZaiCD from [TABLE] where F_MenuCD IN ( SELECT F_ZaiCD FROM [TABLE] WHERE F_MenuCD IN ('AAA') ); F_1 F_2 BBB XXX CCC DDD を取得するSQLは上記でいけそうなのですが、 DDD YYY を、1つのSQLで取得したいのです。

  • ACCESS 重複データに枝番を振りたいのですが

    ACCESS2000を使っています。超初心者です。 製品の修理受付管理DBから再修理のみを抽出したいのですが、DBには再修理のフラグが無いために、製造番号の重複を取り出し、それに枝番を振ることで、枝番2以上のデータを再修理受付として管理したいと考えています。しかし重複データのみを重複クエリで抽出するところまではできたのですが、そのデータへの枝番の振り方がわかりません。 《例》 こんなテーブルがあります。 受付番号 製品名 製造番号 修理内容 AAA  テレビ(1)  111  あああ BBB  テレビ(2)  222  いいい CCC  テレビ(3)  333  ううう DDD  テレビ(1)  111  えええ EEE  テレビ(2)  222  おおお FFF  テレビ(1)  111  かかか このテーブルをこんな感じに抽出して枝番フィールドを追加したいです。 受付番号 製品名 製造番号 枝番 修理内容 AAA  テレビ(1)  111  1  あああ DDD  テレビ(1)  111  2  えええ FFF  テレビ(1)  111  3  かかか BBB  テレビ(2)  222  1  いいい EEE  テレビ(2)  222  2  おおお 以上です。 ご教授のほどよろしくお願いします。

  • SQLSERVER 連番更新について

    <環境>SQLSERVER 一時ワークテーブルのフィールドに指定した番号以降の連番を更新したいのですが、 クエリーで更新する方法はありますか? 例) <更新前のテーブル> コード 名前  連番  001  AAA  null 002  BBB  null 003  CCC  null <更新後のテーブル> 15以降の連番を更新する コード 名前  連番  001  AAA   15 002  BBB   16 003  CCC   17

  • Access(office2000)

    accessを用いてあるデータをまとめたい(集計)のですが、 うまくいきません。 tableが3つあり、各2つフィールドがあります。 どのtableも同じ構成でフィールド1には氏名、フィールド2には数(整数)が入っています。 構成は同じものの、データが異なります。 それぞれのtableのフィールド1は同値のものが多々存在します。 例: table1は name| num1 ---------- aaa | 10 | bbb | 12 | table2は name| num2 ---------- aaa | 8 | bbb | 19 | table3は name| num3 ---------- aaa | 20 | bbb | 5 | ccc | 5 | としたとき、 name| num1| num2|num3 | 計 ---------------------------- aaa | 10 | 8 | 20 | 38 bbb | 12 | 19 | 5 | 36 ccc | 0 | 0 | 5 | 5 となるようにしたいのです。 どのようにすれば値を集計できるでしょうか? よろしくお願いいたします。

  • ACCESSでコンボボックで入力しないとき

    ACCESS2000を使用しています コンボボックスを使用していますが、 コンボボックスを使用する前と使用後の内容を比較したいのですが、どのイベントを使ったら良いのか教えてください。  まず、コンボボックスより項目を取得して AAA とします。 さらに、コンボボックスから項目BBBを取得して AAABBB とします。 これはOKなのですが、 AAABBB から 後ろにつけた BBB を取って(コンボボックスより項目を取得しないで)、つまり 後ろのBBBをスペースクリアをして 再び AAA としたいのですが、うまくいきません。 変更前と変更後をどのようなタイミング(イベント)で判断すれば良いのかわからないのです。  よろしくお願いいたします。

専門家に質問してみよう