SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

フリーレイアウトグリッドで業務アプリケーションを作成する(AD)

フリーレイアウトグリッドを使った
業務アプリケーションの作成 2 - 受注画面の作成

第2回 受注画面(入力画面)の作成

  • X ポスト
  • このエントリーをはてなブックマークに追加

ビューおよびストアドプロシージャの作成

 上田君は前回と同様に、ビュー、ストアドプロシージャ、画面の順に作成することにしました。

 ビューは、受注ヘッダー情報を格納する「受注トラン」と、受注明細情報を格納する「受注明細トラン」を作成します。前回、山下課長が使用していたダミービュー生成マクロを使用することで、簡単に作成することができました。

受注明細トランのExcel マクロ
受注明細トランのExcel マクロ
受注トランのビュー
USE [czsample]
GO
/****** オブジェクト:  View [dbo].[vi受注トラン]    スクリプト日付: 09/03/2008 15:54:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE VIEW [dbo].[vi受注トラン] AS
    SELECT 10005318 AS 受注コード, CAST('2008/8/21' AS datetime) AS 受注日, CAST('2008/9/1' AS datetime) AS 納期, 100024 AS 納品先, 100002 AS 請求先, CAST('2008/9/1' AS datetime) AS 請求日, 100002 AS 出荷先
受注明細トランのビュー
USE [czsample]
GO
/****** オブジェクト:  View [dbo].[vi受注明細トラン]    スクリプト日付: 09/03/2008 15:55:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE VIEW [dbo].[vi受注明細トラン] AS
    SELECT 10000001 AS 商品コード, 'ダイニングテーブル4人用1500×700×900ホワイト' AS 商品名, 5 AS 数量, 100000 AS 定価, 80000 AS 単価, 400000 AS 小計, '' AS 備考, 10005318 AS 受注コード
    UNION ALL
    SELECT 10000002 AS 商品コード, 'ダイニングテーブル6人用1700×850×900ホワイト' AS 商品名, 3 AS 数量, 100000 AS 定価, 70000 AS 単価, 210000 AS 小計, '' AS 備考, 10005318 AS 受注コード
    UNION ALL
    SELECT 10000003 AS 商品コード, 'チェアー' AS 商品名, 20 AS 数量, 30000 AS 定価, 21000 AS 単価, 420000 AS 小計, '' AS 備考, 10005318 AS 受注コード
    UNION ALL
    SELECT 10000004 AS 商品コード, 'ベッド<シングル>1900×800×500' AS 商品名, 4 AS 数量, 100000 AS 定価, 70000 AS 単価, 280000 AS 小計, '' AS 備考, 10005318 AS 受注コード
    UNION ALL
    SELECT 10000005 AS 商品コード, 'ベッド<セミダブル>2100×1200×400' AS 商品名, 4 AS 数量, 150000 AS 定価, 120000 AS 単価, 480000 AS 小計, '' AS 備考, 10005318 AS 受注コード
    UNION ALL
    SELECT 10000006 AS 商品コード, 'ベッド<ダブル>2100×1600×400' AS 商品名, 2 AS 数量, 200000 AS 定価, 160000 AS 単価, 320000 AS 小計, '' AS 備考, 10005318 AS 受注コード
    UNION ALL
    SELECT 10000007 AS 商品コード, 'タンス' AS 商品名, 10 AS 数量, 60000 AS 定価, 42000 AS 単価, 420000 AS 小計, '' AS 備考, 10005318 AS 受注コード
    UNION ALL
    SELECT 10000008 AS 商品コード, 'ソファー2人用ベージュ' AS 商品名, 15 AS 数量, 40000 AS 定価, 28000 AS 単価, 420000 AS 小計, '' AS 備考, 10005318 AS 受注コード
    UNION ALL
    SELECT 10000009 AS 商品コード, 'ソファー3人用ベージュ' AS 商品名, 10 AS 数量, 60000 AS 定価, 42000 AS 単価, 420000 AS 小計, '' AS 備考, 10005318 AS 受注コード
    UNION ALL
    SELECT 10000010 AS 商品コード, 'ダイニングテーブル4人用1500×700×900ブラック' AS 商品名, 5 AS 数量, 100000 AS 定価, 80000 AS 単価, 400000 AS 小計, '限定商品' AS 備考, 10005318 AS 受注コード
    UNION ALL
    SELECT 10000011 AS 商品コード, 'ダイニングテーブル6人用1700×850×900ブラック' AS 商品名, 3 AS 数量, 100000 AS 定価, 70000 AS 単価, 210000 AS 小計, '限定商品' AS 備考, 10005318 AS 受注コード
    UNION ALL
    SELECT 10000012 AS 商品コード, 'カーテン<76>2000×1500' AS 商品名, 2 AS 数量, 30000 AS 定価, 24000 AS 単価, 48000 AS 小計, '' AS 備考, 10005318 AS 受注コード
    UNION ALL
    SELECT 10000013 AS 商品コード, 'カーテン<34>2000×1500' AS 商品名, 2 AS 数量, 20000 AS 定価, 14000 AS 単価, 28000 AS 小計, '' AS 備考, 10005318 AS 受注コード
    UNION ALL
    SELECT 10000014 AS 商品コード, 'カーテン<19>2000×1500' AS 商品名, 4 AS 数量, 15000 AS 定価, 12000 AS 単価, 48000 AS 小計, '' AS 備考, 10005318 AS 受注コード

 作成するストアドプロシージャは、先程作成したビューを抽出するためのものと、受注明細トランにインサートするためのストアドプロシージャです。

 インサートするストアドプロシージャは、今回はビューを使用しているため実際に追加は行わず、入力チェックだけを行い、チェックが通ったか否かを返すものにします。

受注トラン抽出ストアドプロシージャ
USE [czsample]
GO
/****** オブジェクト:  StoredProcedure [dbo].[prHeader]    スクリプト日付: 09/03/2008 15:58:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--
-- 受注ヘッダ情報を検索します。
-- 引数:@受注コード
--
CREATE PROCEDURE [dbo].[prHeader]
	(
		@受注コード int
	)
AS
	SET NOCOUNT ON
	
	-- 名称に一致する受注ヘッダ情報を抽出し、結果のレコードを返します。
	SELECT
		j.受注コード,
		j.受注日,
		j.納期,
		j.納品先,
		j.請求先,
		j.請求日,
		j.出荷先
	FROM
		dbo.vi受注トラン AS j
	WHERE
		受注コード = @受注コード
	
	RETURN
受注明細トラン抽出ストアドプロシージャ
USE [czsample]
GO
/****** オブジェクト:  StoredProcedure [dbo].[prDetail]    スクリプト日付: 09/03/2008 15:58:43 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--
-- 受注明細情報を検索します。
-- 引数:@受注コード
--
CREATE PROCEDURE [dbo].[prDetail]
	(
		@受注コード int
	)
AS
	SET NOCOUNT ON
	
	-- 名称に一致する受注明細情報を抽出し、結果のレコードを返します。
	SELECT
		商品コード,
		商品名,
		数量,
		定価,
		単価,
		小計,
		備考,
		受注コード
	FROM
		dbo.vi受注明細トラン
	WHERE
		受注コード = @受注コード
	
	RETURN
受注明細トラン追加ストアドプロシージャ(※入力チェックのみ行います)
USE [czsample]
GO
/****** オブジェクト:  StoredProcedure [dbo].[prInsDetail]    スクリプト日付: 09/03/2008 15:59:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--
-- 明細を追加します。※実際は必須入力チェックしか行わない。
-- 引数:@商品コード、@商品名、@数量、@定価、@単価、@小計、@備考、@受注コード
--
CREATE PROCEDURE [dbo].[prInsDetail]
	(
		@商品コード int
		,@商品名 varchar(100)
		,@数量 int
		,@定価 int
		,@単価 int
		,@小計 int
		,@備考 varchar(100)
		,@受注コード int
	)
AS
	SET NOCOUNT ON
	
	SELECT 1
	
	-- 入力した値が不正な場合は0以外を返します
	RETURN
		(CASE WHEN @商品コード >= 10000000 THEN 0 ELSE 1 END)
		 + (CASE @商品名 WHEN '' THEN 1 ELSE 0 END)

 また、得意先コードを入力したときに、得意先名を自動的に表示させるためのストアドプロシージャも作成しておきます。

得意先取得ストアドプロシージャ
USE [czsample]
GO
/****** オブジェクト:  StoredProcedure [dbo].[pr得意先取得]    スクリプト日付: 09/03/2008 16:00:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--
-- 得意先を取得します。
-- 引数:@得意先ID
--
CREATE PROCEDURE [dbo].[pr得意先取得]
	(
		@得意先ID int
	)
AS
	SET NOCOUNT ON
	
	-- 名称に一致する得意先を抽出し、結果のレコードを返します。
	SELECT
		得意先名
	FROM
		dbo.vi得意先マスタ
	WHERE
		得意先ID = @得意先ID
	
	RETURN

次のページ
商品検索画面の作成

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
フリーレイアウトグリッドで業務アプリケーションを作成する連載記事一覧
この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3056 2008/09/25 10:45

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング