Accessでレコードのデータを読もうと標準モジュールに次のプログラムを作りました
Option Compare Database
Public longTATENO As Long
Public longYOKINO As Long
Public Sub no_gen()
Dim dbs As database
Dim RS As Recordset
Set dbs = CurrentDb
Set RS = dbs.Openrecordset("M_基本情報")
longTATENO = RS![立替処理No]
longYOKINO = RS![預金処理No]
End Sub
別のフォームを開くときに no_gen と書きそのフォームを開くと
dbs As database の所が反転表示になり
コンパイルエラー
ユーザ定義型は定義されていませんと出ます。
何が悪いのでしょう?
Access初心者ですよろしくお願いします
No.2ベストアンサー
- 回答日時:
ACCESSのバージョンは何でしょうか?
2000以降はADOが標準のデータベースになっています。ご質問者の書かれている文法はDAO用のものですので、NO.1の方が言われるようにVBAの参照設定で、DAO(たぶん3.6以降になると思います)の利用ができるようになっている(チェックがついている)か確認してください。
利用できるようになっていたら、明示的に
Dim dbs As DAO.database
Dim RS As DAO.Recordset
と指定してください。
この方が確実にDAOのデータベースやレコードセットとして認識されると思います。
早速のご回答、ありがとうございます。
Access2002です
ご指摘のようにDAOを明示的に書かないと
Set RS = dbs.Openrecordset("M_基本情報")
の所で型が違うというようなエラーが出て明示的に書くと
総て解決しました。
ちなみにDAOを使わない場合は、M_基本情報を他のテーブルと
リンクさせて呼び出すのでしょうか?
No.4
- 回答日時:
>フォームに関連付けしないでテーブルのデータを呼び出す方法として、DAOやADOを使わないでもっと簡単に呼び出す方法はあるのかな、アクセスの基本機能としてプログラムの中にどのテーブルのどのデータを使うか明示的に書けないのかなと思っています。
根本的に勘違いされているような気がします。
ここはACCESSのコンサルティングをする場所ではありません。ご自身でACCESSに関する本などで基本的なことを勉強されてから質問された方がよろしいかと思います。私がこうしたことをコンサルティングする場合は、1時間あたり数万円をいただきます。
そのとうりですね。
ついつい甘えてしまったようです。
後は自分でじっくりと調べて見ますので
質問はこれで打ち切らさせていただきます。
申し訳ございませんでした。
No.3
- 回答日時:
>ちなみにDAOを使わない場合は、M_基本情報を他のテーブルとリンクさせて呼び出すのでしょうか?
何を言われているのかよくわかりませんが、DAOと明示的に宣言していなければ、単にADOのデータベースとして定義されてしまったので、
Set RS = dbs.Openrecordset("M_基本情報")
の部分でDAOのデータベースとしては扱えず、エラーとなったのだと思います。
この回答への補足
解りにくい書き方で申し訳ありません。
アクセスではテーブルのデータはフォームにレコードソースや値集合ソースとして関連付けをし、利用すると理解しています。
フォームに関連付けしないでテーブルのデータを呼び出す方法として、DAOやADOを使わないでもっと簡単に呼び出す方法はあるのかな、アクセスの基本機能としてプログラムの中にどのテーブルのどのデータを使うか明示的に書けないのかなと思っています。
(参照設定でいろいろな機能を追加するのはなんとなく不安定な気がしますし、フォームに関連付けするのはプログラムが理解しづらくなるような気がして・・・)
私の理解不足等あればご指摘戴ければ助かります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス レポートを開いたときにパラメーターの自動入力がしたい 4 2022/11/30 11:21
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Visual Basic(VBA) パーソナルXLSBのfuctionを呼び出すと「Functionが定義されていません」のエラーになる 2 2022/08/22 22:51
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSテーブル2つのデータの...
-
DataAdapterについて教えてくだ...
-
Accessのフォーム上でSQLServer...
-
SPREAD でのデータ連動、更新に...
-
DataTableから条件を満たした行...
-
「マスタ」と「テーブル」の違...
-
ACCESSのSQLで、NULLかNULLでな...
-
2つのテーブルから条件に一致...
-
3つ以上のテーブルをUNIONする...
-
重複するキーから一番古い年月...
-
[ BETWEEN ] vs [ >= AND <= ]
-
ACCESS 一番最新の日付の金額...
-
ACCESS2007 フォーム 「バリア...
-
Access VBA Me.Requery レコー...
-
accessテーブル作成クエリを実...
-
accessのロック
-
ManagementStudioからのデータ削除
-
Accessのリンクテーブルについて
-
オラクルではできるのにSQLSERV...
-
Access VBA [リモートサーバー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DataTableから条件を満たした行...
-
ACCESSテーブル2つのデータの...
-
Delphiのデータベースについて
-
DataAdapterについて教えてくだ...
-
Accessのフォーム上でSQLServer...
-
SPREAD でのデータ連動、更新に...
-
VBA 印刷範囲の設定方法
-
ORACLEデータをACCESSへインポ...
-
「マスタ」と「テーブル」の違...
-
[ BETWEEN ] vs [ >= AND <= ]
-
2つのテーブルから条件に一致...
-
ACCESSのSQLで、NULLかNULLでな...
-
オラクルではできるのにSQLSERV...
-
SELECT時の行ロックの必要性に...
-
3つ以上のテーブルをUNIONする...
-
SELECT文でのデッドロックに対...
-
2つの項目が重複するレコード...
-
Access VBA [リモートサーバー...
-
数百万件レコードのdelete
-
ACCESS2007 フォーム 「バリア...
おすすめ情報