データ アクセス ページを使った作業

Paul Cornell
Microsoft Corporation

July 5, 2001

Microsoft® Access 2000 で導入された "データ アクセス ページ" を使用すると、Internet Explorer 5 以降で表示できるデータ連結 HTML ページを Access ユーザー インターフェイス内で作成できます。さらに、静的または動的なデータを含むデータ アクセス ページを電子メールで配布できます。一般的には、データ アクセス ページはイントラネットでの使用を対象としています。ただし、特別な配慮を行えば、インターネット上にも展開できます。また、Access フォームと同様に、データ アクセス ページは Access アプリケーション内でも使用できます。

データ アクセス ページは、 Access データベースまたは Microsoft SQL Server™ 6.5 以降のデータベースからのデータに連結できます。これらのページには Microsoft Office XP Web コンポーネントのインスタンスを含めることもできます。このコンポーネントは Microsoft Excel などのほかのデータ ソースに接続するために使用できます。

Microsoft Access Version 2002 をインストールした直後から、データ アクセス ページを体験できます。これを行うには、以下の手順に従います。

  1. [ヘルプ] メニューの [サンプル データベース] をポイントして、 [ノースウィンド サンプル データベース] をクリックします。
  2. [メイン スイッチ ボード] フォームで [データベース ウィンドウの表示] をクリックします。
  3. [オブジェクト] タブで [ページ] をクリックします。
  4. 利用できる 5 つのデータ アクセス ページのいずれかをダブルクリックして、ページ ビューで開きます。 [表示] メニューの [デザイン ビュー] をクリックして、ページのデザインを変更します。その後、[ツール] メニューの [マクロ] をポイントし、[Microsoft Script Editor] をクリックして、ページに含めるスクリプト コードを操作します ([表示] メニューの [スクリプトのみ表示] をクリックして、スクリプト コードだけを表示するようにページのコードをフィルタ選択できます)。

このコラムでは、Access Version 2002 のデータ アクセス ページの新機能と強化された機能、展開とライセンスの考え方、および開発方法について説明します。さらに、Visual Basic® for Applications のコードおよび Visual Basic Scripting Edition (VBScript) を使用してデータ アクセス ページを操作する方法についても説明します。また、MSODSC (Microsoft Office Data Source コントロール) や、この機能をデータ アクセス ページ ソリューションで活用する方法についても簡単に説明します。

データ アクセス ページについて説明することはたくさんあるので、このコラムでは高度な部分の詳細についてのみ説明します。また、コラムのスペースの関係上、 Access Version 2002 の観点から見たデータ アクセス ページについてのみ説明します。ただし、このコラムの後半に多くの参考資料を示しましたので、お時間のあるときに、調べてみてください。

これまでデータ アクセス ページを使って作業したことがない方は、理解を早めるために、Access Version 2002 ヘルプの以下の 5 つのトピックをご覧になることをお勧めします。

  • データ アクセス ページについて
  • 電子メールによるデータ アクセス ページの送信について
  • データ アクセス ページを設計する
  • データ アクセス ページを作成する
  • Web ページを公開する

以下の Access Version 2002 ヘルプ トピックでは、データ アクセス ページで Office XP Web コンポーネントを使用することについて紹介しています。

  • Office Web コンポーネントについて
  • データ アクセス ページでピボットテーブルを作成する
  • データ アクセス ページにワークシートを追加する

Access Version 2002 ヘルプでこれらのトピックを検索するには、 [目次] タブの [Web 上のデータ] をクリックして、[データ アクセス ページ] をクリックします。

Access Version 2002 のデータ アクセス ページの新機能と強化された機能

