ガス管理システムをアクセス2003で作成しています。

繰越処理について教えて下さい。

ガス検針伝票を印刷して、現場でガス検針メーターを測ります。
それをもとに、当月掛売上を計算して記入します。

【ガス検針伝票の記載のデータ】
得意先コード
売上日
前月末残高
回収額
当月掛売上
当月末残高

そして、前月末残高を集金します。
前月末残高を全額集金できない場合もあります。

事務所に戻り、アクセスに入力します。
売上日
回収額
当月掛売上
当月末残高

ここで、繰越処理をどうすべきか分からなくなりました。

ガス検針(テーブル)は、下記にしています。

【ガス検針(テーブル)】
得意先コード
売上日
前月末残高
回収額
当月掛売上

【当月末残高はクエリで計算】
当月末残高:[前月末残高]-[当月回収額]+[当月掛売上]

【月を繰越した場合】
当月末残高が前月末残高になります。
いまのままでは、前月末残高を手入力しまければなりません。
どのように、テーブル・クエリを作成し、処理すればよろしいでしょうか?
教えて下さい。

A 回答 (2件)

No1の訂正です。



>当月末残高:[前月末残高]-[当月回収額]+[当月掛売上]

は、

当月末残高:Nz[前月末残高]-Nz[当月回収額]+Nz[当月掛売上]



の部分を、



>当月末残高:[前月末残高]-[当月回収額]+[当月掛売上]

は、

当月末残高:Nz([前月末残高])-Nz([当月回収額])+Nz([当月掛売上])


に変更してください。()が抜けていました。
    • good
    • 0
この回答へのお礼

piroin654 様、

回答をありがとうございます。

返答をせずに、申し訳ありませんでした。
先日、ようやく完成しました。

教えられた、方法も勉強になりました。

今回は、下記のようにして解決しました。

売掛金テーブル

請求先コード
売上回収日
前月末残高
当月回収額
当月掛売上
当月末残高

フォームで、更新後処理を、

Private Sub 当月掛売上_AfterUpdate()
Me!当月末残高 = [前月末残高] - [当月回収額] + [当月掛売上]
End Sub

お世話になり、ありがとうございました。

お礼日時:2011/06/02 19:44

繰越額: Nz([前月末残高])-Nz([当月回収額])



なお、

>当月末残高:[前月末残高]-[当月回収額]+[当月掛売上]

は、

当月末残高:Nz[前月末残高]-Nz[当月回収額]+Nz[当月掛売上]

のようにします。
細かくは、月末締の翌月何日払いとか、20日締翌々月何日払い
などによって繰越額の扱い、あるいは計算が違ってきます
月末締め翌月末迄払いならば、これでいいのではと
思いますが。
以上、質問者さんの思惑と合致していればですが。

追加として、単純な言い方をすれば、

当月末残高: Nz([繰越額])+Nz([当月掛売上])

になります。
以上、質問者さんの思惑と合致していればですが。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qアクセスで帳簿を作りたいのですが…。

アクセス2003を使用してます。クエリを元にレポートを作成して帳簿として印刷したいのですが下記のような計算式は何かありますか?
まず1ヶ月ずつで帳簿を印刷したいのでクエリで『Between#2007/10/21#And#2007/11/20#』という式を入れてレポートでこの期間で出るようにしてます。
出と入りの合計金額をこの期間で集計するようになっているのですが前月までの繰越を反映させることはできますか?

例として上記期間での1ヶ月分の入りが110,000,000、出が150,000,000、前月の繰越が50,000,000の場合、次月への繰越が10,000,000となるのですが、この10,000,000をまた次の月の繰越金として計算させたいのですが…。
 

Aベストアンサー

> クエリの摘出条件に『Between~』と入れるのではなく、
どのようなレポートデザインなのか解らないので、ヒントとして回答したのですが...
各日付の取引をリストし、レポートヘッダやレポートフッタに、「月取引合計」や「前月からの繰越高」や「次月への繰越高」を出したいということなら、
「前月からの繰越高」のデータが入っているテキストボックスにが必要になります。
「前月からの繰越高」の元データがどこにもないのなら、計算で作り出すしかありせん。
それには過去の全ての取り引きの差引を加算しなければならないわけです。
そこで「前月からの繰越高」テキストボックスにDSUM関数で計算させます。

