QuickBooks Desktop のレポート機能を拡張する



CData Data Providers for QuickBooks Desktop を使用すると、QuickBooks Desktop で利用可能なほぼすべてのレポートをリクエストできます。レポートはビュー(読み取り専用テーブル)としてアクセスできます。この記事では、ADO.NET Provider を使用して QuickBooks のレポートに対して SQL コマンドを実行する方法を解説します。

レポートのクエリ

ADO.NET Provider を使用して、レポート内のデータを取得・検索できます。対応するストアドプロシージャを呼び出すことで、詳細なレポートを取得できます。さまざまなレポートタイプが利用可能です。例えば、以下のコマンドを実行すると標準的な損益計算書レポートを取得できます。

EXEC ReportGeneralSummary ReportType='PROFITANDLOSSSTANDARD'

レポートに対して SELECT クエリを実行するには、CreateSimpleReportSchema ストアドプロシージャを呼び出してスキーマ(ビュー定義)を生成します。スキーマはシンプルな XML ベースのファイルで、簡単に拡張できます。スキーマ内のレポートパラメータを変更することで、レポート全体を再生成せずに済みます。

レポートスキーマの生成

CreateSimpleReportSchema ストアドプロシージャを呼び出すことで、QuickBooks Desktop エディションで利用可能なほぼすべてのレポートのスキーマを生成できます。

ストアドプロシージャを呼び出す前に、まず Location 接続プロパティをテーブルスキーマの場所に設定する必要があります。これはインストールディレクトリ内の db サブフォルダーです。

Location プロパティを設定したら、必要な入力を指定して CreateSimpleReportSchema を呼び出します。例えば、標準損益計算書レポートを作成するには、ReportType を 'PROFITANDLOSSSTANDARD' に設定します。

EXEC CreateSimpleReportSchema ReportType=PROFITANDLOSSSTANDARD

再接続すると、プロバイダーが新しく作成されたスキーマを読み込みます。スキーマは、カラム定義と許可される値を含むシンプルな XML ベースの .rsd ファイルです。

.rsd ファイルを開くと、WHERE 句でカラムを使用する方法についての情報を簡単に確認できます。カラムは rsb:info セクション内で attr 属性を使用して定義されています。また、疑似カラムは input 属性で定義され、WHERE 句で使用できます。以下は、ReportProfitAndLossStandard ビューで使用可能なカラムの例です。

<rsb:script xmlns:rsb="http://www.rssbus.com/ns/rsbscript/2">

  <rsb:info title="ReportProfitAndLossStandard" description="Profit & Loss Standard Report.">
    <attr name="ID" xs:type="integer" readonly="true" key="true" desc="The row number." />
    <attr name="Label" xs:type="string" readonly="true" desc="The Label column of the ProfitAndLossStandard report." />
    <attr name="Dec_15_17" xs:type="double" readonly="true" desc="The Dec_15_17 column of the ProfitAndLossStandard report." />

    <input name="ReportPeriod"               desc="Report date range in the format fromdate:todate where either value may be omitted for an open-ended range (e.g., 2009-12-25:). Supported date format: yyyy-MM-dd." />
    <input name="ReportDateRangeMacro"       desc="A macro that can be specified for the report date range." value="ALL,TODAY,THISWEEK,THISWEEKTODATE,THISMONTH,THISMONTHTODATE,THISQUARTER,THISQUARTERTODATE,THISYEAR,THISYEARTODATE,YESTERDAY,LASTWEEK,LASTWEEKTODATE,LASTMONTH,LASTMONTHTODATE,LASTQUARTER,LASTQUARTERTODATE,LASTYEAR,LASTYEARTODATE,NEXTWEEK,NEXTFOURWEEKS,NEXTMONTH,NEXTQUARTER,NEXTYEAR" />
    <input name="AccountType"                desc="The specific type of account to request in the report." value="NONE,ACCOUNTSPAYABLE,ACCOUNTSRECEIVABLE,ALLOWEDFOR1099,APANDSALESTAX,APORCREDITCARD,ARANDAP,ASSET,BALANCESHEET,BANK,BANKANDARANDAPANDUF,BANKANDUF,COSTOFSALES,CREDITCARD,CURRENTASSET,CURRENTASSETANDEXPENSE,CURRENTLIABILITY,EQUITY,EQUITYANDINCOMEANDEXPENSE,EXPENSEANDOTHEREXPENSE,FIXEDASSET,INCOMEANDEXPENSE,INCOMEANDOTHERINCOME,LIABILITY,LIABILITYANDEQUITY,LONGTERMLIABILITY,NONPOSTING,ORDINARYEXPENSE,ORDINARYINCOME,ORDINARYINCOMEANDCOGS,ORDINARYINCOMEANDEXPENSE,OTHERASSET,OTHERCURRENTASSET,OTHERCURRENTLIABILITY,OTHEREXPENSE,OTHERINCOME,OTHERINCOMEOREXPENSE" />
    ...
  </rsb:info>

その後、SELECT ステートメントを使用してレポートをクエリできます。

SELECT * FROM ReportProfitAndLossStandard WHERE ReportPeriod = '1/1/2015:12/31/2015'

サーバーエクスプローラーでは、レポートは Views フォルダーに表示されます。

サンプルスキーマ

プロバイダーを使用した QuickBooks レポートへのアクセスをすぐに始められるよう、サンプルレポートスキーマをダウンロードできます。これらのスキーマを使用すると、売掛金エイジング詳細、損益明細、標準貸借対照表のレポートをすぐにクエリできます。.rsd ファイルをインストールディレクトリ内の db サブフォルダーにコピーし、Location プロパティをこのフォルダーに設定して再接続するだけです。