Access Version 2002 で追加されたデータ アクセス ページの新機能を以下に示します。

  • 集計を計算するための [オート SUM] ボタン。
  • テーブル、クエリ、ビュー、ストアド プロシージャ、フォーム、およびレポートをデータ アクセス ページに変換する機能。この機能については、Access Version 2002 のヘルプ トピック「データ アクセス ページとしてのオブジェクトの保存について」をご覧ください。 Access Version 2002 ヘルプでこのトピックを検索するには、 [目次] タブの [Web 上のデータ] をクリックして、[データ アクセス ページ] をクリックします。
  • 現在のページで使用する "接続ファイル" を指定する機能。複数のデータ アクセス ページから 1 つのデータ接続ファイルを指すことができます。この機能によって、各ページの接続情報を個別に変更する手間が省けます。これらの機能については、次の 3 つの Access Version 2002 のヘルプ トピック「接続ファイルの使用について」、「接続ファイルを作成する」、および「データ アクセス ページの接続情報を設定または変更する」をご覧ください。 Access Version 2002 ヘルプでこれらのトピックを検索するには、 [目次] タブの [Web 上のデータ] をクリックして、[データ アクセス ページ] をクリックします。
  • 最近行った操作を最高 20 個まで元に戻す機能 (ただし、ページをデザイン ビューからページ ビューに切り替えると元に戻すリストは消去されます)。読み取り専用のページでは、操作を元に戻せません。
  • ページのデザイン画面で複数のコントロールを選択する機能。
  • [ナビゲーション] ツール バーをカスタマイズする機能。たとえば、ナビゲーション ボタンを表示、非表示にしたり、ナビゲーション ボタンに表示する画像を変更したり、ほかの種類のコントロールをナビゲーション ボタンのように動作させることなどができます。
  • Microsoft Internet Explorer 5.5 以降を使用して、データ アクセス ページがどのように印刷されるかをプレビューできます。また、ActiveX® コントロールが正しく印刷されるようになりました。さらに、印刷テンプレートを使用してカスタム ページ ヘッダーおよびフッターの追加、複数列での印刷、および 2 ページ/枚および 4 ページ/枚で印刷できます。

接続、展開、およびライセンスについて

データ ソースへの接続

Access 2000 で複数のデータ アクセス ページのデータ接続情報を変更するには、各ファイルを個別に開いてページ接続を変更する必要がありました。 Access Version 2002 では、複数のデータ アクセス ページが 1 つの接続ファイルを指すことができます。この機能によって、各ページの接続情報を 1 つずつ変更する手間が省けます。接続ファイルには 2 種類あります。 1 つは、データ接続の接続情報、キーワード、および説明を含むデータベース接続 (.odc) ファイルで、もう 1つは接続文字列を指定するために弊社が作成した標準のファイル形式を持つ Microsoft データ リンク (.udl) ファイルです。データ接続情報を管理するのに使用される主なプロパティを以下に示します。

  • ConnectionFile プロパティは、ページをデータ ソースに接続するために使用する .odc ファイルや .udl ファイルを指定する String 値を受け入れます。このプロパティは、データ アクセス ページの [プロパティ] ウィンドウの [データ] タブを使って、または Microsoft Script Editor (MSE) で MSODSC (Microsoft Office Data Source コントロール) のプロパティとして利用できます。
  • UseDefaultConnectionFile プロパティは、 .odc ファイルや .udl ファイルを既定の接続ファイルとして使用するかどうかを決定します。このプロパティは、[ツール] メニューの [オプション] をクリックして表示される [オプション] ダイアログ ボックスの [ページ] タブの [標準の接続ファイルを使用する] チェック ボックスで利用できます。
  • DefaultConnectionFile プロパティは、既定の接続ファイルとして使用する .odc ファイルや .udl ファイルのパスとファイル名です。このプロパティは、[ツール] メニューの [オプション] をクリックして表示される [オプション] ダイアログ ボックスの [ページ] タブの [既定の接続ファイル] ボックスで利用できます。

XML データの埋め込みまたはリンク