本来、「前月からの繰越高」が必要になるなら、このデータを保存しておくテーブルを設けておくべきだと思いますが...

QAccessクエリで分類ごとの累計を計算する方法

テーブルのデータをクエリに読み込んで、大分類ID-小分類IDの組合せを元にして、
月々の累計を計算したいのですが、算出式がどうしてもわかりません。
DSUMを使えばいいかなと思い、クエリのフィールドに、
累計:DSUM("金額","tbl_sample",    )
のような感じでやってみたのですが、条件式をどういれてよいかわかりません。
もし分かる方がいらっしゃればお知恵をお貸しください。よろしくお願いします。

イメージ的には以下のような感じで、★箇所のような累計結果を算出したいです。

------------------------------------------------------------
元のテーブルファイル名:tbl_sample

月 大分類ID 小分類ID 金額 ★累計
4___1___1___\100_\100
4___1___2___\200_\200
4___2___1___\300_\300
4___2___2___\400_\400
5___1___1___\150_\250
5___1___2___\250_\450
5___2___1___\350_\650
5___2___2___\450_\850
--------------------------------------------------------------

テーブルのデータをクエリに読み込んで、大分類ID-小分類IDの組合せを元にして、
月々の累計を計算したいのですが、算出式がどうしてもわかりません。
DSUMを使えばいいかなと思い、クエリのフィールドに、
累計:DSUM("金額","tbl_sample",    )
のような感じでやってみたのですが、条件式をどういれてよいかわかりません。
もし分かる方がいらっしゃればお知恵をお貸しください。よろしくお願いします。

イメージ的には以下のような感じで、★箇所のような累計結果を算出したいです。

-------------------...続きを読む

Aベストアンサー

累計:dsum("金額","tbl_sample","大分類ID=" & 大分類ID & " And 小分類ID=" & 小分類ID & " And 月<=" & 月)
だとどうでしょう。
ここを読んでもらった方が早くて確実。
http://www.moug.net/tech/acvba/0080017.html

Q請求と入金のテーブルの作成の仕方(アクセス)

ただいま、物件毎の修理の依頼を受けて、その修理工事をしたあと、依頼先に請求する処理のためのテーブルを作っています。
まず、見積テーブル・見積明細テーブルというのを作り、
次に、入金テーブル・入金明細テーブルというのを作りました。

【見積テーブル】
・見積ID(主Key)
・物件ID *(ExKey)
・工事費用合計(←工事費用テーブルより取得)
・材料仕入れ費用合計(←材料知り入れ費用テーブルより取得)
・会社利益
・支払方法
・1回目支払開始日
・2回目以降の支払日
・支払回数

【見積明細テーブル】
・見積明細ID(主Key)
・見積ID(ExKey)
・請求先名
・請求先毎の請求額

【入金テーブル】
・入金ID(主Key)
・物件ID * (ExKey)
・請求金額合計
・入金金額合計
・差額
・入金完了日付

【入金明細テーブル】
・入金明細ID(主Key)
・入金ID(ExKey)
・請求先名
・入金額
・入金日

*物件IDとは、工事物件の依頼内容を格納しているテーブルの主キーです。
 物件ID : 見積ID = 1: 1
物件ID : 入金ID = 1: 1
の関係です。

このような感じで作りましたが、見積明細テーブルの各請求先毎の支払状況を見る上では、その下の入金明細テーブルでは不十分です。
これをうまく改善するテーブル設計の方法を教えてくだい。

よろしくお願いいたします。

ただいま、物件毎の修理の依頼を受けて、その修理工事をしたあと、依頼先に請求する処理のためのテーブルを作っています。
まず、見積テーブル・見積明細テーブルというのを作り、
次に、入金テーブル・入金明細テーブルというのを作りました。

