バックグラウンドのストアドプロシージャを呼び出す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は大量データの処理速度が遅いという弱点を解決し、深セン市電力局のデータ処理能力を大幅に向上させました。
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は大量データの処理速度が遅いという弱点を解決し、深セン市電力局のデータ処理能力を大幅に向上させました。
関連
-
Accessデータベースは、ソリューションを更新することはできません書き込むことはできません
-
アクセスは、レジストリのキーワードエラー処理方法を開くことができません(80004005エラー)。
-
どのように実装方法を並べ替えるために1からアクセス自動番号を作成する
-
ACCESSデータベースファイルの圧縮と修復方法[グラフィック]。
-
アクセス利用概要
-
Accessのデータ接続時にC#が常にdbo.mdbが見つからないと報告する問題
-
ADODB接続からアクセスは80004005エラー解決法
-
中型Accessデータベースの長期使用によるちょっとした経験とデメリット
-
Accessでレポートをグループ化する際の問題を解決する
-
Accessで指定日以前のレコードを選択する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
GridviewのButtonFieldのtextプロパティを取得する
-
ACCESSデータベースは、ゼロのメソッドを共有するために自動番号のID値を変更するには
-
ACCESSの自動採番の問題を解決する8つのステップ(SQL SERVER 2000のデータベースをACCESSのデータベースに変換したもの)
-
1つのSQL実装で2つのテーブルを更新し、対応するフィールドの値を更新します。
-
Accessでデータベースの内容を一括で置き換える2つの方法
-
アクセスコメントフィールドの64K制限
-
Access 2000、Access 2002、Access 2003のデータベースから削除されたテーブルを復元する方法
-
レジストリを読み込んで、Officeのバージョンに応じたデータベース接続フィールドを取得します。
-
データベースから10個のランダムなデータを取得する4つの方法
-
INNER JOIN構文で複数のテーブルを結合してレコードセットを作成する