1. ホーム
  2. データベース
  3. アクセス

バックグラウンドのストアドプロシージャを呼び出すACCESSの実装方法

2022-01-22 09:17:47
しかし、大量のデータを処理するには時間がかかります。処理すべきデータが大量にある場合、Client側で処理できず、Server側で処理しなければならない。しかし、ACCESS側とServer側の接続はほとんどがODBCを介しているため、バックグラウンドのストアドプロシージャを呼び出す難易度が高くなっています。著者は、長い間これに取り組んで、さまざまなビジネスニーズに応じて、次の3つのメソッドは、バックグラウンドストアドプロシージャを呼び出すために使用することができます。
  I. Accessは、ストアドプロシージャに対応するジョブを次々とバックグラウンドに投入していく。SQL Server 6.5 では、タスクマネージャーを使用して対応するタスクを作成します。Oracle 8.0 では、管理ジョブキューを使用して対応するジョブを作成します。Access では、ジョブが job_list テーブルに挿入され、これらのジョブは通常 1 日 1 回夜間に実行されます。これらのジョブは、非常に大量のデータを処理する必要があり、リアルタイム性が低いビジネスに対応しています。私たちのビジネスにおける典型的な例は、毎晩の大量の電力計算です。
  次に、Server側でいくつかのトリガー(Trigger)を作成し、Accessでこれらのトリガーを有効にします。SQL Server 6.5でもOracle 8.0でも、この作業はCreate Triggerで行います。Accessでは、業務に応じてレコードの挿入、変更、削除を行うことで異なるトリガーをアクティブにします。私たちのビジネスの例では、ビジネスパーソンが顧客の検針票を変更すると、電気料金計算のトリガーが起動し、その顧客の電気料金をすぐに再計算することができます。このように、電気料金の一括計算と同じプログラムをAccess側で再開発することなく共有することができ、フロントエンドの対応を高速化することができるのです。
  Accessのパススルークエリを作成する手順は以下のとおりです。
  (1) [データベース]ウィンドウで[クエリ]タブをクリックし、[新規作成]ボタンをクリックします。
  (2) [New Query] ダイアログボックスで、[Design View] オプションをクリックし、[OK] ボタンをクリックします。
  (3) [テーブルの表示]ダイアログボックスの[閉じる]ボタンをクリックします。
  (4) [クエリ]メニューの[SQL文の条件]をポイントし、[パス]コマンドをクリックします。
  (5) ツールバーで[プロパティ]ボタンをクリックし、[クエリプロパティ]テーブルを表示します。
  (6) Query Properties テーブルで、"ODBC Connection String" プロパティを設定して、接続先のデータベース情報を指定します。接続情報は、"ODBC;DSN=ntserver0;UID=sa;PWD=;DATABASE=BMS"を入力するか、"Generate"ボタンで生成することが可能です。
  (7) プロシージャはレコードを返さないので、"Return Records" プロパティを "No" に設定してください。
  (8) SQL パスクエリウィンドウで、パスクエリ:exec statistics を入力します。statistics は、SQL Server データベースのストアドプロシージャです。
  (9) クエリを閉じ、stat_query という名前で保存します。
  パスクエリを実行するためのメソッドです。
  (1) Microsoft AccessのマクロOpenQueryを使用する。
  (2) 次のイベントプロシージャを使用します。
  プライベート サブ 統計情報_クリック()
  Dim dbs As Database, qdf As QueryDef
  Dim tmq As Dynaset
  Dim strSQL As String
  セット dbs = CurrentDb
  '上記で構築したパスクエリstat_queryを開く
  Set qdf = dbs.OpenQueryDef("stat_query ")を実行します。
  qdf.実行
  セット dbs = Nothing
  エンド・サブ
  この方法はSQL Server 6.5では全く問題ないのですが、Oracle 8.0ではエラーメッセージが出ます。ORA-00900 invalid SQL statement. このメソッドは、キューに中間テーブルを必要としないため、またはバックグラウンドストアドプロシージャをアクティブにするので、それは、アプリケーションの広い範囲を持って、大量のデータビジネスを扱う必要がある場合。
  以上の3つの方法によって、Accessは大量データの処理速度が遅いという弱点を解決し、深セン市電力局のデータ処理能力を大幅に向上させました。