【見積テーブル】
・見積ID(主Key)
・物件ID *(ExKey)
・工事費用合計(←工事費用テーブルより取得)
・材料仕入れ費用合計(←材料知り入れ費用テーブルより取得)
・会社利益
・支払方法
・1回目支払開始日
・2回目以降の支払日
・支払回数

【見積明細テーブル】
...続きを読む

Aベストアンサー

>請求先から複数の依頼案件にまたがって入金されたりすることもあるので、
>それをシステム設計で自動的に、
>顧客がどの依頼案件の支払なのかを作りこむことは出来ないのでしょうか?

もちろん出来るが、絶対に挑戦してはいけない!

>つまり、このようなカラムをテーブルに作れば、
>少なくとも請求と入金の日々の記録を付ける事は可能ということでしょうか?

全く、違います。記録するのは、売上と入金のみです。ですから、用意するテーブルは、次のようです。

[得意先台帳]

ID・・・・・・・・・1
名前・・・・・・・・鈴木建設
請求締め日・・・・・25日
前月期首繰越額・・・12,000円
前月売上額・・・・・30,000円
前月入金額・・・・・20,000円
前月調節額・・・・・-5,000円
当月期首繰越額・・・17,000円
当月売上額・・・・・20,000円
当月入金額・・・・・20,000円
当月調節額・・・・・-5,000円

得意先別に売上・入金状況を月次で締切・繰越処理した結果を反映する。

課題1、システム起動時得意先別期首設定アプリケーション。
課題2、月次締切・繰越処理アプリケーション。
課題3、先月繰越再処理アプリケーション。
課題4、月次締切レポート。

このように月次締切・繰越処理はバックエンドであるテーブルのテーマではなくフロントエンドであるアプリケーションの役割です。なお、ここに言う締切・繰越処理=請求締切処理ではありません。売上・入金の月次締切処理と請求書管理とは少し目的と内容が違います。

[得意先別売上台帳]

ID・・・・・・・・・1
得意先_ID・・・・・・1
年月日・・・・・・・2014/10/10
区分・・・・・・・・0:売上、1=値引、・・・9=調節
金額・・・・・・・・20,000円
摘要・・・・・・・・物件A代金

[得意先別入金台帳]

ID・・・・・・・・・1
得意先_ID・・・・・・1
年月日・・・・・・・2014/10/10
区分・・・・・・・・0:入金、1=返金、・・・9=調節
金額・・・・・・・・20,000円
摘要・・・・・・・・物件A代金

さて、これでは見積りテーブルとの関連は皆無。でも、それで良いのです。あくまでも、売上と入金との関係を把握するのが目的。見積りは、あくまでも見積りなんです。そこを関連付けようとすると、永遠に完成できないでしょう。

もう一つ。得意先テーブルには”請求締め日”以外に請求に係わる列が見当たりません(ちょっと、、修正しました)。それは、”請求書発行アプリケーション”さえあれば解決できるからです。もちろん、請求書発行に当たっては、得意先ごとに設定した締め日に沿って請求残、新規売上、新規入金を求める必要があります。ですから、月次の売上や入金を加算・減算して求めてはダメです。請求履歴等は、あえてテーブルに記録しなくても紙媒体で残しておけば良いでしょう。少なくとも、そういった設計で顧客からクレームが出たことはありません。

【お詫び】先の回答の[請求]を[売上]と訂正しました。こっちの方が一般的かと思います。なお、先の回答で示したのは請求書発行アプリケーションのそれです。得意先別売上・入金元帳のそれではありません。

販売管理アプリケーションを開発したのは1996年のこと。ちょっと、記憶が怪しいところがあるかと思いますが、そこはご勘弁を。

>請求先から複数の依頼案件にまたがって入金されたりすることもあるので、
>それをシステム設計で自動的に、
>顧客がどの依頼案件の支払なのかを作りこむことは出来ないのでしょうか?

もちろん出来るが、絶対に挑戦してはいけない!

>つまり、このようなカラムをテーブルに作れば、
>少なくとも請求と入金の日々の記録を付ける事は可能ということでしょうか?