データ アクセス ページに XML (eXtensible Markup Language) データを埋め込んだり、データ アクセス ページから XML データにリンクすることは、異なるコンピュータ システムおよびビジネス パートナー間でデータを共有するための優れた候補になります。

データ アクセス ページに XML データを埋め込むための以下のプロパティは、ページの [プロパティ] ウィンドウの [データ] タブで、または MSE の MSODSC のプロパティとして利用できます。

  • UseXMLData プロパティは、ページを XML データに連結するかどうかを示す Boolean 値を取得または設定します。 True の場合は、 ページを XML データに連結します。
  • XMLDataTarget プロパティは、 XML データの読み込み元または保存先を表す String 値を取得または設定します。
  • XMLLocation プロパティは、 DscXMLLocationEnum 定数を取得または設定します。この定数はXML データが、独立した XML ファイル (dscXMLDataFile) に読み込み、保存が行われているか、または現在のページ内部に埋め込まれている XML データ アイランド (dscXMLEmbedded) かを指定します。 dscXMLDataFile オプションは XML ディレクトリを直接メモリに読み取ってパフォーマンスを強化しるのに対して、dscXMLEmbedded オプションは HTML パーサーが XML を解析してから XML をメモリに読み取ります。

詳細については、「Including XML in Data Access Pages in Access 2002 Non-MSDN Online link」をご覧ください。

イントラネットまたはインターネットでデータ アクセス ページをホストする

Access を使用してデータ アクセス ページをデザインしますが、これらのページは Access データベース ファイルやプロジェクトとは独立した場所に保存されます。イントラネット ソリューションの場合は共有ファイルに、イントラネットまたはインターネット ソリューションのいずれかの場合は Web サーバーに保存されます。 [データベース ウィンドウ] に表示されるページのアイコンは単なるページへのリンクです。 [データベース ウィンドウ] でページのアイコンを右クリックし、 [プロパティ] をクリックすると、[パス] ボックスにページが格納されている場所が表示されます。

