電子書籍の厳選無料作品が豊富!

現在、Access2007にて、会社の顧客管理システムを作成している超初心者です。
本を数冊買い込んで、作成しているのですが、どうしてもわからず、質問をさせていただきました。どなたかご教授いただければと願っております。

基本的には、自社で取得するオリジナルの管理番号にて、商品の修理受付状態を管理するデーターベースです。
なお、管理番号は、商品別に取得しているので、商品が異なれば、同じ管理番号が存在します。
例えば、
  商品   管理番号
  AAA    001
  AAA    002
  BBB    001
  BBB    002
商品AAAの管理番号001というものは、1つしか存在しません。また、重複登録をしないような設定もしたいと思っていますが、そのやり方もよくわかっておりません。

現在、作成したテーブルならびにフォームは、
入力者テーブル   フィールドは、入力者ID(主キー)、入力者名、ふりがな
顧客テーブル    フィールドは、顧客ID(主キー)、顧客名、ふりがな、備考
商品テーブル    フィールドは、商品ID(主キー)、商品名、顧客参照ID、備考
管理番号テーブル  フィールドは、管理番号ID(主キー)、顧客名参照ID、商品参照ID、管理番号、備考
です。

このあとに、修理受付入力と修理受付明細、作業完了入力、作業完了明細、修理履歴の検索テーブル及び、フォームを作成する予定です。
(実際には、少し作成しているのですが、まったく機能していません。。)

1つの管理番号に対して、最終的に数回の修理を受付します。
現在、私が考えている、修理受付入力と修理受付明細、作業完了入力、作業完了明細フォームに関しては、以下の内容を必要とします。
■修理受付入力フォーム
 ・修理受付ID(主キー)
 ・入力日(自動入力)
 ・入力者(コンボボックス)
 ・顧客名(コンボボックス)
 ・商品名(コンボボックス)


修理受付入力フォームのサブフォームとして、
■修理受付明細テーブル
 ・修理受付明細ID(主キー)
 ・修理受付親ID
 ・明細行番号(入力した行について、行数を表示したい)
 ・管理番号(手入力)
 ・現在の状態(管理番号を入力したら自動的に状態が表示されるようにしたい。)
 ・修理回数(管理番号を入力したら自動的に過去の修理回数が表示されるようにしたい。)
 ・受付日(手入力)
 ・備考

*「現在の状態」については、受付をする際は、前回の修理分が「納品済」となっているので「納品済」、または、初めての受付の場合は、「新規」と表示したいです。また、修理受付が終わり、受付ボタンにて、作業完了フォームにコピーされた後は、作業完了明細にて、「受付中」と表示され、作業完了登録をすると、また「納品済」と表示したい。

*修理回数は、作業完了明細の完了日を入力した数をCountして、それに作業完了明細にて、修理不能返却をしたものは、完了日のCountマイナス1の数字を表示したい。

*商品AAAに対して、管理番号が異なるものをまとめて20個受付したりすることがあるため、サブフォームにて、異なる管理番号のものを、まとめて入力できるようにしたく、サブフォームを作りました。


■作業完了入力フォーム(修理受付をすると、内容が作業完了にコピーされるようにするつもりです。)
 ・作業完了受付ID(主キー)
 ・入力日
 ・入力者
 ・顧客名
 ・商品名

作業完了入力フォームのサブフォームとして、
■作業完了明細テーブル
(基本的には、作業完了入力フォームと同様、コピーされ、商品受付明細のフォームに、追加したフィールドがあります。)
 ・作業完了受付明細ID(主キー)
 ・作業完了受付親ID
 ・明細行番号
 ・管理番号
 ・現在の状態
 ・修理回数
 ・受付日
 ・完了日(手入力)
 ・修理不能返却(Yes/No型)←修理不能の場合はチェックを入れる。
 ・備考


今、つまずいている部分は数か所あります。
 ・商品AAAの管理番号001という商品は、1つしか存在しません。管理番号テーブルにて、重複登録をしない設定をしたい。
 ・明細行番号の表示の仕方
 ・修理受付明細フォームでの、現在の状態、修理回数の自動表示の方法。(クエリの作り方から、フォームへの反映の仕方が全くわかりません。)