全く、違います。記録するのは、売上と入金のみです。ですから、用意するテーブルは、次のようです。

[得意先台帳]

ID・・・・・・・・・1
名...続きを読む

Qアクセスで月ごとの集計

いつも大変お世話になっております。
似たような質問が他にもあるかもしれませんが、見当たりませんでしたので、新しく質問させてください。

アクセスで、集計をしたいと思っています。
あるフィールドには、日付/時刻型が設定されていて、そこには日付の情報が入っています。
その他のフィールドに、金額が入っています。
日付が入っているフィールドの日付をもとに、「月ごと」に金額を集計したいのですが、クエリの集計でどのように指定すればいいのでしょうか?

他の機能で見た、「グループ間隔の設定」というような感じです。


また、さらに分かれば教えてほしいのですが、その日付のフィールドには空白もあります。
空白は無視をして、日付が入っているところだけ集計をしたい場合はどうすればいいでしょうか?


大至急!よろしくお願いします。m(_ _)m

Aベストアンサー

テーブルのフィールドを[日付][金額]と仮定して
選択クエリで3つのフィールド
年月:format([日付],"yyyy/mm")
金額
日付
を作成します。
集計ボタンをクリックし
[金額]の集計を「合計」
[日付]の集計を「Where条件」、抽出条件を「Is Not Null」としてください。

QアクセスVBAのMe!と[ ]

基本的なことですみません。

アクセスのイベントプロシージャで、Me!ってありますけど、これはどういう意味なんでしょうか?

また、Me!の後に、Me!.~~と書く場合と、Me!.[~~]と書く場合がありますが、どこが違うのでしょうか?

Aベストアンサー

>プロシージャ内で[]を使う場合は、そのフォーム外のオブジェクトを使う場合と考えてよろしいでしょうか?
別のオブジェクトを使う場合だけではありません。
Hensu = Me![Text1]のようにHensuという変数に自身のTest1の値を代入する場合のように。
[]で括られているのがオブジェクト名やコントロール名だよという事。
クエリの抽出条件に存在しない[?]とすれば?というコントロール等が参照できないので?というダイアログが表示されるように?というオブジェクトやコントロールは何?と聞いてくるように。
>フォーム内のオブジェクトの場合はあくまでMe!で良いのでしょうか
Forms.[フォーム名]![コントロール名]やForms![フォーム名]![コントロール名]が構文。
アクティブなフォームが自分自身ならForms![フォーム名]の変わりにMeでもOKですという事。

と言う解釈の方が良いと思います。

QアクセスのDsum関数の使い方

これまでに何度となく同じような質問を出している者です。すみません・・・。以前は下記の【newcode】を【code】と【国名】から作成する方法を質問しその問題は解消しました。
【code】  【国名】    【newcode】
 111    日本     111_日本
 111    日本     111_日本
 111    中国     111_中国
 111    中国     111_中国
 121    アメリカ   121_アメリカ
 121    アメリカ   121_アメリカ
 123    日本     123_日本
 123    日本     123_日本
 123    中国     123_中国
しかし、この表にはまだもう一つの作業が残っているのです。それは、下記のように
【code】  【国名】   【A1】 【A1合計】
 111    日本     10    30
 111    日本     20    30
 111    中国     25    40
 111    中国     15    40
 121    アメリカ   22    37
 121    アメリカ   25    37
 123    日本     20    35
 123    日本     15    35
 123    中国     30    30
【A1】が追加されているのです。
そして、【A1合計】として【code】と【国名】が同じものを『DSum関数』を使用してレコードの合計値を出すにはどうしたらいいでしょうか?
以前は、上にあった【newcode】を使い、『DSum("[A1]","[シート名]","[newcode]='" & [newcode] & "'")』といった演算でやっていたんですが・・・。条件を『[code]=[code]and[国名]=[国名]』といった感じでやりたいのです。
すみませんが、教えていただけるとありがたいです。