エンド ユーザーがデータ アクセス ページを開けるようにするには、以下の操作を行います。

  1. データ アクセス ページへの UNC (汎用名前付け規則) パス (例 \\MyServer7\Pages\MyPage.htm)、または URL (Uniform Resource Locator) (例 http://example.microsoft.com/Data/Pages/Page05.htm) をエンド ユーザーに提供します。
  2. エンド ユーザーは、 [アドレス] に UNC パスまたは URL を入力して Internet Explorer 5 以降でデータ アクセス ページを開けるようになります。また、将来参照するために Interent Explorer のお気に入りの一覧に UNC パスまたは URL を追加できます。
  3. エンド ユーザーは、Access で [挿入] メニューで [ページ] 、[既存の Web ページ] の順にクリックし、 [OK] をクリック後、[ファイル名] の一覧に UNC または URL を入力して、 [開く] をクリックし、データ アクセス ページへのリンクを追加できます。ページが自動的に開かれます。エンド ユーザーには [データベース ウィンドウ] の [ページ] タブに、追加したページにリンクする新しいページ アイコンが表示されます。

詳細については、「サポート技術情報」の記事「How to Deploy Data Access Pages over the Internet Non-MSDN Online link」 (簡潔な記事)、または「Deploying Data Access Pages on the Internet or Your Intranet」 (詳細な記事) をご覧ください。

ライセンスとデータ アクセス ページ

ユーザーがデータ アクセス ページを表示するには Access ライセンスは必要ありません。ただし、Office XP Web コンポーネント サポート ファイルが必要になります。ユーザーが有効な Office XP ライセンスを所有しているかどうかには関係なく、データ ソースに接続するために MSODSC を使用している Internet Explorer 5 以降で表示されるデータ アクセス ページは、常にすべての機能を利用できます。

ただし、ページ上の Office XP Web コンポーネント (ワークシート、ピボットテーブル (PivotTable®) リストまたはグラフなど) と利用するには、ユーザーは有効な Office XP ライセンスを所有し、かつ Office XP Web コンポーネント サポート ファイルがコンピュータにインストールされている必要があります。 Office XP Web コンポーネントは、 Office XP およびスタンドアロン バージョンの Microsoft FrontPage® Version 2002 に含まれています。コンピュータに Office XP がインストールされていない場合は、 Office XP Web コンポーネント サポート ファイルをダウンロードできます。 (ここをクリックして、ダウンロードします。 Non-MSDN Online link) しかし、Office XP Web コンポーネントのサポート ファイルを所持していても、 Office XP または FrontPage Version 2002 がインストールされていない場合、 Office XP Web コンポーネントを表示できますが、これらのコンポーネントとの対話や、デザイン機能の使用はできません。

データ アクセス ページのライセンスと機能の詳細については、 Microsoft Office XP Resource Kit の「Upgrading to Access 2002 Non-MSDN Online link」トピックの「Details on licensing and functionality」セクションをご覧ください。

データ アクセス ページの開発方法

データ アクセス ページの開発方法は基本的には 2 通りあります。 1 つは、ページを操作するためにデータ アクセス ページのデザイン環境外で Visual Basic for Applications (VBA) を使用する方法です。もう 1 つは、Microsoft Visual Basic Scripting Edition (VBScript) や Microsoft Jscript® などのスクリプティング言語をデータ アクセス ページのデザイン環境で使用して、実行時にページの動作を制御する方法です。 VBA を使用する方法にはやや制限があり、通常プロジェクトの開発またはデバッグ段階でデータ アクセス ページの一連のプロパティをプログラムで操作する必要がある場合にのみ使用されます。大部分の場合、スクリプトを使う方法を使用します。データ アクセス ページは HTML ベースなので、 HTML 内部にスクリプト コードを埋め込んで、エンド ユーザーに実行時の機能を提供できます。次の 2 つのセクションで、これらの 2 つの方法を応用する方法を説明します。

VBA を使ったデータ アクセス ページでの作業

Microsoft Access 10.0 Object Library を使用すると、複数のデータ アクセス ページを一度に変更できるようになり、ページを個別に開いて、各ページに同じ変更を加えるのに時間を費やす必要がなくなります。

CurrentProject オブジェクトの AllDataAccessPages コレクションを使用して、開いている Access データベースまたはプロジェクト ファイルのすべてのページにプログラムでアクセスできます。次の例は、開いている Access データベースまたはプロジェクトの各ページの名前を一覧表示します。

  Public Sub AllPagesInCurrentProject()

    Dim intDAPCounter As Integer
    Dim strDAPList As String
    
    ' 現在の Access データベースのすべてのページ名を取得します。
    ' ページが開いているかどうかは無関係です。
    With CurrentProject.AllDataAccessPages
        For intDAPCounter = 0 To .Count - 1
            strDAPList = strDAPList & .Item(intDAPCounter).Name & vbCrLf
        Next intDAPCounter
    End With
    
     MsgBox Prompt:="現在のプロジェクトの" & _
        "すべてのページ名:" & vbCrLf & strDAPList
    
End Sub

Application オブジェクトの DataAccessPages コレクションを使用して、 Access の特定のインスタンスで開いているすべてのページにプログラムからアクセスできます。 DataAccessPages コレクションは、開いているページごとに DataAccessPage オブジェクトを 1 つ持っています。次の例は、Access の現在のインスタンスで開いている各ページの名前を一覧表示します。

  Public Sub AllOpenPagesInApplication()

    Dim intDAPCounter As Integer
    Dim strDAPList As String
  
    ' Get the name of each open page in this instance of Access.
    ' Each page must be currently open to count.
    ' Access のこのインスタンスで開いている各ページの名前を取得します。
    ' 現在開いているページのみがカウントされます。
    With DataAccessPages
        For intDAPCounter = 0 To .Count - 1
            strDAPList = strDAPList & .Item(intDAPCounter).Name & vbCrLf
        Next intDAPCounter
    End With
    
    MsgBox Prompt:="このインスタンスで開いている" & _
        "すべてのページ名:" & vbCrLf & strDAPList

End Sub

プログラムでページにアクセスすると、特定の DataAccessPage オブジェクトのメソッドやプロパティを使用してページを操作できます。

DataAccessPage オブジェクトで最も頻繁に使用されるメンバの 1 つに Document プロパティがあります。このプロパティは、ページに含まれるコードを表す DHTML (Dynamic HTML) document オブジェクトを返します。 DHTML document オブジェクトの詳細については、 Office XP のインストールに含まれる「DHTML,HTML & CSS Reference」(htmlref.chm) (英語) をご覧ください。

以下に Document プロパティの使用例を示します。このコードは最初に開かれたページのタイトルを返します。

  Public Sub DisplayPageTitle()

    Const FIRST_OPEN_PAGE As Integer = 0    
    Const NO_PAGES_OPEN As Integer = 2019
    
    On Error GoTo DisplayPageTitle_Err
    
    ' Access のこのインスタンスで最初に開かれたページのタイトルを表示します。
    MsgBox Prompt:="最初に開かれたページのタイトル: " & _
        DataAccessPages.Item(FIRST_OPEN_PAGE).Document.Title
        
DisplayPageTitle_End:
    Exit Sub
    
DisplayPageTitle_Err:
    Select Case Err.Number
        Case NO_PAGES_OPEN
            MsgBox "少なくともデータ アクセス ページを 1 つ開いている必要があります。"
        Case Else    
    End Select
    Resume DisplayPageTitle_End
    
End Sub

DataAccessPage オブジェクトで最も頻繁に使用される別のメンバに MSODSC プロパティがあります。このプロパティは、ページをソース データに連結する MSODSC のインスタンスを表す Office XP Web コンポーネント DataSourceControl オブジェクトを返します。 DataSourceControl オブジェクトの詳細については、 Office XP のインストールに含まれる「Microsoft Office Web コンポーネント Visual Basic リファレンス」(owcvba10.chm) をご覧ください。

以下に MSODSC プロパティの使用例を示します。次のコードは、最初に開かれたページの関連データを XML として個別のファイルにエクスポートします。

  Public Sub ExportXMLFromFirstOpenPage()

    ' まず、Microsoft Office XP Web Components Library (OWC10.DLL) への
    ' 参照を設定します。
    
    Const FIRST_OPEN_PAGE As Integer = 0
    Const XML_TARGET_FILE As String = "C:\DataAccessPages0.xml"
    Const NO_PAGES_OPEN As Integer = 2019
    
    On Error GoTo ExportXMLFromFirstOpenPage_Err
    
    ' 最初に開かれたページの関連データを個別のファイルに XML としてエクスポートします。
    With DataAccessPages.Item(FIRST_OPEN_PAGE).MSODSC
        .XMLLocation = dscXMLDataFile
        .XMLDataTarget = XML_TARGET_FILE
        .ExportXML
    End With
        
ExportXMLFromFirstOpenPage_End:
    Exit Sub
    
ExportXMLFromFirstOpenPage_Err:
    Select Case Err.Number
        Case NO_PAGES_OPEN
            MsgBox "少なくともデータ アクセス ページを 1 つ開いている必要があります。"
        Case Else
    End Select
    Resume ExportXMLFromFirstOpenPage_End
    
End Sub

さらに多くの例を参照したい場合は、 VBA を使ったデータ アクセス ページでの作業に関する以下の「サポート技術情報」の資料をご覧ください。

スクリプトを使ったデータ アクセス ページでの作業

次に、エンド ユーザーが実行時に体験するデータ アクセス ページの現象をプログラムで制御することについて見ていきましょう。プログラムで制御するには、ページに付加するスクリプトを記述したいと考えるでしょう。スクリプトがページのユーザー インターフェイスでエンド ユーザーに表示されることはありません。しかし、スクリプトはページの要素がエンド ユーザーまたはその他の実行時の動作への応答に利用できる機能を提供します。このスクリプトは VBScript または JScript で記述できます。

VBScript と Jscript について

VBScript は小さく、軽量なインタプリタ言語として設計されました。また、安全であることを考慮して設計されたので、元になるオペレーティング システムへの直接アクセス機能は含まれていません。 VBScript の構文および使用法は VBA と似ています。ただし、以下の機能およびキーワードが削除されています。

  • 言語要素 : #Const#If...Then...ElseCVarCVDateDateDeclare (DLL の宣言に使用する場合)、Debug.PrintDoEventsEndErlErrorGoSub...ReturnGoToLikeLinkExecuteLinkPokeLinkRequestLinkSendLSetMidOn Error GoToOn...GoSubOn...GoToOptionalOption BaseOption CompareOption Private ModuleParamArrayResumeResume NextRSetStaticStopStrStrConvTimeType...End TypeTypeOf、および Val
  • Select Case ステートメントで、 Is キーワード、比較演算子、または To キーワードを使った値の範囲を含む式を使用する機能。
  • 行番号と行ラベル。
  • 0 以外の下限値を使用する配列の宣言。
  • コレクションで AddCountItem、および Remove キーワードを使用する機能。 ! 演算子を使用してコレクションにアクセスする機能。 Clipboard コレクション。
  • 固定長文字列。
  • 財務関数。
  • 従来のすべての基本ファイル入出力。
  • すべての組み込みデータ型 (ただし Variant 型は除きます)。
  • オブジェクト定数 (スクリプトでは、数値を使用するか明示的に定数を宣言する必要があります)。

VBScript が、VBA や Office 開発者との結び付きが非常に強いので、この記事では JScript の使用方法については説明しません。ただし、Java や JavaScript などの言語に精通している場合は、 JScript を学習することや使用することに特に問題はありません。

VBScript および JScript の詳細については、 Microsoft Scripting Technologies Web サイト 、または「Microsoft Script Editor のヘルプ」 (Microsoft Script Editor で F1 キーを押すか、 [ヘルプ] メニューの [Microsoft Script Editor ヘルプ] をクリックして利用できます) をご覧ください。

Microsoft Script Editor の使用

データ アクセス ページに含まれるスクリプトにアクセスするには、このコラムで以前に説明した Microsoft Script Editor (MSE) と呼ばれるスクリプティング環境を使用します。ページをデザイン ビューで開いた状態で MSE にアクセスするには、以下のいずれかの操作を行います。

  • [ページ デザイン] ツール バーの [Microsoft Script Editor] をクリックします。
  • [ツール] メニューの [マクロ] をポイントして、[Microsoft Script Editor] をクリックします。
  • Alt+Shift+F11 キーを押します。

MSE では、ツールボックスにはコードを手際よく再利用する機能が用意されています。ツールボックスを表示するには、[ツール] メニューで [ツールボックス] をクリックするか、 Ctrl+Alt+X キーを押します。頻繁に使用するコードを選択して、[HTML] タブにドラッグできます。また、[クリップボード リング] タブで、テキスト ベースのコピーおよび切り取り操作の最新 15 の操作にアクセスできます。

MSE の使用方法の詳細については、Wes Kim の記事 「Web ベースのデータ ソリューション作成の要点」をご覧ください。

スクリプティングの例

スクリプトと MSE について簡単に説明したので、次にデータ アクセス ページでスクリプトを使用する方法の例をいくつか紹介しましょう。

スクリプトでページ上のオブジェクトを参照する場合、オブジェクトの名前を参照できます。たとえば、Northwind サンプル データベースの [従業員] ページでは、コントロール オブジェクトの名前を使用して、 AddressBirthDateCity、および Country コントロール オブジェクトを参照できます。また、MSE コード ウィンドウで [オブジェクト] リストおよび [イベント] リストを使用して、オブジェクトを選択し、そのオブジェクトのイベント ハンドラを選択することもできます。たとえば、[オブジェクト] リストで [BirthDate] コントロール オブジェクトを選択し、 [イベント] リストで [onmouseover] イベントを選択すると、マウス ポインタを BirthDate コントロール上に移動したときに実行される次のコードを記述できます。

  <script language=vbscript for=BirthDate event=onmouseover>
<!--
    MsgBox "マウス ポインタを BirthDate コントロール上に移動しました!"
-->

同様に、次のコードは City コントロールを無効にします。

  <SCRIPT language=vbscript event=onmouseover for=City>
<!--
    Me.Disabled = True
-->

いくつかの組み込みオブジェクトにもアクセスできます。アクセスできる組み込みオブジェクトは、上記の「VBA を使ったデータ アクセス ページでの作業」セクションで参照した document オブジェクトと MSODSC オブジェクト、および window オブジェクトです。 window オブジェクトは、Web ブラウザで表示されるときに開かれているウィンドウを参照します。

より現実的な例を示すために、同僚の Office 開発者が提供してくれた以下のコードについて説明しましょう。このコードは、データ アクセス ページ上のアイテムの在庫が不足している場合に、アイテムの色を赤に変更します。

  <SCRIPT language=vbscript event=DataPageComplete(dscei) for=MSODSC>
<!--
' ほぼ在庫が不足しているアイテムを強調表示します。
Dim Sect
Dim DSCConst
Dim bandHTML
   
' Products GroupLevel オブジェクトで DataPage オブジェクトのイベントが起動されたことを確認します。
If (dscei.DataPage.GroupLevel.RecordSource = "Products") Then
    Set DSCConst = MSODSC.Constants
    Set Sect = dscei.DataPage.FirstSection
    ' そのイベントの DataPage オブジェクトの Section オブジェクトを調べます。   
    Do
        ' caption セクションは無視します。
        If (Sect.Type = DSCCconst.sectTypeHeader) then
            Set bandHTML = Sect.HTMLContainer      
      ' 在庫の単位を条件付で書式設定します。 
      ' 在庫数が 20 個以下の場合テキストの色を赤に変更します。
      If (CInt(bandHTML.children("UnitsInStock").innerText) <= 20) Then
          bandHTML.children("UnitsInStock").style.color = "Red"
          bandHTML.children("UnitPrice").style.color = "Red"
          bandHTML.children("ProductName").style.color = "Red"
      End If
        End If
     Set Sect = Sect.NextSibling
    Loop Until (Sect Is nothing)
End If
-->
</SCRIPT>

コードがどのように機能するか説明しましょう。コードの最初の行は、これが MSODSC オブジェクトの DataPageComplete イベントのスクリプトであることを示しています。 MSE で MSODSC オブジェクトのイベント ハンドラを記述する場合、すべての MSODSC オブジェクト イベントは DSCEventInfo オブジェクトを必要とするので、必要な DSCEventInfo オブジェクトをイベント ハンドラに渡すための引数を用意する必要があります。 MSE はこの引数を自動的には提供しません。したがって、MSE が生成するコードは次のようになります。

  <script language=vbscript event=DataPageComplete for=MSODSC>
<!--

-->
</script>

イベントが発生する前に、上記のコードを下記のように変更する必要があります。

  <script language=vbscript event=DataPageComplete(dscei) for=MSODSC >
<!--

-->
</script>

次に、3 つのオブジェクトが宣言されています。 Sect オブジェクトはデータ アクセスページの Section オブジェクトに対応し、 DSCConst オブジェクトは DSCEventInfo オブジェクトと共に使用できる数値定数を表します。 bandHTML オブジェクトは Sect オブジェクト内の HTML に対応します。

以下のコードに示すように、特定の詳細表示ボタンがクリックされ、展開されるセクションに Products レコード ソースと一致する一連のレコードが含まれている場合、最初のセクションが取得されます。

  If (dscei.DataPage.GroupLevel.RecordSource = "Products") Then
    Set DSCConst = MSODSC.Constants
    Set Sect = dscei.DataPage.FirstSection

最初のセクションが取得されると、コードは最初のセクションの HTML に移動して、 UnitsInStock フィールドの値が 20 個以下であるかどうかを調べます。

  If (CInt(bandHTML.children("UnitsInStock").innerText) <= 20) Then
    bandHTML.children("UnitsInStock").style.color = "Red"
    bandHTML.children("UnitPrice").style.color = "Red"
    bandHTML.children("ProductName").style.color = "Red"
End If

UnitsInStock フィールドの値が 20 個以下の場合、上記コードは UnitsInStock、UnitPrice、および ProductName のテキストの色を赤に変更しています。コードの最後の数行で、引き続きページのすべてのセクションを調べて、色の変更処理を繰り返しています。

さらに多くのスクリプトの例を参照したい場合には、 Meyyammai Subramanian が執筆した以下の 7 つの記事を参照してください。

Microsoft Office Data Source コントロール

Microsoft Office Data Source コントロール (MSODSC) については、このコラムで既に数回説明しました。 MSODSC は、データ ソースに接続し、接続したデータ ソースに対するコマンドを構築、実行し、実行したコマンドの結果を取得し、ページ上の要素に連結するために、データ アクセス ページで使用されます。また、MSODSC はユーザーが現在作業しているレコードを監視します。より複雑に連結されたページでは、MSODSC は階層的なグループを作成します。

MSODSC は、実行時に表示されるユーザー インターフェイスを持たない ActiveX コントロールです。新しいデータ アクセス ページを作成すると、 Access はページの元になる HTML に OBJECT 要素を挿入します。この HTML は、ページの HEAD 要素で MSODSC を定義しています。 OBJECT 要素の ID 属性は常に "MSODSC" に設定されます。

MSODSC は、DHTML (Dynamic HTML) オブジェクト モデルおよび ADO (ActiveX Data Objects) オブジェクト モデルからの機能を統合します。

使用できるすべての MSODSC メソッド、プロパティ、およびイベントを参照するには、 MSE のスクリプト ブロック内で「MSODSC」と入力し、続けてピリオドを入力します。

MSE で特定の MSODSC メソッド、プロパティ、またはイベントのヘルプを表示するには、F1 キーを押します。または Visual Basic Editor と同様に、 [ヘルプ] メニューの [Microsoft Script Editor ヘルプ] をクリックし、 MSE に MSODSC メソッド、プロパティ、またはイベントを入力し、キーワード内部にカーソルを合わせ F1 キーを押して状況依存ヘルプを表示できます。

MSODSC は、次の 2 つの主要なソースからヘルプを表示します。

  • DHTML, HTML & CSS Reference (htmlref.chm)
  • Microsoft Office Web コンポーネント Visual Basic リファレンス (owcvba10.chm)

「Office Web コンポーネント Visual Basic リファレンス」は、Office 開発者にとって馴染みがあるものですが、「DHTML, HTML & CSS Reference」は慣れるまで時間がかかるかもしれません。

MSODSC を使用した作業の詳細については、Mark Roberts が執筆した記事「データ アクセス ページでの Data Source コントロールのスクリプティング」をご覧ください。

関連情報

読みやすくなるように、このコラムで提供したすべての参考資料の一覧を以下にまとめました。

Paul Cornell は、MSDN Online Office Developer Center および Office Developer のドキュメント作成を担当しています。自由な時間には、遠歩きをしたり、プログラミングに関する最新書籍を読んだり、妻とカードゲームをしたり、あるいは 1 歳になる娘に本を読んであげたりしています。