どなたか、ご教授くださいませ。どうぞよろしくお願いいたします。

A 回答 (37件中1~10件)

#1~#4です


サンプルDBを試作してみましたが、結構面倒で、それ以上に説明は大変そうです。と云うことで取り敢えず簡単なことから。

>1つのフォームに、1つのテーブルが必要と思っておりました。
一般的にはフォームにテーブルをそのまま対応させることはありません。クエリーを介在させます。例えば一覧表示するとき、アイウエオ順や年月日順に表示しようとすればクエリー介在が必要です。またテーブルはレコードの並び順を保証しませんから、いつ利用しにくい並びになるか判らないからです


>受付フォームにて、受付をし、作業が完了した際には、再度、受付フォームを開いて、完了日を入力すれば良いのですよね?!
これでも良いですが、クエリーを使用すれば、完了日未記入のものだけを一覧表示して処理するようなこともできます。どちらかというとその方が良いでしょう

>顧客名さえあれば電話番号や住所等はこのシステムでは必要ないので、顧客ID(オートナンバー)顧客名、ふりがな、備考のみで良いことになります。
他のDBに顧客名関連の情報がある場合は、それとリンクして使用します。ですから当該DBでは顧客参照IDだけで済ませます。リレーショナルDBでは同じデータの複数登録はできる限り避けるべきです。入力手間が増える弊害もさることながら、入力回数が増えれば、誤りの発生もほぼそれに正比例するためです

>コンボボックスで選択
コンボボックスの選択も便利ですが、選択対象がせいぜい10くらいまで、無理しても20以下にしたいです。それ以上では選択が大変です。その場合は一覧表示し、そこから選択して処理の流れになります。さらにレコード数が多いときはグループ分け、さらには「大分類」「中分類」「小分類」のような仕掛けも必要になります。

以上もふまえサンプルDBの仕様ですが
1.商品一覧表示フォームから当該商品を選択し、この商品の管理番号一覧フォームを開く

2.管理番号一覧フォームで目的とする管理番号を選択し、修理履歴フォームを開く

3.管理番号一覧フォームは新しい管理番号を追加でき、これはそれまでの最大プラス1になる

4.修理履歴テーブルは管理番号ごとに連番をもつ

5.修理履歴フォームから個々の修理明細フォームを開ける

6.修理明細フォームは上記の流れ以外、現在対象絞り込み(完了日未記入だけを絞り込む)からも開けるようにする

ざっとこんな感じでしょうか?よろしいか、あるいは仕様変更を補足してください。

この回答への補足

貴重なお時間をたくさん、たくさんさいていただき、また、いろいろとお考えいただき、ほんとうにほんとうに心より感謝申し上げます。

早速ですが、

>>受付フォームにて、受付をし、作業が完了した際には、再度、受付フォームを開いて、完了日を入力すれば良いのですよね?!
>これでも良いですが、クエリーを使用すれば、完了日未記入のものだけを一覧表示して処理するようなこともできます。どちらかというとその方が良いでしょう

につきましては、fuuten_no_nekoさまがおっしゃられるように、完了日未記入のものだけを一覧表示して処理する方法が私にもできるようであれば、是非そうしたいです!!

次に、顧客名についてですが、私の書き方が悪かったのですが、他のDBに存在するというのは、Accessではなく、全く異なったソフトにて売り上げ管理は行っておりますので、とりあえず、今回、顧客ID(オートナンバー)顧客名、ふりがな、備考のテーブルは必要になるかと思います。合ってますでしょうか?

>>コンボボックスで選択
につきましては、ご指摘のように、商品の種類はコンボボックスで表示できる限界の10~20以上を裕に越し、現時点で数百ありますので、ご提案のグループ分け、さらには「大分類」「中分類」「小分類」の方法を取りたいと思います。

DBの仕様についてですが、
私にできるようであれば、ご提案の1~6の内容は最高!!です。

ただ、
>3.管理番号一覧フォームは新しい管理番号を追加でき、これはそれまでの最大プラス1になる
の「最大プラス1になる」についてですが、
現在、すでに管理番号を取得している商品があり、それは、初めて受付をした日プラス2桁の連番を取っております。
例えば、商品Aを2009年3月11日に3点新規受付したとすると、管理番号は
商品A 09031101
商品A 09031102
商品A 09031103