これまでに何度となく同じような質問を出している者です。すみません・・・。以前は下記の【newcode】を【code】と【国名】から作成する方法を質問しその問題は解消しました。
【code】  【国名】    【newcode】
 111    日本     111_日本
 111    日本     111_日本
 111    中国     111_中国
 111    中国     111_中国
 121    アメリカ   121_アメリカ
 121    アメリカ   121_アメリカ
 123    日本     123_日本
 123...続きを読む

Aベストアンサー

No.3、DexMachinaです。

> 質問に書いたとおり前には、条件式を増やすやり方ではムリでしょうか?

えーと・・・その方法でしたら、「code」と「cade」の打ち間違い(「o」が「a」に
なっている)がありますが(汗)、No.2でn-junさんが既に答えられています。

なお、質問文を見返していて気になった点があったので、念のためですが、
「And」の前後には必ず半角スペースが入りますので、手入力する際は
ご注意下さい。

それと、もしも現状では「'」の置き方がわかりにくいようでしたら、以下の
書き方でも同じ意味になりますので、参考まで。
(かえってわかりにくかったら、すみません(汗))

【「"'" & [code] & "'"」でひとセット、という形】
 DSum("[A1]","シート名","[code]=" & "'" & [code] & "'" & " And [国名]=" & "'" & [国名] & "'")

【さらに、「And」も分離した形】
 DSum("[A1]","シート名","[code]=" & "'" & [code] & "'" & " And " & "[国名]=" & "'" & [国名] & "'")

※「[code]=」と「"'" & [code] & "'"」が1条件目の指定、
  「[国名]=」と「"'" & [国名] & "'"」が2条件目の指定で、
  それを「" And "」でつないでいます。

No.3、DexMachinaです。

> 質問に書いたとおり前には、条件式を増やすやり方ではムリでしょうか?

えーと・・・その方法でしたら、「code」と「cade」の打ち間違い(「o」が「a」に
なっている)がありますが(汗)、No.2でn-junさんが既に答えられています。

なお、質問文を見返していて気になった点があったので、念のためですが、
「And」の前後には必ず半角スペースが入りますので、手入力する際は
ご注意下さい。

それと、もしも現状では「'」の置き方がわかりにくいようでしたら、以下の
書き方...続きを読む

Q【Access】先月のデータを抽出する条件について

申し訳ありませんが、初心者ですのでお教え願います。

クエリで先月のデータをパラメータを入れずに、自動で年月を取得して抽出したいと考えています。
年月のフィールドがあるのですが、和暦で且つ年号を数字にしています。
(平成を4とすると、平成28年9月→42809)

文字列で必ず5桁の設定です。
どのような抽出条件を入れたら良いでしょうか。

Aベストアンサー

先月は当分の間「平成」でしょうから、
Format(Date() - Day(Date()),"4emm")

QSum関数の使いかたについて(ACCESS)

レポート上に商品A、商品B、商品Cというテキストボックスがあってそれぞれのプロパティのコントロールボックスには以下の設定がしてあります。
=DSum("[商品A]","[抽出クエリ]")
=DSum("[商品B]","[抽出クエリ]")
=DSum("[商品C]","[抽出クエリ]")
商品A~Cそれぞれの合計値は正常に表示されるのですが、商品A~Cの合計値を別に設けたテキストボックス(総計)に表示させたいのですが、何も表示されません。
総計のコントロールボックスには以下の記述をしました。
=Sum([商品A]+[商品B]+[商品C])
Web検索で関数の使い方等を調べましたが、原因が分かりません。
どなたか、サポートをお願いいたします。

Aベストアンサー

原因はNullでしたか~

値がNullの時値を変換する関数として
Nz()というのがありますので
DSumの関数自体をNz(DSum("[商品A]","抽出クエリ"),0)とすれば
Nullの場合でも ゼロ が返されるので 今度はうまく行くと思いますよ。

Qアクセスで#エラーを表示させない方法は?

アクセス2000を使用しています。フォームにテキストボックスを貼り付けて、計算式を入れています。計算できない数値になると、#エラーと表示されます。目障りなので、#エラー という表示を消したいのですが、どうしたらよろしいでしょうか?宜しくお願い申し上げ候。

Aベストアンサー

はじめは「IIF関数とIsError関数を使用して」と考えたものの、IIF関数は引数がエラーになった時点で
エラーが返されてしまう(=元の木阿弥)ので、どうしたものかと思ったのですが・・・
とりあえず、「見た感じ、何も表示されていないように見える」ということで、『条件付書式』での対応と
いうのはいかがでしょうか。

1)当該フォームをデザインビューで開く
2)当該テキストボックスを選択
3)メニューで「書式(O)→条件付き書式(D)」を選択
4)『条件付き書式設定』ダイアログが開くので、『条件1(1)』枠の左端にあるコンボボックスで「式」を選択
5)上記コンボボックスの隣が1つのテキストボックスになるので、そこに以下のような式を入力
 IsError([テキスト0])
 ※上記の式は当該テキストボックスの名前が「テキスト0」の場合です。
6)上記テキストボックスの下、右から2番目に「A」と表示された、文字色を指定するボタンがあるので、
 その左の小さな「▼」をクリックし、当該テキストボックスの背景と同じ色(既定では白のはず)を選択
7)『OK』ボタンをクリックしてダイアログを閉じる

・・・以上です。
これで、『テキスト0』の計算式がエラーになった場合は、文字色が背景と同じ色になるので、「#エラー」と
いう表示はされていないように見える、という状態にすることができると思います。

はじめは「IIF関数とIsError関数を使用して」と考えたものの、IIF関数は引数がエラーになった時点で
エラーが返されてしまう(=元の木阿弥)ので、どうしたものかと思ったのですが・・・
とりあえず、「見た感じ、何も表示されていないように見える」ということで、『条件付書式』での対応と
いうのはいかがでしょうか。

1)当該フォームをデザインビューで開く
2)当該テキストボックスを選択
3)メニューで「書式(O)→条件付き書式(D)」を選択
4)『条件付き書式設定』ダイアログが開くので、『条件1(1)』枠の...続きを読む

QACCESS フォームからサブフォームのデータを更新・入力したい

ACCESS フォームからサブフォームのデータを更新・入力したい

tbl_プロジェクトというテーブルにIDとプロジェクトコード、プロジェクトの基本情報を持たせ、f_プロジェクトフォームからプロジェクトコード、件名、契約日等のデータ及び、f_テーマサブフォームにテーマを入力できるようなフォームを作成しています。フォームで入力したものをそれぞれのテーブルに保存したいのですがうまくいかない部分があります。

フォームから入力すると、tbl_プロジェクトに所属する情報は更新されます。そのtbl_プロジェクトに所属するプロジェクトコードをサブフォームのtbl_テーマのプロジェクトコードにも反映したいのですがどのようにしたらよいでしょうか?
そういったことは可能でしょうか?分かりにくい説明で申し訳ないですが教えていただけると助かります。よろしくお願いします!



DBの構成
【テーブル】
tbl_プロジェクト (1件1件のIDとプロジェクトコードを持つ)
(フィールド:P_ID、プロジェクトコード、件名、契約日など)
tbl_テーマ(プロジェクト毎に関連のあるキーワードを持つ)
(フィールド:P_ID、プロジェクトコード、テーマ)←これのプロジェクトコードにtbl_プロジェクトのデータが入るようにしたい。
tbl_顧客(プロジェクトを依頼した顧客情報を持つ)
【クエリ】
q_テーマ(プロジェクト、テーマ、顧客を抽出するクエリ)
【フォーム】
f_プロジェクト (プロジェクトを1件ずつ表示・参照・新規作成するフォーム)
f_テーマサブフォーム (f_プロジェクトフォームのプロジェクトコードにづきテーマを
        表示・入力するサブフォーム)

リレーションはP_IDをキーに一対多で作成しています。

ACCESS フォームからサブフォームのデータを更新・入力したい

tbl_プロジェクトというテーブルにIDとプロジェクトコード、プロジェクトの基本情報を持たせ、f_プロジェクトフォームからプロジェクトコード、件名、契約日等のデータ及び、f_テーマサブフォームにテーマを入力できるようなフォームを作成しています。フォームで入力したものをそれぞれのテーブルに保存したいのですがうまくいかない部分があります。

