6

Access と VBA プログラミング言語を使用してソリューションを設計するプロセスを改善できるいくつかのアイデアについて考えています。もちろん、私は一般的なプログラミングのベスト プラクティスについて話しているのではなく、Access と VBA に直接関係するものだけを話しているのです。

VBA にはオブジェクト指向プログラミングのサポートが乏しく、継承やポリモーフィズムなどがないことは誰もが知っています。では、DRYとKISSを同時に確実にするにはどうすればよいのでしょうか。他の言語で共通のパターンや戦略を VBA で実装する方法はいくつかありますが、率直に言って、それらは往々にして複雑すぎます。それらのうちどれを実装する価値がありますか?

新しい Access プロジェクトを開始する前に (もしあれば ;))、ベスト プラクティスのコレクションを収集したいと考えています。これは、私の経験から、Access の VBA (および Access 自体) を使用すると、不適切な設計概念を回避することが非常に困難であることがわかっているためです。乱雑で判読できず、何度も繰り返されるコードで終わる。

4

3 に答える 3

2

Accessプログラミングのベストプラクティスの決定的な情報源は次のとおりです。

Access2002デスクトップ開発者ハンドブック
http://www.amazon.com/Access-2002-Desktop-Developers-Handbook/dp/0782140092

Accessでのプログラミングを真剣に考えている場合は、コピーを入手する必要があります。これらの人は専門家です。

この本は古くなっているように見えますが、その中のすべての情報はまだ当てはまります。この種の開発は少しニッチな領域であるため、更新されなかったと思います。しかし、Accessは内部的にそれほど変更されておらず(VB6の方言に相当するものをまだ使用している、残っている唯一のソフトウェア開発ツールの1つです)、本のほとんどの情報はまだ良好です。

クライアント/サーバー開発に焦点を当てたコンパニオンブックは次のとおりです。

Access 2002 Enterprise Developer's Handbook
http://www.amazon.com/Access-2002-Enterprise-Developers-Handbook/dp/0782140106

于 2009-09-26T16:53:28.490 に答える
2

同じ問題に何らかの形で関連する他のいくつかの質問と回答をここに追加したいと思います。ポインタは、これらの質問に対する私自身の答えにつながるかもしれませんが、他の人の答えを閲覧することを躊躇しないでください!

エンタープライズ ソフトウェアとしての MS Access

MS-Access アプリケーションをテストする最良の方法

MS-Access で複数のプログラマーと作業する

MS-Access からの SQL サーバー GUIDS の使用に関する推奨事項

Access の主な制約の 1 つは、制限されたオブジェクト モデルであることを認めなければなりません。Form オブジェクトに独自のプロパティとメソッドを追加する可能性がないことに特に悩まされました。私は最近、2 つの追加オブジェクトを作成することで、この問題を効率的に解決できることを発見しました。

  • 「AllMyForms」オブジェクトは、実際には 2 つのオブジェクト コレクションを維持します。1 つは標準の Access フォーム コレクションで、もう 1 つは「customForm」オブジェクトのすべてのインスタンスのコレクションです。両方のコレクションは、開かれたフォームの hwnd プロパティ (より具体的には、フォームのインスタンスの hwnd プロパティで、同じフォームの複数のインスタンスを開くことができます) でインデックス付けされます。

  • フォームのインスタンスのカスタム プロパティとメソッドをリストする「customForm」オブジェクト

このようにして、次のようなプロパティを参照できます。

accessForms:標準のプロパティとメソッドの参照

AllMyForms.accessForm(hwnd).name

.hwnd 値を使用して、アクセス フォームの .name プロパティを参照します。

ちなみに、次の debug.print でも同じ結果が得られます。

? screen.ActiveForm.name
? AllMyForms.accessForm().name   'default value for hwnd is screen.activeForm.hwnd'

カスタム フォーム:プロパティ

AllMyForms.customForm(hwnd).selectClause

フォームのインスタンスの基になるレコードセットを作成するために使用される SELECT 句を参照します

カスタム フォーム:メソッド

customForm オブジェクトで使用できる .agregate メソッドは、フォーム「列」の合計/最小/最大/平均 (つまり、連続フォームのコントロールの値の合計) を計算します。

AllMyForms.customForm().agregate("lineAmount","sum")

フォームの現在/アクティブなインスタンスに表示されるすべての「lineAmount」値の合計が得られます。

于 2009-09-28T07:15:38.010 に答える
0

私が Access プログラミングを行っていたときに必ずやらなければならなかったことの 1 つは、バインドの理由から多くの非表示フィールドを使用することでした。フィールドを非表示にし、フィールドの色を前景を白、背景を赤に変更して、これが非表示のフィールドであることを人々が認識できるようにしました。

私が使用したもう 1 つのベスト プラクティスは、すべての共有コードにモジュールを使用することでした。再利用可能なコードの多くをモジュールに入れる習慣を身につけてください。

于 2009-09-27T04:00:01.457 に答える