となり、同じ、2009年3月11日に商品Bを3本新規受付すれば、
商品B 09031101
商品B 09031102
商品B 09031103

となっております。また、現場の人間に確認をしたところ、管理番号の取得形式は上記のとおりしたいとのことですので、なんとか、このような取得方法はできますでしょうか。

ほんとうに厚かましく申し訳ないのですが、どうかよろしくお願い申し上げます。

補足日時:2009/03/11 20:35
    • good
    • 0

#36を回答してから約一ヶ月ですが、「新しい質問」をされたようにも見えません。


1.私が見落としている
2.問題は自力解決した
3.その他
どれでしょう?
    • good
    • 0
この回答へのお礼

fuuten_no_nekoさんのおかげで、その後、なんとか自力で進め、実用段階にこぎつけました!!

ほんとうに手取り足取りありがとうございました。
また、ご心配をおかけいたしまして、申し訳ございませんでした
<m(__)m>

お礼日時:2009/05/07 09:51

今までの状況を総括してみたいです。


1.#5で示したロードマップは一応1~5が終わった
2.それそれ実用段階にするためには作り込みが必要
3.宿題としては、大分類の選択方法(一つずつレコードを移動するのではない方法)や管理台帳フォームでの顧客名選択方法の改善(20以上の対象をコンボボックスから選択するのはやりにくい)などある。またロードマップでの6.も未解決。さらに初期メニュー画面的なものも必要でしょう。

こんな状況と思いますが、それぞれの問題は、新たな質問として投稿した方が良いと考えます。理由は#34にも書いたとおりです。
このスレッドをすぐに閉め切る必要はありませんが。
    • good
    • 0
この回答へのお礼

手取り足取り、こんなに沢山、かつ大変ご丁寧にご指導いただき、ほんとうにありがとうございました<(_ _)><(_ _)>

実用までには、確かに修正等が必要ですが、ひとつずつ解決していこうと思います。また、わからないことが出てきたら、みなさまのお知恵を拝借させていただきたいと思います。

ほんとうに、ほんとうにありがとうございました。<(_ _)>

お礼日時:2009/04/10 20:34

続きです。

修理明細フォームの作成

1.修理明細フォームのSQL文
SELECT 顧客テーブル.顧客名, 商品テーブル.商品名, 商品テーブル.備考, 管理テーブル.管理番号, 修理伝票テーブル.修理伝票ID, 修理伝票テーブル.連番, 修理伝票テーブル.受付日, 修理伝票テーブル.完了日, 修理伝票テーブル.引き渡し日
FROM 修理伝票テーブル INNER JOIN (顧客テーブル INNER JOIN (商品テーブル INNER JOIN 管理テーブル ON 商品テーブル.商品ID = 管理テーブル.商品ID) ON 顧客テーブル.顧客ID = 管理テーブル.顧客ID) ON 修理伝票テーブル.管理番号ID = 管理テーブル.管理ID;

実際には「引き受け者」や「修理担当者」などのデータも必要でしょうが、これは修理伝票テーブル上では「社員ID」で管理すべきものです。なので修理伝票テーブルに「引き受け者IDフィールド」や「修理担当者IDフィールド」追加し、一方で社員テーブルとの連携も取れるようにしなければなりません。とても解説しきれないので実装はスキップします

2.修理明細フォームのレイアウト
フィールドリストから必要項目をフォーム上に配置します。まとめてリストからフォームに配置することもできます

3.修理履歴フォームのSQL文を若干変更
SELECT 修理伝票テーブル.修理伝票ID, 修理伝票テーブル.管理番号ID, 修理伝票テーブル.受付日, 修理伝票テーブル.開始日, 修理伝票テーブル.完了日, 修理伝票テーブル.引き渡し日, 管理テーブル.管理番号, 修理伝票テーブル.連番, 顧客テーブル.顧客名, 商品テーブル.商品名
FROM ((修理伝票テーブル INNER JOIN 管理テーブル ON 修理伝票テーブル.管理番号ID = 管理テーブル.管理ID) INNER JOIN 顧客テーブル ON 管理テーブル.顧客ID = 顧客テーブル.顧客ID) INNER JOIN 商品テーブル ON 管理テーブル.商品ID = 商品テーブル.商品ID
ORDER BY 管理テーブル.管理番号, 修理伝票テーブル.連番;
要するに修理伝票テーブルの修理伝票IDを追加しています

4.修理履歴フォームに「修理明細を開く」ボタンを追加。コードは
Dim stDocName As String
Dim stLinkCriteria As String

Me.Recordset.Edit
Me.Recordset.Update
stDocName = "修理明細フォーム"
stLinkCriteria = "[修理伝票ID]=" & Me![修理伝票ID]
DoCmd.OpenForm stDocName, , , stLinkCriteria

5.修理明細フォームでは書式で
規定のビュー:単票フォーム
レコードセレクタ:いいえ
移動ボタン:いいえ
区切り線:いいえ
くらいがよいでしょうか
「Countと受付状態の表示について」の回答画像35

この回答への補足

ご連絡、遅くなりました!!
今回の工程、完了しました!!!

毎度、毎度、大変恐れ入りますが、続きのご指導をお願い申し上げます<(_ _)>

補足日時:2009/04/10 05:41
    • good
    • 0

>一目でわかるように表示される仕様にできれば、大変ありがたいです



これは新しい質問として投稿してください。理由はこのスレッドが既に長くなりすぎていること、そしてもっと大きな問題は、回答を見る人がほとんどいないことです。つまり知識が共有されない。新質問になれば、新たに回答者も現れるし、同じような問題を抱える人(将来にわたり)に対しては有効な対策となります。

それでは「修理履歴フォーム」の作成
0.「修理伝票」テーブルの作成。フィールドは
修理伝票ID:オートナンバー
受付日:日付/時刻型
開始日:日付/時刻型
完了日:日付/時刻型
引き渡し日:日付/時刻型
その他諸々
管理番号ID:数値型
連番:数値型

以上で「管理番号ID」と「連番」にまたがり主キー

1.修理履歴フォームのSQL文
SELECT 修理伝票テーブル.管理番号ID, 修理伝票テーブル.受付日, 修理伝票テーブル.開始日, 修理伝票テーブル.完了日, 修理伝票テーブル.引き渡し日, 管理テーブル.管理番号, 修理伝票テーブル.連番, 顧客テーブル.顧客名, 商品テーブル.商品名
FROM ((修理伝票テーブル INNER JOIN 管理テーブル ON 修理伝票テーブル.管理番号ID = 管理テーブル.管理ID) INNER JOIN 顧客テーブル ON 管理テーブル.顧客ID = 顧客テーブル.顧客ID) INNER JOIN 商品テーブル ON 管理テーブル.商品ID = 商品テーブル.商品ID
ORDER BY 管理テーブル.管理番号, 修理伝票テーブル.連番;

2.「修理履歴フォーム」のフォームヘッダに
・管理番号、顧客名、商品名、管理番号
詳細に
・連番、受付日、完了日
などを配置し、フォームの規定のビューを帳票フォームにする

3.管理台帳フォームに「修理履歴ボタン」を貼り付け、コードビルダで
Dim stDocName As String
Dim stLinkCriteria As String

Me.Recordset.MovePrevious 'おまじないのような二行
Me.Recordset.MoveNext
stDocName = "修理履歴フォーム"
stLinkCriteria = "[管理番号ID]=" & Me![管理ID]
DoCmd.OpenForm stDocName, , , stLinkCriteria

が実行できるようにする。Meその他に関する問題は解決済み(過去参照)と考える

4.修理履歴フォームの開く時イベントに以下のコード
Dim dbs As Database
Dim stDocName As String
Dim rst As DAO.Recordset

Set rst = Me.Recordset
If rst.RecordCount = 0 Then
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("修理伝票テーブル")
rst.AddNew
rst.Fields("連番").Value = 1
rst.Fields("管理番号ID").Value = Form_管理台帳フォーム.管理ID
rst.Fields("受付日").Value = Date
rst.Update
Me.Requery
End If

5.修理履歴フォームに「修理伝票追加ボタン」を作成。必要なコードはこれまでを参考に考えてください。

この回答への補足

>>一目でわかるように表示される仕様にできれば、大変ありがたいです