フォームから入力すると、tbl_プロジェクトに所属する情報は更新されます。そのtbl_プロジェク...続きを読む

Aベストアンサー

No.4です。

前回の回答は、「レコードの新規登録」のみを想定していました(汗)
大変失礼致しました。


【「メインフォーム」-「サブフォームの新規レコード」間の不一致について】
(=No.4の補足での、2個目の「◆」の件)

メインフォーム側の「レコード移動時」イベントで、『プロジェクトコード』の
更新後イベントと同様の処理を行えば、解消すると思います。
(先頭1行が「Private Sub Form_Current()」となる他は、前回のVBAと全く
 同じなので、今回は省略します)


【既存レコードでの『プロジェクトコード』の空白について】
(=No.4の補足での、1個目の「◆」の件)

対処法としては、
 a)更新クエリを使用して、tbl_テーマの『プロジェクトコード』を一括更新
  (→tbl_テーマに入力済みの『P_ID』の再確認が不要な場合)
 b)「メインフォーム上のプロジェクトコードを、サブフォームの全レコードに
  一括代入」するためのコマンドボタンを、メインフォームに追加
  (→tbl_テーマの『P_ID』が正しいかを目視確認してから代入する場合)
の、2つの考え方があります。

「a」については添付画像をご覧いただくとして、ここでは「b」について説明
します。

メインフォームに『コード転記』コマンドボタンを作成したら、そのクリック時
イベントに以下のコードを記載して下さい:

Private Sub コード転記_Click()

  If MsgBox("サブフォームにプロジェクトコードを追記します", vbOKCancel, "確認") = vbCancel Then Exit Sub

  'サブフォームの全レコードを上書き更新
  With Me![サブフォームのコントロール名].Form.RecordsetClone
    Do Until .EOF
      .Edit
      !プロジェクトコード = Me!プロジェクトコード
      .Update
    Loop
  End With

  '更新を反映
  Me![サブフォームのコントロール名].Form.Refresh

  MsgBox "追記しました", , "確認"

End Sub


なお、「a/b」のどちらを採った場合でも、サブフォームの『P_ID』の上書き
編集に合わせて『プロジェクトコード』も連動して更新させるには、別途、
以下のような『P_ID』の更新後イベントでの対応が必要です:

Private Sub P_ID_AfterUpdate()
'メインではなくサブフォームの『P_ID』テキストボックスの更新後イベント

  If IsNull(Me!P_ID) Then
    Me!プロジェクトコード = Null
  Else
    Me!プロジェクトコード = DLookup("[プロジェクトコード]", "tbl_プロジェクト", "[P_ID]=" & Me!P_ID)
    '『P_ID』がテキスト型の場合は上記ではなく以下のコード
    'Me!プロジェクトコード = DLookup("[プロジェクトコード]", "tbl_プロジェクト", "[P_ID]='" & Me!P_ID & "'")
  End If

End Sub

また、この対応を組み込んで戴けば、

> テーマを修正するとフォーム上では10001が入力される。
> tbl_テーマには反映されない。

の件も解消すると思います。
(但し、別のレコードに移動したり、メニューから「レコード(R)→レコードの
 保存(O)」を選択する等して、レコードが保存してからでないと、テーブル
 には反映されないので、確認の際はご注意下さい)


・・・以上です。

No.4です。

前回の回答は、「レコードの新規登録」のみを想定していました(汗)
大変失礼致しました。


【「メインフォーム」-「サブフォームの新規レコード」間の不一致について】
(=No.4の補足での、2個目の「◆」の件)

メインフォーム側の「レコード移動時」イベントで、『プロジェクトコード』の
更新後イベントと同様の処理を行えば、解消すると思います。
(先頭1行が「Private Sub Form_Current()」となる他は、前回のVBAと全く
 同じなので、今回は省略します)


【既存レコードでの『プロジェクトコー...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報