ユーザ用ツール

サイト用ツール


サイドバー

プログレス合同会社

広告

msaccess:libclass

ライブラリのクラス参照

Microsoft Accessデータベースで共通処理のライブラリを作成し、アプリケーションデータベースから参照設定で使用することがあります。

例として、ライブラリ(例:AppLib)側でクラスモジュールExampleClassを作成します。

msaccess:libclass0101.png
アプリケーションデータベース側からライブラリデータバース側のクラスを参照できるようにするには、クラスモジュールのプロパティ定義でInstancingを『2 - PublicNotCreatable』にします。

さらに、クラスモジュールをインスタンス化するために標準モジュール(例:GetInstance)を用意し、それぞれのクラスごとにインスタンス化関数を作成します。

public Function ExampleClass() As ExampleClass
  Set ExampleClass = New ExampleClass
End Function

アプリケーションデータベースでライブラリデータバースのクラスを利用するコードは下記になります。

Dim ClassExample As AppLib.ExampleClass
     :
  Set ClassExample = AppLib.GetInstance.ExampleClass()
     :
  Set ClassExample = Nothing
End Function

また、ライブラリデータベース側の標準モジュール内に

Public ClassExample As New ExampleClass

と定義しておけば、呼び出し側でインスタンス化せずExampleClassクラスをAppLib.ClassExampleで呼び出して使用することができます。

ただ、インスタンス化せずに使用する場合は、クラスを参照する前に標準モジュール内の任意の関数を一度は呼び出しておく必要があります。
いきなり参照すると、最初の実行時にメソッドまたはデータメンバが見つかりませんというコンパイルエラーが発生します。

このエラーが厄介なのは、エラーになっても再実行すると今度はエラーなしで実行できてしまうところにあります。

msaccess/libclass.txt · 最終更新: 2020/07/08 by プログレス合同会社