このチュートリアルは説明のみを目的としています。チュートリアルに示されている接続文字列は、インストールされたデータベースには接続しません。チュートリアルで説明したプロセスを実行できるように、独自のサーバーに AdventureWorks データベースをセットアップする場合は、 このGitHubページを参照してください。
このチュートリアルでは、LabTalk置換表記とともにSQLエディタを使用してデータベースから Origin ワークシートにデータをインポートする方法を示します。さらに、インポートしたデータで棒グラフを作成します。次に、定義したLabTalk変数を変更して、ワークシートデータとプロットを更新します。
必要なOriginのバージョン:8.5.1 SR0
このチュートリアルでは、以下の項目について解説します。
サーバマシンnoho上にSQLサーバAdventureWorks2008を予めセットアップ済であることを想定しています。
Provider=SQLOLEDB.1; Password=labtalk2015; Persist Security Info=TRUE; USER ID=CONNECT; Initial Catalog=AdventureWorks2008; DATA SOURCE=noho
string myStartDate$ = "1/1/2003"; // 最初の日付置換 string myEndDate$ = "12/31/2003"; // 2番目の日付置換 string myStrName$ = "LineTotalFor2003"; // 名前
SELECT Production.ProductCategory.Name, LINETOALANDNAMEYEAR.%(myStrName$) FROM (SELECT SUM(SALEANDPRODUCTYEAR.LineTotal) AS %(myStrName$), Production.ProductSubcategory.ProductCategoryID FROM (SELECT SALEINFOYEAR.LineTotal, PRODUCTINFOYEAR.ProductSubcategoryID FROM (SELECT Sales.SalesOrderheader.OrderDate, Sales.SalesOrderDetail.LineTotal, Sales.SalesOrderDetail.ProductID FROM Sales.SalesOrderheader INNER JOIN Sales.SalesOrderDetail ON Sales.SalesOrderheader.SalesOrderID=Sales.SalesOrderDetail.SalesOrderID WHERE Sales.SalesOrderheader.OrderDate BETWEEN '%(myStartDate$)' AND '%(myEndDate$)') AS SALEINFOYEAR INNER JOIN (SELECT Production.Product.ProductID, Production.Product.ProductSubcategoryID FROM Production.Product) AS PRODUCTINFOYEAR ON SALEINFOYEAR.ProductID=PRODUCTINFOYEAR.ProductID) AS SALEANDPRODUCTYEAR INNER JOIN Production.ProductSubcategory ON SALEANDPRODUCTYEAR.ProductSubcategoryID=Production.ProductSubcategory.ProductSubcategoryID GROUP BY Production.ProductSubcategory.ProductCategoryID) AS LINETOALANDNAMEYEAR INNER JOIN Production.ProductCategory ON LINETOALANDNAMEYEAR.ProductCategoryID=Production.ProductCategory.ProductCategoryID
上の図で確認できるように、合計で3つのLabTalk変数がステートメントの中で使用されています。
LabTalk変数myStartDate$、myEndDate$、myStrName$ は、どの年のデータをデータベースからインポートするかをコントロールするために使用されます。他の年のデータをインポートする一つの方法として、この変数値をLabTalkサポート設定ダイアログで編集する方法があります。
string myStartDate$ = "1/1/2004"; // 最初の日付置換 string myEndDate$ = "12/31/2004"; // 2番目の日付の置換 string myStrName$ = "LineTotalFor2004"; // 名前
しかし、変数値を編集するためにSQLエディタを開く必要があるので、この方法はあまり便利ではありません。LabTalkサポート設定の修正のより良い方法は、グローバル変数を使用することです。そして、グローバル変数を編集すれば、SQLエディタを使用せずに再インポートできます。
string myStartDate$ = ""; // 最初の日付置換 string myEndDate$ = ""; // 2番目の日付置換 string myStrName$ = ""; // 名前 if(exist(startDate$, 18) == 18) // startDate$があるかどうか { myStartDate$ = startDate$; // あれば、それをmyStartDate$として使う } else { myStartDate$ = "1/1/2003"; // なければ、1/1/2003 を myStartDate$とする } if(exist(endDate$, 18) == 18) // endDate$があるかどうか { myEndDate$ = endDate$; // あれば、それをmyEndDate$として使う } else { myEndDate$ = "12/31/2003"; // なければ12/31/2003を使う } if(exist(strName$, 18) == 18) // strName$があるか { myStrName$ = strName$; // あれば、それを strName$として使う } else { myStrName$ = "LineTotalFor2003"; // なければLineTotalFor2003をstrName$とする }
string startDate$ = "1/1/2003"; // startDate$文字列変数を定義 string endDate$ = "12/31/2004"; //endDate$文字列変数を定義 string strName$ = "LineTotalFor2003and2004"; // strName文字列変数を定義 dbimport; // データベースからデータをインポート
Note: