現在、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つしか存在しません。管理番号テーブルにて、重複登録をしない設定をしたい。
・明細行番号の表示の仕方
・修理受付明細フォームでの、現在の状態、修理回数の自動表示の方法。(クエリの作り方から、フォームへの反映の仕方が全くわかりません。)
どなたか、ご教授くださいませ。どうぞよろしくお願いいたします。
No.28
- 回答日時:
>商品ID = Form_商品一覧フォーム.商品ID
>に置き換えると、この行は動いたのですが、次はすぐ下の
>顧客ID = Me.顧客ID
>にて、同じエラーメッセージが出ました。
>この行をいろいろ変えてみたのですが、どうしてもうまくいか>ず、つまずいています。
#27で、間違ったことを書きました(^^;
誤)商品ID = Form_商品一覧フォーム.商品ID
正)商品ID = Form_管理台帳フォーム.商品ID
なので
顧客ID = Form_管理台帳フォーム.顧客ID
ついでにこれも試してください
顧客ID = Me!顧客ID
No.27
- 回答日時:
>コンパイルエラー:
こうなるとアクセスのバージョン違いが大きな問題です。困りましたね
・一般的な説明
コンパイルエラーが起きるのは正しい文法に則らないコードが書かれている場合に起きます。このチェックは、実行に先立ち行われるため、ブレークポイントを設定しても、そこまで到達することはありません。逆に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_8 …
No.26
- 回答日時:
次のステップは多少面倒です。
管理番号が一つもない商品の管理台帳フォームを開いたときの処理です。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.の{「管理テーブル」から不正なレコードを削除する}についてですが、管理番号がひとつもない商品を作ればいいんですよね?!もしくは、管理番号テーブルのレコードをすべて削除するんでしょうか?(ただ、いずれにしても、同じエラーメッセージが出ます。)
本当にお手数をお掛けしていますが、どうか、ご教授くださいませ。
No.25
- 回答日時:
>顧客名は表示されていません
コンボボックスの値集合タイプで「テーブル/クエリ」値集合ソースのSQLは正しいでしょうか?間違っていなければ顧客名が表示されるはずです。値集合ソース右側の「...」ボタンを押し、クエリビルダを起動し、ビューでデータを見たとき、「顧客名」「顧客ID」の順に表示されますか?
「顧客ID」「顧客名」であればこれを逆にするか、あるいはコンボボックスのプロパティを添付画像のようにすれば、上手く表示されるはずです
>同じ商品IDに対して、複数の顧客が存在するため、ここで変更ができれば嬉しいのですが、変更することは可能でしょうか
可能です。というかできなければ使い物にならない。こちらでは変更できることを確認しています。
>(コンボボックスでは顧客名の表示がありますが、変更をしようとすると、左下のバーに「このレコードは更新できません
この数行前には「顧客名は表示されていません」と書いてあります。そちらでどのような状態になっているか想像できないのですが、ともかく#23のようなフォームを完成させてください。
この回答への補足
顧客名についてですが、下記のようにすると、顧客名にて表示されるようになりました!!
SELECT 顧客テーブル.顧客ID, 顧客テーブル.顧客名
FROM 顧客テーブル
ORDER BY 顧客テーブル.[顧客名];
また、顧客名の変更についてですが、フォームのプロパティのレコードセットをダイナセット(矛盾を許す)にすると、変更することができました!!
いつも、ひとつひとつ時間がかかり、申し訳ございません。
なんとか、#23のようなフォームができましたので、続きをご教授くださいませ<m(__)m>
No.24
- 回答日時:
「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に対して、複数の顧客が存在するため、ここで変更ができれば嬉しいのですが、変更することは可能でしょうか。
No.23
- 回答日時:
#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つの管理番号しか表示されず、レコードの移動にて、次の管理番号を表示するようになっています。いただいた画像のように帳票形式?!にするにはどうすればよいのでしょうか。併せて教えていただけますようお願い申し上げます。
No.22
- 回答日時:
#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の補足で書いたマクロでの方法でも、正常に管理番号フォームへ移動、絞込みができました。
なお、今は、マクロ迂回方式にて、動かしております。
No.21
- 回答日時:
「参照設定」を私と同様にしてください。
これは今回のトラブルと直接関係ないかもしれませんが、次の段階で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まで完了いたしました!!本当に本当にお手数をお掛けして申し訳ないのですが、次の段階をご教授くださいませ。
No.20
- 回答日時:
中々苦戦しますね(^^;
こちらで
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
です。
No.19
- 回答日時:
>VBAですると、入力内容が間違っているようで、うまくいかず
コード自体に誤りはありません。#12、#13で、ボタンを押しても反応がなかったのと同じ現象のようです。#15のような方法で迂回を試してみてはどうでしょうか?
この回答への補足
またまた、ご連絡遅くなりました!!
Acceccを立ち上げる際、毎回なのですが、microsoft office セキュリティオプションで、
VBAマクロが無効にされました。
と表示されるので、毎回、ここで「有効にする」にしています。
有効にしたあと、今回作成した、商品一覧フォームのボタンを押すと、
実行時エラー424
オブジェクトが必要です。
と、表示され、デバックをクリックすると、VBAの
stLinkCriteria = "[商品ID]=" & Form_商品一覧フォーム![商品ID]
の列が黄色く反転しています。
どこを直せば、うまく動きますでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) accessについて 2 2022/05/31 16:58
- その他(データベース) accessでのフォームの連携について 2 2022/06/14 00:45
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- その他(データベース) accessでの請求管理について 2 2022/06/13 21:51
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】NEW演歌
【大喜利】 若い人に向けたことは分かるけど、それはちょっと寄せ過ぎて変になってないか?と思った演歌の歌詞
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。 「そうなんだね」と「確かに披露する場所ないね」で評価します。
-
ホテルを選ぶとき、これだけは譲れない条件TOP3は?
ホテルを探す時、予約サイトで希望条件の絞り込みができる便利な世の中。 あなたは宿泊先を決めるとき「これだけは譲れない」と思う条件TOP3を教えてください。
-
おすすめのモーニング・朝食メニューを教えて!
コメダ珈琲店のモーニング ロイヤルホストのモーニング 牛丼チェーン店の朝食などなど、おいしいモーニング・朝食メニューがたくさんありますよね。
-
ハマっている「お菓子」を教えて!
この世には、おいしいお菓子がありすぎて……。 次何を食べたらいいか迷っています。 みなさんが今、ハマっている「お菓子」を教えてください!
-
初めて自分の家と他人の家が違う、と意識した時
みんな教えて!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2つのテーブルを比較して一致し...
-
Accessでテーブル名やクエリ名...
-
accessのマクロでODBC接続で外...
-
Accessの追加クエリで既存のテ...
-
access テーブル内のレコード...
-
ACCESSに同時アクセス(編集)を...
-
2つのテーブルAとBをマージ...
-
Accessのフォームの並び替えを...
-
MS-ACCESSで、レコードセットを...
-
Accessでもっと早く探したい
-
Excel 2019 のピボットテーブル...
-
BIOSでAHCIに設定したいが、項...
-
項目名の制限について
-
アクセス メモ型 255文字...
-
ACCESSで和暦を西暦に・・・
-
access2000:フォームで入力し...
-
「直需」の意味を教えてください
-
【至急】Accessのフィールドの...
-
変数が選択リストにありません
-
sqlplusで日本語入力
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでテーブル名やクエリ名...
-
Accessレコードの追加や変更が...
-
Accessクエリでの、LIKE条件
-
3つの表を1つに縦に連結する
-
Accessでvlookupみたいなことは...
-
ACCESSに同時アクセス(編集)を...
-
Accessの追加クエリで既存のテ...
-
SQLで条件指定結合をしたいがNU...
-
2つのテーブルを比較して一致し...
-
デザインビューで、連結式 を...
-
Accessでテーブルからテーブル...
-
ツリー構造をRDBで表現するには?
-
ACCESSで指定されたテーブルか...
-
テーブル作成クエリで主キーを設定
-
リンクテーブルを CopyObject ...
-
access テーブル内のレコード...
-
Accessでテーブルにパスワード...
-
SQLで日付を条件に削除したい
-
ACCESS クエリ(カウント0の...
-
時間の足し算
おすすめ情報