上記については了解いたしました!!どっぷり、自分のことばかり考えていました。お恥ずかしい。。。

そして、1~5まで完了しました!!
fuuten_no_nekoさん様様です<(_ _)><(_ _)>

毎度恐れ入りますが、続きをご教授くださいませ。

補足日時:2009/04/06 23:26
    • good
    • 0

#32の補足からすると


1.管理番号がない商品に対しては、顧客が空白の管理番号が発行される
2.この状態で顧客を選択できる
3.管理番号の追加もできる
で、何ら問題ない動きだと思うのですが。何か不足があるのでしょうか?
現在#5で示したロードマップの3.までが終わろうとしていると思います。以後ですが確認しておきたいのは
4.一つの管理番号に対し、複数の連番修理レコードが必要なのか?
5.現在の状態は同じ顧客が、同じ商品を複数の管理番号で管理されていますが、これはどのような意味を持つのでしょうか?

この回答への補足

>#32の補足からすると
>1.管理番号がない商品に対しては、顧客が空白の管理番号が発行される
>2.この状態で顧客を選択できる
>3.管理番号の追加もできる
>で、何ら問題ない動きだと思うのですが。何か不足があるのでしょうか?

すみません。再度、確認をしたところ、管理番号フォームを閉じた状態にして、「商品中分類選択フォーム」のサブフォームの「商品一覧フォーム」の管理番号がない商品のボタンを押すと、正しく、管理番号が新たに発行され、顧客も選択でき、管理番号も追加できるのですが、「管理番号フォーム」を開いたままの状態で、「商品中分類選択フォーム」に戻り、サブフォームの「商品一覧フォーム」の別の管理番号がない商品のボタンを押すと、すべての欄が空白の「管理番号フォーム」が開き、「管理番号追加」のボタンをクリックすると、下記のエラーが出ます。
************************
実行時エラー 94
Nullの使い方が不正です。
************************

なお、今回の検証で、別の管理番号がない商品を選択する場合は、一度、「管理番号フォーム」を閉じてから、あらためて「商品中分類選択フォーム」に戻り、サブフォームの「商品一覧フォーム」の別の管理番号がない商品のボタンを押せば、正しく管理番号を追加できることが判ったので、問題はありません。

このことに気付かず、いろいろと検証していただき、本当に申し訳ございませんでした<(_ _)><(_ _)>



>4.一つの管理番号に対し、複数の連番修理レコードが必要なのか?

1つの管理番号に対し、複数の連番修理レコードが必要です。


>5.現在の状態は同じ顧客が、同じ商品を複数の管理番号で管理されていますが、これはどのような意味を持つのでしょうか?

実は、弊社で扱っている商品というのは、刃物(ドリルなど)でして、切れが悪くなると、お客様より刃物をお預かりし、研磨をし、また切れる状態にして納品します。

たとえば、商品AAAの管理番号09040301の刃物につき、切れが悪くなるたびにお預かりし、研磨を行います。
そのため、商品AAAの管理番号09040301の刃物を何度もお預かり→研磨→納品するという流れになり、最終的に摩耗がひどい状態になると、研磨不能となり、廃棄または研磨をしない状態でお客様に返却をするという流れになります。
また、その刃物1本1本につき、お客様の使用頻度や摩耗状況が異なるため、同じ商品でも、研磨できる回数も異なり、高品質保持のためには、弊社で、研磨履歴と研磨回数を把握し、研磨の限界を確かな履歴と目視で判断する必要があります。そのため、1つの管理番号に対し、複数の修理レコードが必要となり、また、同じ顧客の同じ商品であっても、管理番号ごとに、1点1点管理する必要があります。

作業としては、大変面倒なことですが、弊社にとっては、とても重要なことなのです(^_^;)

いつも説明不足でわかりにくいかと存じますが、ご理解いただけたでしょうか。。

また、#5の
>5.修理履歴フォームから個々の修理明細フォームを開ける
>6.修理明細フォームは上記の流れ以外、現在対象絞り込み(完了日未記入だけを絞り込む)からも開けるようにする

