- ベストアンサー
Access2007での商品修理受付状態管理について
- Access2007を使用して、商品の修理受付状態を管理するデーターベースを作成している初心者です。商品ごとに異なる管理番号を取得し、重複登録のない設定もしたいです。
- 現在、作成したテーブルとフォームは機能していません。修理受付入力と修理受付明細、作業完了入力、作業完了明細のフォームを作成予定です。
- 修理受付明細フォームでの明細行番号の表示方法、現在の状態と修理回数の自動表示方法がわかりません。ご教授いただければ幸いです。
- みんなの回答 (37)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#1~#4です サンプルDBを試作してみましたが、結構面倒で、それ以上に説明は大変そうです。と云うことで取り敢えず簡単なことから。 >1つのフォームに、1つのテーブルが必要と思っておりました。 一般的にはフォームにテーブルをそのまま対応させることはありません。クエリーを介在させます。例えば一覧表示するとき、アイウエオ順や年月日順に表示しようとすればクエリー介在が必要です。またテーブルはレコードの並び順を保証しませんから、いつ利用しにくい並びになるか判らないからです >受付フォームにて、受付をし、作業が完了した際には、再度、受付フォームを開いて、完了日を入力すれば良いのですよね?! これでも良いですが、クエリーを使用すれば、完了日未記入のものだけを一覧表示して処理するようなこともできます。どちらかというとその方が良いでしょう >顧客名さえあれば電話番号や住所等はこのシステムでは必要ないので、顧客ID(オートナンバー)顧客名、ふりがな、備考のみで良いことになります。 他のDBに顧客名関連の情報がある場合は、それとリンクして使用します。ですから当該DBでは顧客参照IDだけで済ませます。リレーショナルDBでは同じデータの複数登録はできる限り避けるべきです。入力手間が増える弊害もさることながら、入力回数が増えれば、誤りの発生もほぼそれに正比例するためです >コンボボックスで選択 コンボボックスの選択も便利ですが、選択対象がせいぜい10くらいまで、無理しても20以下にしたいです。それ以上では選択が大変です。その場合は一覧表示し、そこから選択して処理の流れになります。さらにレコード数が多いときはグループ分け、さらには「大分類」「中分類」「小分類」のような仕掛けも必要になります。 以上もふまえサンプルDBの仕様ですが 1.商品一覧表示フォームから当該商品を選択し、この商品の管理番号一覧フォームを開く 2.管理番号一覧フォームで目的とする管理番号を選択し、修理履歴フォームを開く 3.管理番号一覧フォームは新しい管理番号を追加でき、これはそれまでの最大プラス1になる 4.修理履歴テーブルは管理番号ごとに連番をもつ 5.修理履歴フォームから個々の修理明細フォームを開ける 6.修理明細フォームは上記の流れ以外、現在対象絞り込み(完了日未記入だけを絞り込む)からも開けるようにする ざっとこんな感じでしょうか?よろしいか、あるいは仕様変更を補足してください。
その他の回答 (36)
>コンパイルエラー: こうなるとアクセスのバージョン違いが大きな問題です。困りましたね ・一般的な説明 コンパイルエラーが起きるのは正しい文法に則らないコードが書かれている場合に起きます。このチェックは、実行に先立ち行われるため、ブレークポイントを設定しても、そこまで到達することはありません。逆にVBのメニューバーからデバッグ/xxのコンパイルで、事前にチェック可能です。 ・問題箇所の検討 「Me![商品ID] 」これに問題ありと云われているわけですが、すぐ下の行に stLinkCriteria = "[商品ID]=" & Me![商品ID] これはないでしょうか? ・いささか闇雲な対策 問題の行は私の場合だと、以下の三通でどれでも問題なく実行できます。そちらでは如何でしょう? PID = Me.[商品ID] PID = Form_商品一覧フォーム![商品ID] PID = Form_商品一覧フォーム.商品ID 前記、「xxのコンパイル」を実行してコンパイルエラーになる場合は行頭に「'」を書いてやればコメントアウトされます。色々試し、コンパイルエラーがでなくなれば stLinkCriteria = "[商品ID]=" & Me![商品ID] にブレークポイントを設定し、PIDに正しい値が入っているか、チェックしてください ・ユーザーサポートの使用 有償でしょうがこの手段も検討してみては? >0.の{「管理テーブル」から不正なレコードを削除する} これは「管理番号追加ボタン」を押してできた、「商品ID」「顧客ID」の無いレコードです
補足
いろいろ試しておりますが、まだ悩んでます。。。 >・いささか闇雲な対策 >PID = Form_商品一覧フォーム![商品ID] >PID = Form_商品一覧フォーム.商品ID とりあえず、ご提案いただいた上記を試したところ、この部分についてはスムーズに動き出したのですが、今度は、 ************************ 実行時エラー 94 Nullの使い方が不正です。 ************************ とエラーメッセージが出て、デバックをクリックすると、下記の「管理番号フォーム」「管理番号追加ボタン」「クリック時イベントプロシージャ」の「商品ID = Me.商品ID」が黄色く反転しました。 Private Sub コマンド16_Click() Dim dbs As Database Dim stDocName As String Dim rst As DAO.Recordset Dim 商品ID As Integer Dim 顧客ID As Integer Set rst = Me.Recordset If rst.RecordCount > 0 Then rst.MoveLast End If 商品ID = Me.商品ID 顧客ID = Me.顧客ID If rst.Fields("登録日").Value = Date Then MngNo = rst.Fields("管理番号").Value + 1 MngNo = "0" & MngNo Else MngNo = Format(Date, "yymmdd") & "01" End If Set dbs = CurrentDb Set rst = dbs.OpenRecordset("管理番号テーブル") rst.AddNew rst.Fields("管理番号").Value = MngNo rst.Fields("商品ID").Value = 商品ID rst.Fields("顧客ID").Value = 顧客ID rst.Fields("登録日").Value = Date rst.Update On Error GoTo errorhandler16 ' Set rst = Me.Recordset With rst .Requery .MoveLast .MovePrevious .MovePrevious .MovePrevious .MovePrevious End With errorhandler16: ' End Sub そこで、 商品ID = Me.商品ID を 商品ID = Form_商品一覧フォーム.商品ID に置き換えると、この行は動いたのですが、次はすぐ下の 顧客ID = Me.顧客ID にて、同じエラーメッセージが出ました。 この行をいろいろ変えてみたのですが、どうしてもうまくいかず、つまずいています。 顧客ID = Me.顧客ID について、置き換えるとすると、どのようなVBAになるのかご教授いただけませんでしょうか。 本当にいつもいつも、すみません。。 なお、有償サポートについては、VBAが絡むと、1件33,000円あまりするので、有償での質問に値するのかどうかでも悩み、いまだ質問に至らずにいます。。 また、いろいろと調べていた時に、下記サイトの「Meキーワードの欠点」を拝見し、自分なりに試してみたのですが、どうもうまくいきませんでした。たぶん、どこか、私のやり方が間違っているのだとは思います(@_@;) http://www.accessclub.jp/samplefile/samplefile_88.htm
次のステップは多少面倒です。管理番号が一つもない商品の管理台帳フォームを開いたときの処理です。 0.管理番号が一つもない商品の管理台帳フォームを開き、「管理番号追加ボタン」を押しても、追加されないことを確認、二回ボタンを押すとエラーになることも確認。確認したら、「管理テーブル」から不正なレコードを削除する 1.オブジェクトとして「モジュール」を選び新規作成する 2.以下のようにコードをコピー・ペーストする Option Compare Database Option Explicit Public PID As Integer Public MNO As Integer Public MngNo As String 実際には下三行で良いと思うが、上二行もなければペーストする 3.「商品一覧フォーム」の「管理台帳を開くボタン」の「クリック時イベント」のプロシージャに1行追加し、下記のようにする Private Sub 管理台帳へ_Click() Dim stDocName As String Dim stLinkCriteria As String stDocName = "管理台帳フォーム" PID = Me![商品ID] 'この行を追加 stLinkCriteria = "[商品ID]=" & Me![商品ID] DoCmd.OpenForm stDocName, , , stLinkCriteria End Sub 4.「管理台帳フォーム」の「開くときイベント」のプロシージャを下記のようにする Private Sub Form_Open(Cancel As Integer) 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 MngNo = Format(Date, "yymmdd") & "01" rst.Fields("管理番号").Value = MngNo rst.Fields("商品ID").Value = PID rst.Fields("顧客ID").Value = 0 rst.Fields("登録日").Value = Date rst.Update Me.Requery End If End Sub 5.「管理台帳フォーム」の「管理番号追加ボタン」の「クリック時イベントプロシージャ」を下記のように変更する(実際には二行追加) Private Sub コマンド19_Click() Dim dbs As Database Dim stDocName As String Dim rst As DAO.Recordset Dim 商品ID As Integer Dim xMngNo, 顧客ID As Integer Set rst = Me.Recordset If rst.RecordCount > 0 Then rst.MoveLast End If 商品ID = Me.商品ID 顧客ID = Me.顧客ID If rst.Fields("登録日").Value = Date Then xMngNo = rst.Fields("管理番号").Value + 1 xMngNo = "0" & xMngNo Else xMngNo = Format(Date, "yymmdd") & "01" End If Set dbs = CurrentDb Set rst = dbs.OpenRecordset("管理テーブル") rst.AddNew rst.Fields("管理番号").Value = xMngNo rst.Fields("商品ID").Value = 商品ID rst.Fields("顧客ID").Value = 顧客ID rst.Fields("登録日").Value = Date rst.Update On Error GoTo errorhandler19 'この行を追加 Set rst = Me.Recordset With rst .Requery .MoveLast .MovePrevious .MovePrevious .MovePrevious .MovePrevious End With errorhandler19: 'この行を追加 End Sub 6.最初に0.でやったのと同じ操作をし、正しく管理番号が追加されることを確認
補足
毎度、毎度、つまずく私。。(^_^;) 5までの工程を終了し、いざ、6を実行しようと、商品一覧フォームから管理番号フォームへ移動するボタンをクリックすると、 ************************************** コンパイルエラー: Meキーワードの使用方法が不正です。 ************************************** と表示され、OKをクリックすると、 >3.「商品一覧フォーム」の「管理台帳を開くボタン」の「クリック時イベント」のプロシージャに1行追加し、下記のようにする で追加した「PID = Me![商品ID] '」のMe部分が青く反転し、管理番号フォームを開けない状態となっております。 本当に毎度、毎度、恐れ入りますが、どこが間違っているか検討つきますでしょうか。 なお、その前後の行にて、それぞれブレークポイントを設定しても、どちらの場合も、上記と同じ「Meキーワードの使用方法が不正です。」のエラーメッセージが出ます。 また、0.の{「管理テーブル」から不正なレコードを削除する}についてですが、管理番号がひとつもない商品を作ればいいんですよね?!もしくは、管理番号テーブルのレコードをすべて削除するんでしょうか?(ただ、いずれにしても、同じエラーメッセージが出ます。) 本当にお手数をお掛けしていますが、どうか、ご教授くださいませ。
>顧客名は表示されていません コンボボックスの値集合タイプで「テーブル/クエリ」値集合ソースのSQLは正しいでしょうか?間違っていなければ顧客名が表示されるはずです。値集合ソース右側の「...」ボタンを押し、クエリビルダを起動し、ビューでデータを見たとき、「顧客名」「顧客ID」の順に表示されますか? 「顧客ID」「顧客名」であればこれを逆にするか、あるいはコンボボックスのプロパティを添付画像のようにすれば、上手く表示されるはずです >同じ商品IDに対して、複数の顧客が存在するため、ここで変更ができれば嬉しいのですが、変更することは可能でしょうか 可能です。というかできなければ使い物にならない。こちらでは変更できることを確認しています。 >(コンボボックスでは顧客名の表示がありますが、変更をしようとすると、左下のバーに「このレコードは更新できません この数行前には「顧客名は表示されていません」と書いてあります。そちらでどのような状態になっているか想像できないのですが、ともかく#23のようなフォームを完成させてください。
補足
顧客名についてですが、下記のようにすると、顧客名にて表示されるようになりました!! SELECT 顧客テーブル.顧客ID, 顧客テーブル.顧客名 FROM 顧客テーブル ORDER BY 顧客テーブル.[顧客名]; また、顧客名の変更についてですが、フォームのプロパティのレコードセットをダイナセット(矛盾を許す)にすると、変更することができました!! いつも、ひとつひとつ時間がかかり、申し訳ございません。 なんとか、#23のようなフォームができましたので、続きをご教授くださいませ<m(__)m>
「stLinkCriteria = "[商品ID]=" & Form_商品一覧フォーム![商品ID]」が実行できたか? #22、#12にも書きましたが 「ブレークポイントを設定」 して、この行が黄色くなればこの部分を実行(此処まで来て停まっている)したことになります。ブレークポイントはVBAを使用して何かをやろうとするとき、構想したとおりに物事が進んでいるか、検討するのに便利(必要)な手段です。使いこなせるようにしてください。 >管理番号と商品IDの主キーをはずし これは外さないでください >再度、主キーやインデックスをつけようとしても、「インデックス、主キーまたはリレーションシップで値が重複しているので、テーブルを変更できませんでした。 これはエラーメッセージを冷静に読めば簡単に判ることで、重複しているデータを重複しないようにしてから主キーを着ければよいのです。一番簡単なのは、追加したデータを削除すること。 >同じ商品IDにて、管理番号追加ボタンを3回クリックすると、下記のようにテーブルへ追加されます 管理番号をインクリメントするコードが MngNo = rst.Fields("管理番号").Value + 1 です。ブレークポイントを If rst.Fields("登録日").Value = Date The 辺りに設定し、どのようにプログラムが進行していくか観察検討してください。ブレーク以後はF8で1行実行、F5で全部実行します。またマウスカーソルを変数に合わせると、その値を読み取ることができます。画像を貼り付けるので参考にしてください。また貼り付けた画像にあるように、コードはインデントを着けて書いてください。そのようなサンプルを貼り付けているのですが「教えて!goo」では消えてしまうのです。 >いただいた画像のように帳票形式 フォームのプロパティで、書式/規定のビューを「帳票フォーム」にします
補足
本当に毎回、大変ご丁寧に教えていただき、心より感謝いたしております。<(_ _)><(_ _)> 管理番号の追加ができました!!! いったん管理番号フォームのデータをすべて削除し、主キーをつけなおし、VBAを実行すると、正しくプラス1ずつ、管理番号の追加をすることができました!! ほんとうに何から何までありがとうございます!! なお、管理番号フォームにて、ナンバー17での下記の工程ですが、 ****************************************************************** 5.詳細にツールボタンからコンボボックスを貼り付け、コントロールソースを「顧客ID」、値集合タイプを「テーブル/クエリ」値集合ソースのSQL文を SELECT 顧客テーブル.顧客名, 顧客テーブル.顧客ID FROM 顧客テーブル; ****************************************************************** この通りにすると、フォームには顧客IDが表示され、#23の画像のように、顧客名は表示されていません。 これは、顧客名に変更したほうが使いやすいですよね?! また、コンボボックスにしていますが、「管理番号追加」のボタンをクリックして追加された新しい管理番号について、その直前の管理番号と同じ顧客IDにて追加され、顧客名を変更することができません。 (コンボボックスでは顧客名の表示がありますが、変更をしようとすると、左下のバーに「このレコードは更新できません」と表示されます。) 同じ商品IDに対して、複数の顧客が存在するため、ここで変更ができれば嬉しいのですが、変更することは可能でしょうか。
#21の補足要求では「stLinkCriteria = "[商品ID]=" & Form_商品一覧フォーム![商品ID]」が実行できたか知りたかったのですが、補足では良く判りません。しかし先へ進めましょう。 1.「管理台帳フォーム」のフォームフッターにボタンを追加し「管理番号追加」とします 2.「管理番号追加」ボタンを押したとき、以下のコードを実行します Private Sub コマンド19_Click()'この数字は19とは限らない Dim dbs As Database Dim stDocName As String Dim rst As DAO.Recordset Dim 商品ID As Integer Dim 顧客ID As Integer Set rst = Me.Recordset If rst.RecordCount > 0 Then rst.MoveLast End If 商品ID = Me.商品ID 顧客ID = Me.顧客ID If rst.Fields("登録日").Value = Date Then MngNo = rst.Fields("管理番号").Value + 1 MngNo = "0" & MngNo Else MngNo = Format(Date, "yymmdd") & "01" End If Set dbs = CurrentDb Set rst = dbs.OpenRecordset("管理テーブル") rst.AddNew rst.Fields("管理番号").Value = MngNo rst.Fields("商品ID").Value = 商品ID rst.Fields("顧客ID").Value = 顧客ID rst.Fields("登録日").Value = Date rst.Update Set rst = Me.Recordset With rst .Requery .MoveLast .MovePrevious .MovePrevious .MovePrevious .MovePrevious End With End Sub 実行して管理番号が適切に増えるか、確認してください。 最後の方でWithを使ってみましたが、これに関してはhelpを参照してください。VBAはあまり使ったことがないので、私も勉強中です(^^;
補足
>#21の補足要求では「stLinkCriteria = "[商品ID]=" & Form_商品一覧フォーム![商品ID]」が実行できたか知りたかったのですが、補足では良く判りません。 についてですが、ほんとうにAccess初心者で的を得ることができず、すみません。 上記、実行できているかどうかについてですが、商品一覧フォームのボタンをクリックすると、商品一覧フォームでクリックした商品と同じ商品IDの管理番号フォームを開くことができています。 (商品ID AAAについて、管理番号を4つ登録している場合は、その4つが絞り込まれて出てきます。) これで、お答えになっていますでしょうか。また的外れな回答でしたら、ほんとうにすみません。。 そして、次の段階に進んでみました。 フッターにボタンを追加し、プロパティのイベントのクリック時にて、コードビルダを選択、いただいたVBAを入力してみました。 (「イベント プロシージャ」と表示されています。) そして、ボタンをクリックすると、はっきりとした文章は覚えていないのですが、主キー、インデックスなどが邪魔している的なエラーメッセージが出たので、管理番号テーブルにて、主キーに設定していた管理番号と商品IDの主キーをはずし、インデックスも「いいえ」にしてみました。すると、ボタンをクリックすることができ、新たな管理番号が増えましたが、数回クリックすると、同じ管理番号(09032601)が毎回、追加されます。 再度、主キーやインデックスをつけようとしても、「インデックス、主キーまたはリレーションシップで値が重複しているので、テーブルを変更できませんでした。重複する値のあるフィールドの値を変更するか、インデックスを削除してください。または重複する値を使用できるように再定義してください。」とエラーになり、変更ができません。 なお、現在の管理番号テーブルについては、以下の内容になっております。 *********************************************** 主キーなし。 管理番号ID オートナンバー 管理番号 インデックス「いいえ」 商品ID インデックス「いいえ」 顧客ID インデックス「はい(重複あり)」 登録日 インデックス「いいえ」 備考 インデックス「いいえ」 *********************************************** 同じ商品IDにて、管理番号追加ボタンを3回クリックすると、下記のようにテーブルへ追加されます。 **************************************************************** 管理番号ID 管理番号 商品ID 顧客ID 登録日 備考 92 09032601 3 0001 2009/03/26 93 09032601 3 0001 2009/03/26 94 09032601 3 0001 2009/03/26 **************************************************************** どこを直せば、うまく動きますでしょうか。 また、管理番号フォームについてですが、詳細の中には、1つの管理番号しか表示されず、レコードの移動にて、次の管理番号を表示するようになっています。いただいた画像のように帳票形式?!にするにはどうすればよいのでしょうか。併せて教えていただけますようお願い申し上げます。
#21で重要なことを書き落としていました「同種のものはバージョンの新しい方」です。直前まで書くつもりでいたのですが。従って Microsoft Access 9.0 Object Library→Microsoft Access 12.0 Object Library また Microsoft Calendar Control 9.0とctv OLE Control module 今回は使わずに済みそうです。 Microsoft Office 12.0 Access database engine Object Library に関しては、悩むところです。がチェックを加減しながら状況を見たいです。ところで先へ進む前に確認したいのは 1.「#15の方法で#17ができました!」とはマクロ迂回方式でできたと云うことでしょうか? 2.「実行時エラー424オブジェクトが必要です。」このエラーはでなくなったのでしょうか?「stLinkCriteria = "[商品ID]=" & Form_商品一覧フォーム![商品ID]」の行にブレークポイントを設定し、そこで停止(行が黄色になる)し、さらにその先を完了できるのでしょうか?
補足
「参照設定」のバーションについては、了解しました!! また、下記の件についてですが、説明不足で申し訳ありませんでした。 >1.「#15の方法で#17ができました!」とはマクロ迂回方式でできたと云うことでしょうか? >2.「実行時エラー424オブジェクトが必要です。」このエラーはでなくなったのでしょうか?「stLinkCriteria = "[商品ID]=" & Form_商品一覧フォーム![商品ID]」の行にブレークポイントを設定し、そこで停止(行が黄色になる)し、さらにその先を完了できるのでしょうか? 1につきましては、マクロ迂回方式でできました! 2についてですが、No.19の補足で書いた、「実行時エラー424オブジェクトが必要です。」のエラーはでなくなり、「stLinkCriteria = "[商品ID]=" & Form_商品一覧フォーム![商品ID]」の行が黄色く反転することもなく、なぜか、とてもスムーズに管理番号フォームへ移動、絞込みができています。 また、本日、マイクロソフトの方から連絡があり、#13の補足で書いたマクロでの方法でも、正常に管理番号フォームへ移動、絞込みができました。 なお、今は、マクロ迂回方式にて、動かしております。
「参照設定」を私と同様にしてください。これは今回のトラブルと直接関係ないかもしれませんが、次の段階でVBAコードを実行するのに必要になります。 ・警告 1.どのような副作用が起きるか判りません。保証できるのは「現状私の方は障害が発生していない」だけです。自己責任で実行してください 2.現在の環境は正確に記録し(#20の補足でよいか)、戻れるようにしてください ・アドバイス 1.有償サポートの使用 サポートは「フォームをどのように設計したらよいか」みたいな質問には答えない(答えられない)ですが、はっきりエラーがでているのを回避する方法は教えてくれます。今回のケースでは事例も多そうですから、迅速に判るでしょう。業務上での案件と思うのでコストパフォーマンスから有償利用もありでは? 2.教えて!gooに質問する 現在このスレッドを見ている人はほとんどいないと思われますが、新規にかつ具体的に質問すれば、多くの人が解決策を提示してくれるかもしれません。下記URLなどもご参考に http://oshiete1.goo.ne.jp/qa3566362.html
補足
なんだかよくわかりませんが、#15の方法で#17ができました!! 結局、ご連絡をいただいてから、「参照設定」を変更しようとしたのですが、Microsoft DAO 3.6 Object Libraryだけにチェックを入れて、OKを押すと、「この名前は既にあるモジュール、プロジェクト、オブジェクトライブラリで使われています。」とエラーメッセージが出て、変更できませんでした。 その後、再度、マイクロソフトへ、先日お伺いしたマクロでの方法を確認したのですが、担当者が違い、なんだかうまくいかず、明日のお返事になるというところで終っていました。 そして、帰宅後、再度、#15、#17を追っていくと、どこが違っていたのかは不明ですが、うまく管理番号フォームまで絞り込んでたどり着くことができました!! なお、うまく動くようになってから、#21にて、 >「参照設定」を私と同様にしてください。これは今回のトラブルと直接関係ないかもしれませんが、次の段階でVBAコードを実行するのに必要になります。 とご連絡をいただいたので、「参照設定」の変更をしてみました。 まず、 Microsoft Access 12.0 Object Library のチェックを外そうとすると、「使用中のコントロールまたは参照を削除することはできません。」となり、 Microsoft Access 9.0 Object Libraryが一覧の中にありませんでしたので、これについては、Microsoft Access 12.0 Object Libraryにチェックを入れたままにしています。 また、 ctv OLE Control module Microsoft Calendar Control 9.0の2つにつきましても一覧にないため、チェックができません。 なお、始めに、Microsoft DAO 3.6 Object Libraryだけにチェックを入れて、OKを押すと、「この名前は既にあるモジュール、プロジェクト、オブジェクトライブラリで使われています。」とエラーメッセージが出て、変更できませんでしたが、 その後、Microsoft Office 12.0 Access database engine Object Libraryのチェックを外して、Microsoft DAO 3.6 Object Libraryにチェックを入れると変更ができました。 最終的に、現在、以下の6つにチェックが入っています。 Visual Basic For Applications Microsoft Access 12.0 Object Library OLE Automation Microsoft Visual Basic for Applications Extensibility 5.3 Microsoft DAO 3.6 Object Library Microsoft ActiveX Data Object 2.1 Library また、DAOについては、どうも、今回チェックを外したMicrosoft Office 12.0 Access database engine Object Libraryが新バージョンのようです。 下記URLを参照くださいませ。 http://isawseashell.blogspot.com/2007/02/attachment-dao-access2007-dao-dao-3.html 何はともあれ、なんとか、#17まで完了いたしました!!本当に本当にお手数をお掛けして申し訳ないのですが、次の段階をご教授くださいませ。
中々苦戦しますね(^^; こちらで stLinkCriteria = "[商品ID]=" & Form_商品一覧フォーム![商品ID] をコピーペースとしても、何ら問題なく動きます。 Googleを「オブジェクトが必要です 424 アクセス」で検索すると、一杯ヒットするから、皆さんも悩まされているようです。ただ回答が色々ありすぎて、どれが該当するか中々判りません。一つ気になったのが「参照設定」です。VBのメニューバーからツール/参照設定と選び、「参照設定ウィンドウ」を開くと、どのようになっているでしょうか?私の設定状況を画像で貼り付けます。
補足
ほんと、ひとつひとつ、苦戦しています(^_^;) それはいいのですが、本当に、ひとつひとつ、とても丁寧に教えていただき、本当に本当に、心から心から感謝いたしております。<(_ _)><(_ _)> 早速ですが、私の参照設定は、4つにチェックが入っており、チェックの入っているものは、 Visual Basic For Applications Microsoft Access 12.0 Object Library OLE Automation Microsoft Office 12.0 Access database engine Object Library です。
>VBAですると、入力内容が間違っているようで、うまくいかず コード自体に誤りはありません。#12、#13で、ボタンを押しても反応がなかったのと同じ現象のようです。#15のような方法で迂回を試してみてはどうでしょうか?
補足
またまた、ご連絡遅くなりました!! Acceccを立ち上げる際、毎回なのですが、microsoft office セキュリティオプションで、 VBAマクロが無効にされました。 と表示されるので、毎回、ここで「有効にする」にしています。 有効にしたあと、今回作成した、商品一覧フォームのボタンを押すと、 実行時エラー424 オブジェクトが必要です。 と、表示され、デバックをクリックすると、VBAの stLinkCriteria = "[商品ID]=" & Form_商品一覧フォーム![商品ID] の列が黄色く反転しています。 どこを直せば、うまく動きますでしょうか。
#17の「9.このボタンを押したとき、以下のコードが実行されるようにする」は消し忘れです。
補足
貴重なお時間をたくさん、たくさんさいていただき、また、いろいろとお考えいただき、ほんとうにほんとうに心より感謝申し上げます。 早速ですが、 >>受付フォームにて、受付をし、作業が完了した際には、再度、受付フォームを開いて、完了日を入力すれば良いのですよね?! >これでも良いですが、クエリーを使用すれば、完了日未記入のものだけを一覧表示して処理するようなこともできます。どちらかというとその方が良いでしょう につきましては、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 となっております。また、現場の人間に確認をしたところ、管理番号の取得形式は上記のとおりしたいとのことですので、なんとか、このような取得方法はできますでしょうか。 ほんとうに厚かましく申し訳ないのですが、どうかよろしくお願い申し上げます。