ここから本文です

Dim DB As Database 'のコードをDim DB As DAO.Database 'に変更してもエラーが出...

mel********さん

2010/10/2622:24:55

Dim DB As Database 'のコードをDim DB As DAO.Database 'に変更してもエラーが出てしまいます。。。

早速、お返事いただきました内容でコードを更新したところ、
Dim DB As Database 'の部分が黄色になり

コンパイルエラー:
ユーザ定義型は定義されていません。

というエラーが表示されたので
Dim DB As DAO.Database '
に書き直しましたが、また同じエラーが表示されました・・・どうしてでしょうか?

また、
分類テーブル2のレコードはある一定の期間溜めておくこともあり、
分類ごとに分類テーブル2にあるレコードを削除せず、精査が終了した段階で
分類テーブルに追加する方法をとる場合、

Private Sub コマンド0_Click()

Dim DB As DAO.Database
Dim SQL_Txt As String
Set DB = CurrentDb()

'分類テーブル2のレコードを削除する。
SQL_Txt = "DELETE * FROM 分類テーブル2;"
DB.Execute SQL_Txt

コマンドボタンのイベントプロシージャには上記部分を除いた残りのコードを記述すればよいでしょうか?


ユニオンクエリを作成すれば、分類テーブルと分類テーブル2を同一のテーブルとして扱えるとういうことは、
Q1を取込テーブルとユニオンクエリ(分類テーブルクエリ)から作成し、
そのQ1を基にレポート1を作成すれば、分類テーブルと分類テーブル2の総レコードを使用した結果が
表示されるレポートが表示されるということでしょうか?

閲覧数:
3,547
回答数:
1

違反報告

ベストアンサーに選ばれた回答

mi_********さん

2010/10/2623:15:28

> コンパイルエラー:
> ユーザ定義型は定義されていません。

このエラーは、想定していたのとは別のものです(エラーメッセージも異なります)。
これが出る場合は、DAOのライブラリに対して参照設定が行われていないと思います。

これまで、質問に Access のバージョンが書かれていなかったので、特に意識していませんでしたが、このエラーが出たということは、Access 2000 または Access 2002 ではないでしょうか。
(初期状態でDAOライブラリが参照されていないのは、この2バージョンだけだからです。)



以下のように設定をしてみてください。


VBエディタを起動させます。
メニューバーの[ツール]→[参照設定]を選びます。

[参照設定]ダイアログが表示されたら、[参照可能なライブラリファイル]に表示されているライブラリファイルの一覧(ライブラリファイルはアルファベット順に表示されています)から

Microsoft DAO 3.6 Object Library

を探して、左側の□をクリックします(□にチェックが入ります)。
Access 2000 の場合には、他に

Microsoft DAO 2.5/3.51 Object Library
Microsoft DAO 3.51 Object Library

というのがありますので、間違わないようにしてください。
[OK]をクリックして、ダイアログを閉じます。


再度、メニューバーの[ツール]→[参照設定]を選び、ダイアログを表示させます。

Microsoft DAO 3.6 Object Library

にチェックが入り、表示されているのを確認します。





> 分類テーブル2のレコードはある一定の期間溜めておくこともあり、
> 分類ごとに分類テーブル2にあるレコードを削除せず、精査が終了した段階で
> 分類テーブルに追加する方法をとる場合、


削除クエリの実行部分を除いた下記のコードになります。


Private Sub コマンド0__Click()
Dim DB As Database
Dim SQL_Txt As String
Set DB = CurrentDb()
'作業用テーブルのデータを分類テーブル2に追加する。
SQL_Txt = "INSERT INTO 分類テーブル2 ( 品名, 分類記号, 備考 ) "
SQL_Txt = SQL_Txt & "SELECT 作業用テーブル.品名, 作業用テーブル.分類記号, 作業用テーブル.備考 "
SQL_Txt = SQL_Txt & "FROM 作業用テーブル "
SQL_Txt = SQL_Txt & "WHERE (((作業用テーブル.分類記号) Is Not Null));"
DB.Execute SQL_Txt
End Sub





> ユニオンクエリを作成すれば、分類テーブルと分類テーブル2を同一のテーブルとして扱えるとういうことは、
> Q1を取込テーブルとユニオンクエリ(分類テーブルクエリ)から作成し、
> そのQ1を基にレポート1を作成すれば、分類テーブルと分類テーブル2の総レコードを使用した結果が
> 表示されるレポートが表示されるということでしょうか?

はい。その通りです。
また、テーブル作成クエリも、取込テーブルとユニオンクエリを元に作成することができます。

先回の回答で、分類テーブル2は、テーブル作成クエリで作るのではなく、分類テーブル2の内容を削除してから追加クエリでデータを取り込むようにしましたが、それは、何らかの理由で分類テーブル2が存在しない状態が生じるのを防ぐためです。
分類テーブル2が存在しないと、ユニオンクエリが(使用するテーブルが見つからず)エラーになるからです。

質問した人からのコメント

2010/10/26 23:29:09

抱きしめる minohodosirazuさん1日に何度もすみません。ありがとうございます。
会社のAccessは2000で、自宅のAccessは2003です。このようなバージョン違いでひとつのシステムを作成するとよくないでしょうか・・・早速、教えていただいた内容を反映されたいと思います。また明日、続いてご質問させていただくと思います。宜しくお願いします。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる