次の方法で共有


チュートリアル: Vision Clinic アプリケーションの作成

このチュートリアルでは、Visual Studio LightSwitch でのアプリケーション作成の全体的なプロセスを示します。LightSwitch の機能の多くを使用して、架空の Vision Clinic のアプリケーションを作成します。アプリケーションには、予定を管理し、請求書を作成するための機能が含まれています。

必須コンポーネント

PrescriptionContoso のデータベースをから MSDN Code Galleryダウンロードします。

手順

  • プロジェクトの作成

    アプリケーション プロジェクトを作成します。

  • テーブルを定義する

    患者、請求書、および請求書詳細エンティティを追加します。

  • 選択リストを作成する

    値の一覧を作成します。

  • リレーションシップの定義

    リンク関連テーブルです。

  • 別のエンティティを追加する

    予定エンティティを追加します。

  • 画面の作成

    患者を表示する画面を作成します。

  • アプリケーションの実行

    アプリケーションを実行して、データを入力します。

  • データベースに接続する

    外部データベースに接続します。

  • エンティティを変更する

    製品および製品リベート エンティティを変更します。

  • 一覧および詳細画面を作成する

    製品を表示する画面を作成します。

  • 画面のレイアウトを変更する

    [製品一覧] 画面のレイアウトを変更します。

  • 実行時に変更する

    実行中のアプリケーションで変更を行います。

  • クエリの作成

    パラメーター化されたクエリを作成して、画面にバインドします。

  • 計算済みフィールドを追加する

    計算済みフィールドを作成して、画面に追加します。

  • データベース間の関係を作成する

    異なるデータベース内のエンティティ間の仮想の関係を作成します。

  • 請求書画面を作成する

    請求書を表示する画面を作成します。

  • 請求書画面を変更する

    実行中のアプリケーションでの請求書画面のレイアウトを変更します。

  • 画面のロジックを追加する

    日付を計算するコードを記述します。

  • さらに計算済みフィールドを追加する

    さらに計算済みフィールドを作成して、請求書画面に追加します。

  • アプリケーションを配置する

    2 層のデスクトップ アプリケーションとしてアプリケーションを発行します。

プロジェクトの作成

LightSwitch アプリケーションを作成する場合の最初の手順は、新しいプロジェクトを開くことです。