についてですが、修理履歴フォームを開いたときに、個々の修理明細フォームを開かなくても、管理番号ごとに、過去の修理(研磨)回数、現在の状態(受付済・納品済・廃棄返却)が一目でわかるように表示される仕様にできれば、大変ありがたいです。
もちろん、修理履歴フォームから修理明細フォームは開ける仕様にしたいです。

また、修理明細フォームの絞込み(検索?!)については、完了日未記入だけを絞り込むなども含めて、複数の項目(顧客別、商品別、管理番号別、現在の状態別)でも絞込みができれば、とてもありがたいです。

ほんとうにほんとうに、お世話になりっぱなしのうえ、ど厚かましいお願いですが、どうか、ご協力のうえ、ご教授くださいますようお願い申し上げます<(_ _)><(_ _)><(_ _)>

補足日時:2009/04/04 19:01
    • good
    • 0

#31の補足では状況が良く判りませんが「管理番号がひとつもない商品」でそうなるのでしょうか?

この回答への補足

またまた、説明不足ですみません。

再度確認したところ、「管理番号がひとつもないない商品」については、

Set rst = Me.Recordset
にブレークポイントを設定し、「管理番号フォーム」は閉じた状態から、「商品中分類選択フォーム」のサブフォームの「商品一覧フォーム」の管理番号がない商品のボタンを押すと、「商品中分類選択フォーム」が開いたまま、「管理番号フォーム」は開かず、この行が黄色く反転し、F8で進むと最終行の
End Sub
まですべての行が黄色く反転しました。

そのまま続けてF8を1回押すと、下記のVBAの最終行
End Function
が黄色く反転し、「管理番号フォーム」が開き、新しい管理番号が1つ作成されます。その際、顧客名は空白になってます。

****************************************************************
Public Function 管理番号フォームOpen()
Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "管理番号フォーム"
PID = Form_商品一覧フォーム![商品ID]
stLinkCriteria = "[商品ID]=" & Form_商品一覧フォーム![商品ID]
DoCmd.OpenForm stDocName, , , stLinkCriteria
End Function
****************************************************************

なお、「管理番号が存在する商品」は、#31の補足のように、

Set rst = Me.Recordset
にブレークポイントを設定し、「管理番号フォーム」は閉じた状態から、「商品中分類選択フォーム」のサブフォームの「商品一覧フォーム」の管理番号が存在する商品のボタンを押すと、「商品中分類選択フォーム」が開いたまま、「管理番号フォーム」は開かず、この行が黄色く反転し、F8で進むと、次は、
If rst.RecordCount = 0 Then
の行が黄色く反転し、さらにF8を1回押すと、最終行から2行目の
End If
の行が黄色く反転しました。

そして、続けて2回F8を押すと、最終行の
End Sub
そして、「管理番号がひとつもないない商品」と同様、上記VBAの
End Function
が黄色く反転し、「管理番号フォーム」が開きました。ただ、この時、新しい管理番号は作成されていません。

検証になっておりますでしょうか??
いつも、的外れですみません。。

補足日時:2009/04/04 10:58
    • good
    • 0

>商品ID = Me!商品ID


