秘密基地、どこに作った?

現在、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件中11~20件)

>商品ID = Form_商品一覧フォーム.商品ID


>に置き換えると、この行は動いたのですが、次はすぐ下の
>顧客ID = Me.顧客ID
>にて、同じエラーメッセージが出ました。
>この行をいろいろ変えてみたのですが、どうしてもうまくいか>ず、つまずいています。

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

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

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

>コンパイルエラー:


こうなるとアクセスのバージョン違いが大きな問題です。困りましたね

・一般的な説明
コンパイルエラーが起きるのは正しい文法に則らないコードが書かれている場合に起きます。このチェックは、実行に先立ち行われるため、ブレークポイントを設定しても、そこまで到達することはありません。逆に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」の無いレコードです
「Countと受付状態の表示について」の回答画像27

この回答への補足

いろいろ試しておりますが、まだ悩んでます。。。

>・いささか闇雲な対策
>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_8 …

補足日時:2009/04/03 00:25
    • good
    • 0

次のステップは多少面倒です。

管理番号が一つもない商品の管理台帳フォームを開いたときの処理です。

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.でやったのと同じ操作をし、正しく管理番号が追加されることを確認
「Countと受付状態の表示について」の回答画像26

この回答への補足

毎度、毎度、つまずく私。。(^_^;)

5までの工程を終了し、いざ、6を実行しようと、商品一覧フォームから管理番号フォームへ移動するボタンをクリックすると、

**************************************
コンパイルエラー:

Meキーワードの使用方法が不正です。
**************************************

と表示され、OKをクリックすると、

>3.「商品一覧フォーム」の「管理台帳を開くボタン」の「クリック時イベント」のプロシージャに1行追加し、下記のようにする

で追加した「PID = Me![商品ID] '」のMe部分が青く反転し、管理番号フォームを開けない状態となっております。


本当に毎度、毎度、恐れ入りますが、どこが間違っているか検討つきますでしょうか。


なお、その前後の行にて、それぞれブレークポイントを設定しても、どちらの場合も、上記と同じ「Meキーワードの使用方法が不正です。」のエラーメッセージが出ます。

また、0.の{「管理テーブル」から不正なレコードを削除する}についてですが、管理番号がひとつもない商品を作ればいいんですよね?!もしくは、管理番号テーブルのレコードをすべて削除するんでしょうか?(ただ、いずれにしても、同じエラーメッセージが出ます。)


本当にお手数をお掛けしていますが、どうか、ご教授くださいませ。

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

>顧客名は表示されていません


コンボボックスの値集合タイプで「テーブル/クエリ」値集合ソースのSQLは正しいでしょうか?間違っていなければ顧客名が表示されるはずです。値集合ソース右側の「...」ボタンを押し、クエリビルダを起動し、ビューでデータを見たとき、「顧客名」「顧客ID」の順に表示されますか?
「顧客ID」「顧客名」であればこれを逆にするか、あるいはコンボボックスのプロパティを添付画像のようにすれば、上手く表示されるはずです

>同じ商品IDに対して、複数の顧客が存在するため、ここで変更ができれば嬉しいのですが、変更することは可能でしょうか
可能です。というかできなければ使い物にならない。こちらでは変更できることを確認しています。