プロジェクトを作成するには

  1. Windows の [スタート] メニューから、Visual Studio 2012 をクリックします。

    LightSwitch デザイナーが表示されます。

  2. [ファイル] メニューの [新しいプロジェクト] をクリックします。

    [新しいプロジェクト] ダイアログ ボックスが表示されます。

  3. [インストールされたテンプレート] リストで、LightSwitch ノードを選択します。

  4. 中央のペインで、[LightSwitchApplication (VB)] または [LightSwitch] を選択します。アプリケーション (C#).

  5. [名前] フィールドに「Vision Clinic」と入力し、[OK] をクリックします。

    [Vision Clinic デザイナー] ウィンドウが表示され、プロジェクトに必要なフォルダーが [ソリューション エクスプ ローラー] ウィンドウに追加されます。

    Vision Clinic プロジェクト

テーブルを定義する

LightSwitch では、テーブルはエンティティと呼ばれ、データが表すオブジェクト (この場合、患者) をモデル化します。LightSwitch アプリケーションは、「フォーム オーバー データ」モデル、つまり、1 つまたは複数のソースからのデータを表示するフォームまたは画面を使用します。LightSwitch には、アプリケーションのデータを格納するために使用できる組み込みのデータベースが含まれています。次の手順では、患者の情報を格納するデータベース テーブルを作成します。

Patient エンティティを作成するには

  1. [Vision Clinic デザイナー] ウィンドウで [新しいテーブルの作成] をクリックします。

    データ デザイナーが表示され、Solution Explorer の [データ ソース] の下に [Table1Items] ノードが表示されます。

  2. [プロパティ] ウィンドウで、[名前] プロパティを選択して「Patient」と入力してから、Enter キーを押します。

    データ デザイナーのタイトル バーの名前が「患者」に変わり、ソリューション エクスプローラー内の名前が「患者」に変わります。

  3. [名前] 列で [<プロパティの追加>] をクリックして、「FirstName」と入力してから、Enter キーを押します。

    適切なデータ型、String が [型] 列に表示され、[必要] フィールド チェック ボックスがオンになっています。患者には、名前が必要です。

  4. [名前] 列で [<プロパティの追加>] をクリックして、「LastName」と入力します。

  5. [名前] 列で [<プロパティの追加>] をクリックして、「Street」と入力します。

  6. [名前] 列で [<プロパティの追加>] をクリックして、「Street2」と入力します。

  7. [必要] 列でチェック ボックスをオフにします。

    番地の 2 行目は省略可能です。

  8. [名前] 列で [<プロパティの追加>] をクリックして、「City」と入力します。

  9. [名前] 列で [<プロパティの追加>] をクリックして、「State」と入力します。

  10. [名前] 列で [<プロパティの追加>] をクリックして、「Zip」と入力します。

  11. [名前] 列で [<プロパティの追加>] をクリックして、「PrimaryPhone」と入力します。

  12. [種類] 列で、ドロップダウン リストの [PhoneNumber] を選択します。

    PhoneNumber は、電話番号の入力および書式設定の一般的なパターンを表すカスタム ビジネス タイプです。

  13. [必要] 列でチェック ボックスをオフにします。

  14. [名前] 列で [<プロパティの追加>] をクリックして、「SecondaryPhone」と入力します。

  15. [種類] 列で、ドロップダウン リストの [PhoneNumber] を選択します。

  16. [必要] 列でチェック ボックスをオフにします。

  17. [名前] 列で [<フィールドの追加>] をクリックして、「Email」と入力します。

  18. [種類] 列で、ドロップダウン リストの [EmailAddress] を選択します。

    EmailAddress は、正しくフォーマットされた電子メール アドレスを表す、もう 1 つのカスタム ビジネス タイプです。

  19. [必要] 列でチェック ボックスをオフにします。

  20. [名前] 列で [<プロパティの追加>] をクリックして、「PolicyNumber」と入力します。

  21. [プロパティ] ウィンドウで、[最大長] プロパティを選択して「12」と入力します。

    これにより、ユーザーは、12 文字以上のポリシー数を入力できなくなります。

    Patient エンティティ

  22. [ファイル] メニューの [すべてを保存] をクリックして、作業を保存します。

次に、請求書と請求書の明細行を表す 2 つのエンティティをさらに作成します。

Invoice および InvoiceDetail エンティティを作成するには

  1. ソリューション エクスプローラーで Data Sources をクリックします。[プロジェクト] メニューの [テーブルの追加] をクリックします。

    データ デザイナーの新しいインスタンスが表示されます。

  2. [プロパティ] ウィンドウで、[名前] プロパティを選択します。「Invoice」と入力して、Enter キーを押します。

  3. [名前] 列で [<プロパティの追加>] をクリックします。「InvoiceDate」と入力して、Enter キーを押します。

  4. [種類] 列で、ドロップダウン リストの [DateTime] を選択します。

  5. [名前] 列で [<プロパティの追加>] をクリックします。「InvoiceDue」と入力して、Enter キーを押します。

  6. [種類] 列で、ドロップダウン リストの [DateTime] を選択します。

  7. [必要] 列でチェック ボックスをオフにします。

  8. [名前] 列で [<プロパティの追加>] をクリックします。「InvoiceStatus」と入力して、Enter キーを押します。

  9. [種類] 列で、ドロップダウン リストの [Integer] を選択します。

  10. [名前] 列で [<プロパティの追加>] をクリックします。「ShipDate」と入力して、Enter キーを押します。

  11. [種類] 列で、ドロップダウン リストの [DateTime] を選択します。

    Invoice エンティティ

  12. ソリューション エクスプローラーで Data Sources をクリックします。[プロジェクト] メニューの [テーブルの追加] をクリックします。

  13. [プロパティ] ウィンドウで、[名前] プロパティを選択して「InvoiceDetail」と入力してから、Enter キーを押します。

  14. [名前] 列で [<プロパティの追加>] をクリックして、「Quantity」と入力してから、Enter キーを押します。

  15. [種類] 列で、ドロップダウン リストの [Integer] を選択します。

  16. [名前] 列で [<プロパティの追加>] をクリックして、「UnitPrice」と入力します。

  17. [種類] 列で、ドロップダウン リストの [Money] を選択します。

    Money は、通貨を示して正しくフォーマットする、もう 1 つのカスタム ビジネス タイプです。

    InvoiceDetails エンティティ

  18. [ファイル] メニューの [すべてを保存] をクリックして、作業を保存します。

選択リストを作成する

次の手順では、Invoice エンティティの選択リストを作成します。選択リストを使用すると、選択する値の固定セットをユーザーに表示できます。

選択リストを作成するには

  1. ソリューション エクスプローラーで、[請求書] をダブルクリックします。

  2. データ デザイナー[InvoiceStatus] フィールドを選択します。

  3. [プロパティ] ウィンドウで、[選択リスト] リンクをクリックします。

    [選択リスト] ダイアログ ボックス

    [選択リスト] ダイアログ ボックスが表示されます。

  4. [選択リスト] ダイアログ ボックスで、次の値を入力して、[OK] をクリックします。

    価値

    [表示名]

    0

    アクティブ

    1

    支払い済み

    2

    期限超過

    このフィールドが画面に表示されるときは、入力した 3 つの [表示名] 値を含むドロップダウン リストがユーザーに表示されます。

  5. [ファイル] メニューの [すべてを保存] をクリックして、作業を保存します。

リレーションシップの定義

次の手順では、PatientInvoiceInvoiceDetail の各エンティティ間のリレーションシップを定義します。

リレーションシップを定義するには

  1. ソリューション エクスプローラーで、[請求書] をダブルクリックします。

  2. データ デザイナーのツール バーの [リレーションシップ] をクリックします。

    [新しいリレーションシップの追加] ダイアログ ボックスが表示されます。

  3. [新しいリレーションシップの追加] ダイアログ ボックスで、[名前] 行の [宛先] 列を選択します。[Patient] を選択し、[OK] をクリックします。

    Patient および Invoice エンティティの間に、一対多のリレーションシップが作成されます。患者は、複数の請求書を持つことができます。

  4. データ デザイナーのツール バーの [リレーションシップ] をクリックします。

    [新しいリレーションシップの追加] ダイアログ ボックスが表示されます。

  5. [新しいリレーションシップの追加] ダイアログ ボックスで、[名前] 行の [宛先] 列を選択して、[InvoiceDetail] を選択します。

  6. [多重度] 行の [取得元] 列を選択して、[1] を選択します。

  7. [多重度] 行の [宛先] 列を選択し、[多] を選択してから、[OK] をクリックします。

    Invoice および InvoiceDetail エンティティの間に、一対多のリレーションシップが作成されます。請求書は、複数の請求書詳細を含むことができます。

    Invoice と InvoiceDetail のリレーションシップ

  8. [ファイル] メニューの [すべてを保存] をクリックして、作業を保存します。

予定エンティティを作成する

次の手順では、エンティティをもう 1 つ追加して予定を表し、リレーションシップと選択リストを追加します。

Appointment エンティティを追加するには

  1. ソリューション エクスプローラーで、Data Sources をクリックして、[プロジェクト] メニューの [テーブルの追加] をクリックします。

  2. [プロパティ] ウィンドウで、[名前] を "Appointment" に変更します。

  3. データ デザイナーで、[名前] 列の [<プロパティの追加>] をクリックして、「AppointmentTime」と入力します。

  4. [種類] 列で、ドロップダウン リストの [DateTime] を選択します。

  5. [名前] 列で [<プロパティの追加>] をクリックして、「AppointmentType」と入力します。

  6. [種類] 列で、ドロップダウン リストの [Short Integer] を選択します。

  7. [名前] 列で [<プロパティの追加>] をクリックして、「DoctorNotes」と入力します。

  8. 既定の種類、[文字列] を受け入れ、[必要] チェック ボックスをオフにします。

  9. データ デザイナーのツール バーの [リレーションシップ] をクリックします。

  10. [新しいリレーションシップの追加] ダイアログ ボックスで、[名前] 行の [宛先] 列を選択します。[Patient] を選択し、[OK] をクリックします。

    Patient および Appointment エンティティの間に、一対多のリレーションシップが作成されます。患者は、複数の予定を入れることができます。

  11. データ デザイナーで AppointmentType フィールドを選択します。

  12. [プロパティ] ウィンドウで、[選択リスト] リンクをクリックします。

    [選択リスト] ダイアログ ボックスが表示されます。

  13. [選択リスト] ダイアログ ボックスで、次の値を入力して、[OK] をクリックします。

    価値

    [表示名]

    0

    年間

    1

    フォローアップ

    2

    緊急

    Appointment エンティティ

  14. [ファイル] メニューの [すべてを保存] をクリックして、作業を保存します。

画面の作成

次の手順では、患者の一覧を表示する画面を作成します。

画面を作成するには

  1. ソリューション エクスプローラー[画面] ノードをクリックして、[プロジェクト] メニューの [画面の追加] をクリックします。

    [新しい画面の追加] ダイアログ ボックスが表示されます。

  2. [画面テンプレートの選択] リストの [編集可能なグリッド画面] を選択します。

  3. [画面名] テキスト ボックスで、「PatientList」と入力します。

  4. [画面データ] ドロップダウン リストを選択して [患者] を選択します。[OK] をクリックします。

    PatientList 画面の定義

    画面デザイナーが開き、画面レイアウトの階層構造が表示されます。

  5. [ファイル] メニューの [すべてを保存] をクリックして、作業を保存します。

アプリケーションを実行してデータを入力する

これで、アプリケーションが機能します。次の手順では、アプリケーションを実行して、いくつかのデータを入力します。

アプリケーションを実行するには

  1. F5 キーを押してアプリケーションを起動します。

  2. 実行中のアプリケーションで [PatientList] 画面を選択して、追加 (+) ボタンをクリックします。

    [新しい患者の追加] ダイアログ ボックスが表示されます。

  3. 新しい患者のデータを入力します。[Email] フィールドに、john#example.com などの無効な値を入力します。

    無効な電子メール アドレス

    フィールドから離れると、赤い枠線が表示されます。EmailAddress ビジネス タイプには、正しく書式設定された電子メール アドレスを検出できる組み込みの検証規則があります。

  4. エラーを修正し、データ入力を完了して、[OK] をクリックします。

    アプリケーション ツール バーの [保存] ボタンが有効になります。

  5. 追加 [+…] ボタンをクリックします。2 番目の患者のデータを追加して [OK] をクリックします。

  6. [保存] をクリックしてデータを保存します。

    これで [PatientList] グリッドの列を並べ替えることができ、任意の列で並べ替えを行うことができます。

  7. 実行中のアプリケーション ウィンドウの右上隅にある [閉じる] をクリックして、デザイン モードに戻ります。

  8. [ファイル] メニューの [すべてを保存] をクリックして、作業を保存します。

データベースに接続する

次の手順では、製品情報を含む外部データベースに接続します。

[!メモ]

この手順を実行する前に、PrescriptionContoso データベースをダウンロードしてインストールする必要があります。データベースはから MSDN Code Galleryダウンロードできます。データベースをインストールするには、Install.htm ファイルの指示に従ってください。

データ ソースにアタッチするには

  1. ソリューション エクスプローラーで、[データ ソース] ノードを選択します。

  2. [プロジェクト] メニューの [データ ソースの追加] をクリックします。

    データ ソースの添付ウィザードが開きます。

  3. データ ソースの添付ウィザードで、[データベース] をクリックし、[次へ] をクリックします。

    [データ ソースの選択] ダイアログ ボックスが開きます。

    [!メモ]

    LightSwitch のデータベースに接続したことがある場合は、このダイアログ ボックスが表示されず、次の手順を省略できます。

  4. [データ ソースの選択] ダイアログ ボックスで、[Microsoft SQL Server (SQL Client)] をクリックして [続行] をクリックします。

    [接続のプロパティ] ダイアログ ボックスが表示されます。

  5. [接続プロパティ] ダイアログ ボックスで、続くテーブルに値を入力して、[OK] をクリックします。

    フィールド

    価値

    サーバー名

    (localdb)\v11.0

    サーバーにログオンする

    Windows 認証の使用

    [データベースの選択または入力]

    C:\Temp\PrescriptionContoso.mdf

    接続プロパティ

    [データベース オブジェクトの選択] ウィザード ページが表示されます。

  6. [テーブル] ノードを展開します。

  7. [製品] および [ProductRebate] テーブルを選択して、[完了] をクリックします。

    C_TEMP_PRESCRIPTIONCONTOSO_MDFData データ ソースがプロジェクトに追加され、ProductsProductRebates のためのエンティティが作成されます。

  8. ソリューション エクスプローラーで、[C_TEMP_PRESCRIPTIONCONTOSO_MDFData] を右クリックし、[名前の変更] をクリックして、「PrescriptionContoso」と入力します。

  9. [ファイル] メニューの [すべてを保存] をクリックして、作業を保存します。

Products および ProductRebate エンティティを変更する

次の手順では、ProductRebate および Products エンティティを変更します。

ProductRebate および Products のエンティティを変更するには

  1. ソリューション エクスプローラー[ProductRebates] ノードをクリックします。

  2. [リベート] を選択して、[種類][通貨] に変更します。

  3. ソリューション エクスプローラー[製品] ノードをダブルクリックします。

  4. データ デザイナーで、[MSRP] フィールドを選択して、[型][通貨] に変更します。

  5. ProductImage フィールドを選択し、[種類][イメージ] に変更します。

  6. [ファイル] メニューの [すべてを保存] をクリックして、作業を保存します。

一覧および詳細画面を作成する

次の手順では、製品情報を表示する画面を作成します。

一覧および詳細画面を作成するには

  1. ソリューション エクスプローラー[画面] ノードを選択します。[プロジェクト] メニューの [画面の追加] をクリックします。

  2. [新しい画面の追加] ダイアログ ボックスで、[画面テンプレートの選択] リストの [一覧および詳細画面] を選択します。

  3. [画面名] フィールドに、「ProductList」と入力します。

  4. [画面データ] ドロップダウン リストを選択して [PrescriptionContoso.Products] を選択します。

  5. [含める追加データ] リストで、[Product Details] および [ProductRebates] チェック ボックスの両方を選択して [OK] をクリックします。

画面のレイアウトを変更する

次の手順では、[ProductList] 画面のレイアウトを変更します。

レイアウトをカスタマイズするには

  1. 画面デザイナー画面コンテンツ ツリー[行レイアウト | 製品詳細] ノードを選択します。

  2. [行レイアウト] ドロップダウン リストで [画像とテキスト] を選択します。

  3. [画像とテキスト] ノードの下で、各フィールドのドロップダウン リストから次の値を選択します。

    フィールド

    価値

    (画像)

    製品イメージ

    (タイトル)

    製品名

    (サブタイトル)

    MSRP

    (説明)

    説明

    画像およびテキスト レイアウト

  4. F5 キーを押してアプリケーションを実行し、結果を確認します。

  5. 実行中のアプリケーションで、[ProductList] メニューをクリックして画面を表示します。

    アプリケーションを開いたままにします。次の手順では、実行中のアプリケーションを変更します。

実行中のアプリケーションで変更を行う

次の手順では、アプリケーションの実行中に [製品一覧] 画面を変更します。

実行時に、画面をカスタマイズするには

  1. [製品リスト] の画面で、右下隅の [デザイン画面] のをクリックします。

  2. 左側のペインで、[データ グリッド | 製品リベート] ノードを選択します。

  3. [プロパティ] ウィンドウで、[表示名] プロパティを [Contoso のリベート] に変更します。

    名前は、アプリケーション ウィンドウでも変わります。

  4. [MSRP] フィールドを選択して、[説明] プロパティを「リベート前の候補価格」に変更します。

    デザイン時カスタマイズ

  5. [保存] をクリックして、実行中のアプリケーションに戻り、変更内容を表示します。マウス ポインターを [MSRP] フィールドの上に置くと、説明が表示されます。

  6. 実行中のアプリケーション ウィンドウの右上隅にある [閉じる] をクリックして、デザイン モードに戻ります。

  7. [ファイル] メニューの [すべてを保存] をクリックして、作業を保存します。

クエリを作成する

次の手順では、パラメーター化されたクエリを作成して画面にバインドします。

パラメーター化されたクエリを作成するには

  1. ソリューション エクスプローラー[製品] ノードを選択します。[プロジェクト] メニューの [クエリの追加] をクリックします。

    クエリ デザイナーが表示されます。

  2. [プロパティ] ウィンドウで、[名前] フィールドを選択して「RelatedProducts」と入力します。

  3. クエリ デザイナーで、[フィルターの追加] をクリックします。

    フィルター条件が [フィルター] セクションに追加されます。

  4. 2 番目のドロップダウン リストで [カテゴリ] を選択します。

  5. 4 番目のドロップダウン リストで [パラメーター] を選択します。

  6. 5 番目のドロップダウン リストで [新規追加] をクリックします。

    Category という名前のタイプ String の新しい Parameter が [パラメーター] セクションに追加されます。

    RelatedProducts クエリ

  7. ソリューション エクスプローラー[ProductList] ノードをダブルクリックして、画面デザイナーを開きます。

  8. 画面デザイナーのツール バーで [データ項目の追加] をクリックします。

    [データ項目の追加] ダイアログ ボックスが表示されます。

  9. [データ項目の追加] ダイアログ ボックスで [クエリ] をクリックします。[名前] 列で [PrescriptionContoso.RelatedProducts] を選択して、[OK] をクリックします。

    [RelatedProducts] ノードが、左側のペインに表示されます。

  10. [クエリ パラメーター] の下にある [カテゴリ] ノードを選択します。

  11. [プロパティ] ウィンドウで、[Products.SelectedItem.Category] プロパティを選択して「Products.SelectedItem.Category」と入力します。

  12. 中央ペインで、[DataGrid |Contoso のリベート] ノードの下にある [追加] ノードを展開して、[関連商品] をクリックします。

    関連製品の追加

  13. F5 キーを押してアプリケーションを実行し、結果を確認します。

    [製品一覧] 画面を開くと、選択した各製品について関連製品の一覧が表示されています。

  14. 実行中のアプリケーション ウィンドウの右上隅にある [閉じる] をクリックして、デザイン モードに戻ります。

  15. [ファイル] メニューの [すべてを保存] をクリックして、作業を保存します。

計算済みフィールドを追加する

次の手順では、計算値を使用するフィールドを追加します。計算値は、リベート金額を適用した後の製品の価格になります。

計算済みフィールドを追加するには

  1. ソリューション エクスプローラー[Products] エンティティ ノードをダブルクリックします。

  2. データ デザイナー[<プロパティの追加>] をクリックします。「CurrentPrice」と入力して、[タブ] をクリックします。

  3. [種類] 列で、ドロップダウン リストの [Money] を選択します。

    [プロパティ] ウィンドウで、[全般] の下の [Is Computed] プロパティは既定で選択されています。

  4. [プロパティ] ウィンドウで、[Edit メソッド] リンクをクリックします。

    コード エディターが表示され、CurrentPrice_Compute メソッドが表示されます。

  5. イベント ハンドラーに次のコードを追加します。

    Dim rebates As Decimal
        For Each item In ProductRebates
            If item.RebateStart <= Date.Today And item.RebateEnd >= Date.Today Then
                rebates = rebates + item.Rebate
            End If
        Next
    
        result = Me.MSRP - rebates
    
    decimal rebates = default(decimal);
    
    
                foreach (var item in ProductRebates)
                {
                    if (item.RebateStart <= System.DateTime.Today && item.RebateEnd >= System.DateTime.Today)
                    {
                        rebates += item.Rebate.Value;
                    }
                }
    
                result = this.MSRP - rebates;
    

    現在の価格を計算するコード

  6. [ファイル] メニューの [すべてを保存] をクリックして、作業を保存します。

次の手順では、[ProductList] 画面に計算済みフィールドを追加します。

画面に計算済みフィールドを追加するには

  1. ソリューション エクスプローラーで、[ProductList] 画面ノードをダブルクリックします。

  2. 画面デザイナーの左側のペインで、[CurrentPrice] ノードを選択して、中央ペインの [(説明) |説明] ノードの下にドラッグします。

    ドラッグ アンド ドロップ後の現在の価格

  3. F5 キーを押してアプリケーションを実行し、結果を確認します。

  4. [ProductList] 画面で、[リベート] または [MSRP] フィールドを編集します。CurrentPrice が再計算されます。[閉じる] をクリックして、デザイン モードに戻ります。

  5. 実行中のアプリケーション ウィンドウの右上隅にある [閉じる] をクリックして、デザイン モードに戻ります。

  6. [ファイル] メニューの [すべてを保存] をクリックして、作業を保存します。

データベース間の関係を作成する

次の手順では、2 つの異なるデータベース内のエンティティ間の仮想のリレーションシップを作成し、2 つの異なるソースからのデータを単一の一覧および詳細画面に表示します。

データベース間の関係を作成するには

  1. ソリューション エクスプローラー[InvoiceDetails] エンティティ ノードをダブルクリックします。

  2. データ デザイナーでツール バーの [リレーションシップ] をクリックします。

  3. [新しいリレーションシップの追加] ダイアログ ボックスで、[宛先] 列の [名前] フィールドを選択して、[Product] を選択します。

    新しいセクションが、ダイアログ ボックスの下部に表示されます。これは、2 つのエンティティ内の関連するフィールドを示しています。必要に応じて、関連するフィールドを同じデータ型の別のフィールドに変更するか、または複数の関連フィールドをキーとして定義します。

    データベース間のリレーションシップ

  4. [OK] をクリックしてリレーションシップを保存します。

    新しいリレーションシップは、デザイナーで点線として表示されます。これは、エンティティが異なるデータ ソースにあることを示します。この場合、InvoiceDetails は組み込みデータベースで、Products は PrescriptionContoso データベースです。

  5. [ファイル] メニューの [すべてを保存] をクリックして、作業を保存します。

請求書を表示する画面を作成する

次の手順では、請求書を表示する新しい画面を作成します。

画面を作成するには

  1. ソリューション エクスプローラー[画面] ノードを選択します。[プロジェクト] メニューの [画面の追加] をクリックします。

  2. [新しい画面の追加] ダイアログ ボックスで、[画面テンプレートの選択] リストの [一覧および詳細画面] を選択します。

  3. [画面名] テキスト ボックスで、「InvoiceScreen」と入力します。

  4. [画面データ] ドロップダウン リストを選択して [請求書] を選択します。

  5. [含める追加データ] リストで、[Invoice Details] および [Invoice InvoiceDetails] チェック ボックスをオンにして [OK] をクリックします。

    InvoiceScreen レイアウト

  6. [データ グリッド行 | 請求書詳細] ノードを展開します。[Product Product ID] ノードを選択して、それを削除します。

  7. フィールドの順序を変更するには、[UnitPrice] ノードをクリックして、[製品] ノードの下にドラッグします。

  8. F5 キーを押してアプリケーションを実行します。 メニューで [請求書画面] をクリックして、画面を表示します。

  9. [請求書] ペインで、追加 [+…] ボタンをクリックします。

    いくつかの請求書データを入力します。[InvoiceStatus] フィールドで値のドロップダウン リストが提供され、[患者] フィールドには、患者の一覧を含むダイアログ ボックスを開くボタンが含まれています。

  10. [請求書詳細] ペインで、追加 (+) ボタンをクリックします。

    いくつかの請求書詳細データを入力します。[製品] フィールドは、PrescriptionContoso データベースにある製品のドロップダウン リストを提供しています。

  11. [保存] をクリックして請求書データを保存します。

  12. アプリケーションを開いたままにします。次の手順では、実行中のアプリケーションを変更します。

請求書画面を変更する

次の手順では、実行中のアプリケーションの [請求書] 画面を変更します。

実行中のアプリケーションで画面を変更するには

  1. [請求書画面] の画面で、右上隅にある [デザイン画面] をクリックします。

  2. 左側のペインで、[リスト | 請求書] ノードを選択します。[一覧] ドロップダウン リストから [DataGrid] を選択します。

  3. [患者] ノードを選択します。左のマージンにある [MoveUp] 矢印を使用して、[請求書の日付] ノードの上に移動します。

    カスタマイズした請求書画面

  4. [保存] をクリックして、実行中のアプリケーションに戻り、変更内容を表示します。

  5. 実行中のアプリケーション ウィンドウの右上隅にある [閉じる] をクリックして、デザイン モードに戻ります。

  6. [ファイル] メニューの [すべてを保存] をクリックして、作業を保存します。

画面のロジックを定義する

次の手順では、請求書の日付の既定のロジックを定義するコードを追加します。

画面のロジックを定義するには

  1. ソリューション エクスプローラー[Invoices] エンティティ ノードをダブルクリックします。

  2. データ デザイナーで、ツール バーの [コードの記述] ドロップダウン リストをクリックします。[Invoice_Created] リンクをクリックします。

    コード エディターが開き、Invoice_Created メソッドが表示されます。

  3. Invoice_Created メソッドで、次のコードを追加して、日付の既定の動作を設定します。

    InvoiceDate = Date.Today
    InvoiceDue = Date.Today.AddDays(30)
    ShipDate = Date.Today.AddDays(3)
    
    InvoiceDate = System.DateTime.Today;
    InvoiceDue = System.DateTime.Today.AddDays(30);
    ShipDate = System.DateTime.Today.AddDays(3);
    
  4. ソリューション エクスプローラー[Invoices] エンティティ ノードをダブルクリックします。

  5. データ デザイナーで InvoiceDate フィールドを選択します。

  6. ツール バーの [コードの記述] ドロップダウン リストをクリックして、[InvoiceDate_Changed] リンクをクリックします

  7. InvoiceDate_Changed メソッドで、InvoiceDate が変更されたときに日付を更新するために、次のコードを追加します。

    InvoiceDue = InvoiceDate.AddDays(30)
    ‘ If the ShipDate is earlier than the new InvoiceDate, update it.
    If ShipDate < InvoiceDate Then
        ShipDate = InvoiceDate.AddDays(2)
    End If
    
    InvoiceDue = InvoiceDate.AddDays(30); 
        // If the ShipDate is earlier than the new InvoiceDate, update it
    if (ShipDate < InvoiceDate)
        {
            ShipDate = InvoiceDate.AddDays(2);
        }
    
  8. ソリューション エクスプローラー[InvoiceDetails] ノードをダブルクリックします。

  9. データ デザイナーで、[製品] フィールドを選択し、ツール バーの [コードの記述] ドロップダウン リストをクリックしてから、[Product_Changed] リンクをクリックします。

  10. コード エディターで、次のコードを追加して、単価と既定の数量を設定します。

    UnitPrice = Product.CurrentPrice
    Quantity = 1
    
    UnitPrice = Product.CurrentPrice;
    
    Quantity = 1;
    
  11. F5 キーを押してアプリケーションを実行し、変更を確認します。

    [請求書] 画面を開き、新しい請求書を追加します。日付フィールド、価格、数量が自動的に更新されます。

  12. [保存] をクリックして変更内容を保存します。

  13. 実行中のアプリケーション ウィンドウの右上隅にある [閉じる] をクリックして、デザイン モードに戻ります。

  14. [ファイル] メニューの [すべてを保存] をクリックして、作業を保存します。

さらに計算済みフィールドを追加する

次の手順では、SubTotal、Tax、Totals の計算済みフィールドを、InvoiceDetails および Invoices エンティティに追加します。

計算済みフィールドを追加するには

  1. ソリューション エクスプローラー[InvoiceDetails] エンティティ ノードをダブルクリックします。

  2. データ デザイナーで、[<プロパティの追加>] をクリックして「SubTotal」と入力してから、[Tab] をクリックします。

  3. [種類] 列で、ドロップダウン リストの [Money] を選択します。

  4. [プロパティ] ウィンドウで、[全般プロパティ] の下の [IsComputed] チェック ボックスをオンにします。

  5. [Edit メソッド] リンクをクリックします。

    コード エディターが表示され、SubTotal_Compute メソッドが表示されます。

  6. SubTotal を計算するために次のコードを追加します。

    result = Quantity * UnitPrice
    
    result = Quantity * UnitPrice;
    
  7. ソリューション エクスプローラー[Invoices] エンティティ ノードをダブルクリックします。

  8. データ デザイナーで、[<プロパティの追加>] をクリックして「Tax」と入力してから、[Tab] をクリックします。

  9. [種類] 列で、ドロップダウン リストの [Money] を選択します。

  10. [プロパティ] ウィンドウで、[IsComputed] チェック ボックスをオンにします。

  11. [Edit メソッド] リンクをクリックします。

    コード エディターが開き、Tax_Compute メソッドが表示されます。

  12. Tax_Compute メソッドを次のコードに置き換えて、Tax を計算します。

    Private Sub Tax_Compute(ByRef result As Decimal)
        Result =  GetSubTotal() * 0.095
    End Sub
    Protected Function GetSubTotal() As Decimal
        GetSubtotal = 0
        For Each item In InvoiceDetails
            GetSubTotal = GetSubTotal + item.SubTotal
        Next
    End Function
    
    partial void Tax_Compute(ref decimal result)
        {
            result = GetSubTotal() * (decimal)0.095;
        }
    protected decimal GetSubTotal()
        {
            return this.InvoiceDetails.Sum(i => i.SubTotal);
        }
    
  13. ソリューション エクスプローラー[Invoices] エンティティ ノードをダブルクリックします。

  14. データ デザイナー[<プロパティの追加>] をクリックします。「Total」と入力して、[タブ] をクリックします。

  15. [種類] 列で、ドロップダウン リストの [Money] を選択します。

  16. [プロパティ] ウィンドウで、[IsComputed] チェック ボックスをオンにします。

  17. [Edit メソッド] リンクをクリックします。

    コード エディターが開き、Total_Compute メソッドが表示されます。

  18. Tax を計算するために次のコードを追加します。

    result = GetSubTotal() + Tax
    
    result = GetSubTotal() + Tax;
    
  19. [ファイル] メニューの [すべてを保存] をクリックして、作業を保存します。

次の手順では、[Invoices] 画面に新しいフィールドを追加します。

画面にフィールドを追加するには

  1. ソリューション エクスプローラー[InvoiceScreen] 画面ノードをダブルクリックします。

  2. 中央のペインで、[行レイアウト | Invoice Details] ノードを選択して展開します。

  3. [追加] ドロップダウンを選択して展開し、[Tax] を選択します。

    [垂直スタック | InvoiceDetails] セクションに [税] フィールドが追加されます。

  4. [追加] ドロップダウンをもう一度選択し、[Total] フィールドを選択します。

  5. F5 キーを押してアプリケーションを実行し、結果を確認します。

    [請求書画面] の画面を開きます。各請求書の行で、[税][合計] フィールドが表示されます。

  6. [デザイン画面] をクリックして、カスタマイズ モードに変更します。

  7. 左のペインで、[データ グリッド行 | 請求書詳細] ノードを選択して展開します。

  8. [追加] ドロップダウンをクリックして、[小計] を選択します。

  9. [保存] をクリックして変更を保存します。これで、[SubTotal] フィールドが [請求書詳細] グリッドに表示されます。

    更新された請求書画面

  10. 実行中のアプリケーション ウィンドウの右上隅にある [閉じる] をクリックして、デザイン モードに戻ります。

  11. [ファイル] メニューの [すべてを保存] をクリックして、作業を保存します。

アプリケーションを配置する

次の手順では、2 層のデスクトップ アプリケーションとしてアプリケーションを配置します。

2 層のデスクトップ アプリケーションを発行するには

  1. ソリューション エクスプ ローラーで、[Vision Clinic] ノードを選択して、[ビルド] メニューの [Vision Clinic の発行] をクリックします。

    LightSwitch 公開アプリケーション ウィザードが表示されます。

  2. [LightSwitch 発行ウィザードへようこそ] ページで、[デスクトップ] を選択していることを確認して [次へ] をクリックします。

  3. [アプリケーション サービス] ページで、[ローカル] を選択していることを確認してから、[次へ] をクリックします。

  4. [発行の設定を指定] ページで [アプリケーション ファイルを配置する場所] フィールドを選択して、「C\Publish」と入力します。

  5. [既定のデータベースを発行する方法] セクションで [データベースに直接発行する] を選択して [次へ] をクリックします。

  6. [LightSwitch アプリケーション データベース - SQL データベース接続] ページで、既定の接続文字列値を受け入れて [次へ] をクリックします。

  7. [必須コンポーネントのインストール] ページで既定の設定を受け入れ、[次へ] をクリックします。

  8. [その他の接続情報] ページで既定の設定を受け入れて、[発行] をクリックします。

  9. エクスプローラーで C:\Publish ディレクトリを見つけて Setup.exe をダブルクリックし、ローカル コンピューターにアプリケーションをインストールします。

    [!メモ]

    別のコンピューターにアプリケーションをインストールするには、発行フォルダーとそのすべてのサブフォルダーの内容をコピーします。インストールする前に、Install.htm ファイルで説明されている手順を完了する必要があります。このファイルは、発行フォルダーにあります。

  10. [アプリケーションのインストール - セキュリティの警告] ダイアログ ボックスが表示された場合は、[インストール] をクリックします。

    ビジョン クリニック アプリケーションがインストールされ、起動します。

    完成したアプリケーション

  11. いくつかのデータを入力し、アプリケーションが問題なく動作することを確認します。

    ヒントヒント

    Vision Clinic アプリケーションを再度実行する場合は、[スタート] メニューから開くことができます。

ビジョン クリニック アプリケーションのチュートリアルはこれで終わりです。これで LightSwitch アプリケーションを作成するエンド ツー エンド プロセスの基本を理解できました。

このチュートリアルでは LightSwitch の基本的な機能を扱いますが、LightSwitch ではさらに多くのことを行うことができます。独自のアプリケーションを構築する際、製品のドキュメントで多くの機能について学ぶことができます。

参照

概念

LightSwitch ガイド ツアー

Visual Studio LightSwitch

その他の技術情報

LightSwitch について