>顧客ID = Me!顧客ID
>も試しましたが、やはり、同じエラー(実行時エラー 94 Nullの使い方が不正です。

実行時エラーが「管理番号がひとつもない商品」であればコードは正しいです。問題は#26の「4.「管理台帳フォーム」の「開くときイベント」のプロシージャを下記のようにする」が正しく実行されているかです。
ブレークポイントを
Set rst = Me.Recordset
辺りに設定し、
1.ブレークポイントで停止するか
2.停止するならば以後をF8キーで1行ずつ進行
3.「管理番号がひとつもない商品」で「If rst.RecordCount = 0 Then」に続く行が実行されるか
を確認してください。
「Countと受付状態の表示について」の回答画像31

この回答への補足

早速、
Set rst = Me.Recordset
にブレークポイントを設定して動きを確認してみました。

Set rst = Me.Recordset
にて、黄色く反転し、F8で進むと、次は、
If rst.RecordCount = 0 Then
の行が黄色く反転し、さらにF8を押すと、最終行から2行目の
End If
の行が黄色く反転しました。

補足日時:2009/04/04 07:51
    • good
    • 0

>の最後の行が


>PID = Form_管理台帳フォーム.商品ID
>だったということでしょうか?

違います。#27では、「商品一覧フォーム」の「管理台帳一覧へ」ボタンを押したときのエラー対策でした。それが「管理番号フォーム」「管理番号追加ボタン」に替わっていたことを見落としていたため混乱して「#27で、間違ったことを書きました(^^;」と書いてしまった次第です。なので#27はそれなりに正しいです。
「管理番号フォーム」「管理番号追加ボタン」でのエラーには
顧客ID = Form_管理台帳フォーム.顧客ID
ついでにこれも試してください
顧客ID = Me!顧客ID
それから、このままの状態では
************************
実行時エラー 94
Nullの使い方が不正です。
************************
が出るのが正常な反応です。#26の4.以下が修正されて、初めて正常に動くようになります。

この回答への補足

またまた説明不足で混乱させてしまい、申し訳ございませんでした。

早速、「管理番号フォーム」「管理番号追加ボタン」でのエラーに

商品ID = Form_管理番号フォーム.商品ID
顧客ID = Form_管理番号フォーム.顧客ID

ならびに、

商品ID = Me!商品ID
顧客ID = Me!顧客ID

も試しましたが、やはり、同じエラー(実行時エラー 94 Nullの使い方が不正です。)で、

商品ID = Form_管理番号フォーム.商品ID
の部分が黄色く反転しています。
(#26の4.5の修正はできています。)

#27の補足では、
商品ID = Form_管理番号フォーム.商品ID
の部分を
商品ID = Form_商品一覧フォーム.商品ID
にして動かし、次の行の
顧客ID = Form_管理番号フォーム.顧客ID
が黄色く反転していましたが、今回、
商品ID = Form_管理番号フォーム.商品ID
に変更すると、商品IDの行が黄色く反転します。
(商品ID = Me!商品ID
 顧客ID = Me!顧客ID
 で試した場合でも同様です。)

また、ひとつ気になったのですが、管理番号がひとつもない商品について、商品一覧フォームから管理番号フォームへ商品を選択し、移動した際、管理番号フォームにて、商品IDと商品名の欄が空白になっているのは正しいでしょうか。
(商品ID・商品名は空白、管理番号IDは(新規)と記載されており、管理番号と顧客名欄も空白になっております。)

補足日時:2009/04/03 23:21
    • good
    • 0

確認したいのですが、下記は管理番号がない商品に対し、「管理番号追加」ボタンを押した際にでるのでしょうか。

違うのであれば、このエラーが出現するまでの手順を示してください。
************************
実行時エラー 94
Nullの使い方が不正です。
************************

とエラーメッセージが出て、デバックをクリックすると、下記の「管理番号フォーム」「管理番号追加ボタン」「クリック時イベントプロシージャ」の「商品ID = Me.商品ID」が黄色く反転しました。

この回答への補足

>確認したいのですが、下記は管理番号がない商品に対し、「管理番号>追加」ボタンを押した際にでるのでしょうか。違うのであれば、このエ>ラーが出現するまでの手順を示してください。
>************************
>実行時エラー 94
>Nullの使い方が不正です。
>************************

そうです。管理番号がない商品に対し、「管理番号追加」ボタンを押した際に上記のエラーがでます。管理番号がある商品については、正しく管理番号が追加されます。

また、#28で教えていただいた

>#27で、間違ったことを書きました(^^;

>誤)商品ID = Form_商品一覧フォーム.商品ID
>正)商品ID = Form_管理台帳フォーム.商品ID

>なので
>顧客ID = Form_管理台帳フォーム.顧客ID
>ついでにこれも試してください
>顧客ID = Me!顧客ID

についてですが、

#27の

>・いささか闇雲な対策
>問題の行は私の場合だと、以下の三通でどれでも問題なく実行できま>す。そちらでは如何でしょう?
>PID = Me.[商品ID]
>PID = Form_商品一覧フォーム![商品ID]
>PID = Form_商品一覧フォーム.商品ID

の最後の行が
PID = Form_管理台帳フォーム.商品ID
だったということでしょうか?

何度もお手数をお掛けして、申し訳ございませんが、再度教えてくださいませ。

補足日時:2009/04/03 16:36
    • good
    • 0
1  2  3  4 次の回答→

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

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