>(コンボボックスでは顧客名の表示がありますが、変更をしようとすると、左下のバーに「このレコードは更新できません
この数行前には「顧客名は表示されていません」と書いてあります。そちらでどのような状態になっているか想像できないのですが、ともかく#23のようなフォームを完成させてください。
「Countと受付状態の表示について」の回答画像25

この回答への補足

顧客名についてですが、下記のようにすると、顧客名にて表示されるようになりました!!

SELECT 顧客テーブル.顧客ID, 顧客テーブル.顧客名
FROM 顧客テーブル
ORDER BY 顧客テーブル.[顧客名];

また、顧客名の変更についてですが、フォームのプロパティのレコードセットをダイナセット(矛盾を許す)にすると、変更することができました!!

いつも、ひとつひとつ時間がかかり、申し訳ございません。

なんとか、#23のようなフォームができましたので、続きをご教授くださいませ<m(__)m>

補足日時:2009/03/31 15:07
    • good
    • 0

「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」では消えてしまうのです。

>いただいた画像のように帳票形式
フォームのプロパティで、書式/規定のビューを「帳票フォーム」にします
「Countと受付状態の表示について」の回答画像24

この回答への補足

本当に毎回、大変ご丁寧に教えていただき、心より感謝いたしております。<(_ _)><(_ _)>

管理番号の追加ができました!!!
いったん管理番号フォームのデータをすべて削除し、主キーをつけなおし、VBAを実行すると、正しくプラス1ずつ、管理番号の追加をすることができました!!
ほんとうに何から何までありがとうございます!!

なお、管理番号フォームにて、ナンバー17での下記の工程ですが、
******************************************************************
5.詳細にツールボタンからコンボボックスを貼り付け、コントロールソースを「顧客ID」、値集合タイプを「テーブル/クエリ」値集合ソースのSQL文を
SELECT 顧客テーブル.顧客名, 顧客テーブル.顧客ID
FROM 顧客テーブル;

******************************************************************

この通りにすると、フォームには顧客IDが表示され、#23の画像のように、顧客名は表示されていません。
これは、顧客名に変更したほうが使いやすいですよね?!

また、コンボボックスにしていますが、「管理番号追加」のボタンをクリックして追加された新しい管理番号について、その直前の管理番号と同じ顧客IDにて追加され、顧客名を変更することができません。
(コンボボックスでは顧客名の表示がありますが、変更をしようとすると、左下のバーに「このレコードは更新できません」と表示されます。)

同じ商品IDに対して、複数の顧客が存在するため、ここで変更ができれば嬉しいのですが、変更することは可能でしょうか。

補足日時:2009/03/28 00:25
    • good
    • 0

#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はあまり使ったことがないので、私も勉強中です(^^;
「Countと受付状態の表示について」の回答画像23

この回答への補足

>#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つの管理番号しか表示されず、レコードの移動にて、次の管理番号を表示するようになっています。いただいた画像のように帳票形式?!にするにはどうすればよいのでしょうか。併せて教えていただけますようお願い申し上げます。

補足日時:2009/03/26 13:21
    • good
    • 0

#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の補足で書いたマクロでの方法でも、正常に管理番号フォームへ移動、絞込みができました。

なお、今は、マクロ迂回方式にて、動かしております。

補足日時:2009/03/25 18:44
    • good
    • 0

「参照設定」を私と同様にしてください。

これは今回のトラブルと直接関係ないかもしれませんが、次の段階で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/attachm …

何はともあれ、なんとか、#17まで完了いたしました!!本当に本当にお手数をお掛けして申し訳ないのですが、次の段階をご教授くださいませ。

補足日時:2009/03/25 00:36
    • good
    • 0

中々苦戦しますね(^^;


こちらで
stLinkCriteria = "[商品ID]=" & Form_商品一覧フォーム![商品ID]
をコピーペースとしても、何ら問題なく動きます。
Googleを「オブジェクトが必要です 424 アクセス」で検索すると、一杯ヒットするから、皆さんも悩まされているようです。ただ回答が色々ありすぎて、どれが該当するか中々判りません。一つ気になったのが「参照設定」です。VBのメニューバーからツール/参照設定と選び、「参照設定ウィンドウ」を開くと、どのようになっているでしょうか?私の設定状況を画像で貼り付けます。
「Countと受付状態の表示について」の回答画像20

この回答への補足

ほんと、ひとつひとつ、苦戦しています(^_^;)

それはいいのですが、本当に、ひとつひとつ、とても丁寧に教えていただき、本当に本当に、心から心から感謝いたしております。<(_ _)><(_ _)>

早速ですが、私の参照設定は、4つにチェックが入っており、チェックの入っているものは、

Visual Basic For Applications
Microsoft Access 12.0 Object Library
OLE Automation
Microsoft Office 12.0 Access database engine Object Library

です。

補足日時:2009/03/24 04:27
    • good
    • 0

>VBAですると、入力内容が間違っているようで、うまくいかず



コード自体に誤りはありません。#12、#13で、ボタンを押しても反応がなかったのと同じ現象のようです。#15のような方法で迂回を試してみてはどうでしょうか?

この回答への補足

またまた、ご連絡遅くなりました!!

Acceccを立ち上げる際、毎回なのですが、microsoft office セキュリティオプションで、
VBAマクロが無効にされました。

と表示されるので、毎回、ここで「有効にする」にしています。

有効にしたあと、今回作成した、商品一覧フォームのボタンを押すと、
実行時エラー424
オブジェクトが必要です。

と、表示され、デバックをクリックすると、VBAの

stLinkCriteria = "[商品ID]=" & Form_商品一覧フォーム![商品ID]

の列が黄色く反転しています。

どこを直せば、うまく動きますでしょうか。

補足日時:2009/03/23 11:06
    • good
    • 0

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

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

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


おすすめ情報