Tutorial_Automatic_Screen_Generation(DataMaintenance).ja - OpenTouryoProject/OpenTouryo GitHub Wiki
Open æ£æ¢ãã¥ãŒããªã¢ã« (çµåããŒãã«ã«å¯ŸããããŒã¿ã¡ã³ããã³ã¹ç»é¢èªåçæç·š)
2017幎1æ19æ¥
Open æ£æ¢ã® D å±€èªåçæããŒã«ã䜿çšãããšãåäžããŒãã«ã«å¯ŸããããŒã¿ã¡ã³ããã³ã¹ç»é¢ãèªåçæã§ããŸããããããD å±€èªåçæããŒã«ã§ã¯çµåããŒãã«ã«å¯ŸããããŒã¿ã¡ã³ããã³ã¹ç»é¢ã¯çæã§ããŸãããæ¬ããã¥ã¡ã³ãã§ã¯ãçµåããŒãã«ã«å¯ŸããããŒã¿ã¡ã³ããã³ã¹ç»é¢ã®çææ¹æ³ã玹ä»ããŸãã
Open æ£æ¢ãçšãã ASP.NET ã¢ããªã±ãŒã·ã§ã³éçºã§ãçµåããŒãã«ã«å¯ŸããããŒã¿ã¡ã³ããã³ã¹ç»é¢ã®çæãæ€èšããŠãã SE ããã³éçºè ã察象ãšããŸãã
æ¬ãã¥ãŒããªã¢ã«ã§ã¯ãVisual Studio 2015 åã Open æ£æ¢ãã³ãã¬ãŒãã»ããŒã¹ã«ä»å±ã®ãµã³ãã«ããã°ã©ã ãé¡æãšããçµåããŒãã«ã«å¯ŸããããŒã¿ã¡ã³ããã³ã¹ç»é¢ã®èªåçææé ããé ãè¿œã£ãŠèª¬æããŸãã
æ¬ããã¥ã¡ã³ãã«èšèŒã®äŒç€Ÿåã»åååã¯ãå瀟ã®åæšãŸãã¯ç»é²åæšã§ãã
æ¬ããã¥ã¡ã³ãã¯ãã¯ãªãšã€ãã£ãã»ã³ã¢ã³ãº CC BY 2.1 JP ã©ã€ã»ã³ã¹ã®äžã§å©çšå¯èœã§ãã
3. æ¬ãã¥ãŒããªã¢ã«ã§ã®æŒç¿èª²é¡ã«ã€ããŠ
5. æŒç¿ 1: ããŒã¿ã¡ã³ããã³ã¹ç»é¢ã®çæ
6. æŒç¿ 2: èªåçæãããç»é¢ã®ã«ã¹ã¿ãã€ãº
Open æ£æ¢ã¯ã.NET çšã®ã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ã§ããOpen æ£æ¢ã¯ã.NET Framework 4.6 以äžã察象ã«ãC/S(Windows Forms, WPF)ãWeb(ASP.NET)ãRIA(Silverlight) ãªã©ãããŸããŸãªã¢ããªã±ãŒã·ã§ã³ã§å©çšã§ããŸãã
Open æ£æ¢ã®ã¯ã©ã¹æ§æå³ãå³ 1-1 ã«ç€ºããŸãã

å³ 1-1ãOpen æ£æ¢ã®ã¯ã©ã¹æ§æå³
æ¬ãã¥ãŒããªã¢ã«ã§ã¯ãçµåããŒãã«ã«å¯ŸããããŒã¿ã¡ã³ããã³ã¹ç»é¢ãèªåçæããããã®ãåçãã©ã¡ã¿ã©ã€ãºãã¯ãšãªã»åæããŒã«ã®äœ¿ãæ¹ã説æããŸããæ¬ãã¥ãŒããªã¢ã«ã§ã¯ãåçãã©ã¡ã¿ã©ã€ãºãã¯ãšãªã»åæããŒã«ããDPQuery_Toolããšç¥ããŸããDPQuery_Tool ã¯ãXML 圢åŒã§ãããŒãã«çµåã® SQL æãå®çŸ©ã§ããŸãããŸããæ§æãã§ãã¯ããã¹ãæ©èœãªã©ãæã£ãŠããŸãã
ããŒã¿ã¡ã³ããã³ã¹ç»é¢èªåçææ©èœã®æŠèŠãã以äžã«ç€ºããŸãã

æ¬ãã¥ãŒããªã¢ã«ã§ã¯ã以äžã®ç°å¢ãåæãšããŠããŸãã
- éçºç°å¢
- IDE
- Visual Studio 2015 (Express Edition ãå©çšã§ããŸã)
- ã¢ããªã±ãŒã·ã§ã³ ãã¬ãŒã ã¯ãŒã¯
- Open æ£æ¢ãã³ãã¬ãŒãã»ããŒã¹ (Visual Studio 2015 çš)
- IDE
- å®è¡ç°å¢
- ã©ã³ã¿ã€ã
- .NET Framework 4.6
- DB
- SQL Server Express 2008 R2
- ã©ã³ã¿ã€ã
- ãã®ä»
- OS
- Windows 7
- OS
ãããããããã€ã¯ããœããã®ãµã€ããªã©ãåèã«ãVisual Studio ãã€ã³ã¹ããŒã«ããŠãããŠãã ããã
次ã«ãOpen æ£æ¢ãã³ãã¬ãŒãã»ããŒã¹ãããŒã¿ããŒã¹ãã»ããã¢ããããŸãã
-
GitHub 㧠[Download ZIP] ãã¿ã³ãæŒäžã㊠OpenTouryoTemplates.zip ãå ¥æããããã解åã㊠Open æ£æ¢ãã³ãã¬ãŒãã»ããŒã¹ (Visual Studio 2015 çš) ãååŸããŸãã
-
root_VS2015 ãã©ã«ãã«ãã Readme.md ã®æé ã«åŸã£ãŠãOpen æ£æ¢ãã³ãã¬ãŒãã»ããŒã¹ãšãµã³ãã«ããŒã¿ããŒã¹ã®ã»ããã¢ãããè¡ããŸãã
-
ãã¹ãããŒãã« (5 ç« ã§äœ¿çš) äœæçšã«ãä»»æã®å Žæã«
createTestTable.sql
ãäœæãã以äžã®ããã«èšè¿°ããŸãã(æ¬ãã¥ãŒããªã¢ã«ã§ã¯ãC:\users\[ãŠãŒã¶ãŒå]\Documents
ãã©ã«ããŒã«äœæããŸã)USE [Northwind] GO /****** Object: Table [dbo].[TABL1] Script Date: 05/27/2016 14:12:04 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[TABL1]( [A] [int] NOT NULL, [Y] [varchar](50) NULL, [Z] [varchar](50) NULL, CONSTRAINT [PK_TABL1] PRIMARY KEY CLUSTERED ( [A] ASC ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO INSERT [dbo].[TABL1] ([A], [Y], [Z]) VALUES (1, N'Insert_1Y', N'Insert_1Z') INSERT [dbo].[TABL1] ([A], [Y], [Z]) VALUES (2, N'Insert_1Y2', N'Insert_1Z2') INSERT [dbo].[TABL1] ([A], [Y], [Z]) VALUES (3, N'Insert_1Y3', N'Insert_1Z3') INSERT [dbo].[TABL1] ([A], [Y], [Z]) VALUES (4, N'Insert_1Y4', N'Insert_1Z4') /****** Object: Table [dbo].[TABL2] Script Date: 05/27/2016 14:12:04 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[TABL2]( [A] [int] NOT NULL, [B] [varchar](50) NULL, [C] [varchar](50) NULL, [AX] [int] NOT NULL, CONSTRAINT [PK_TABL2] PRIMARY KEY CLUSTERED ( [A] ASC ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO INSERT [dbo].[TABL2] ([A], [B], [C], [AX]) VALUES (1, N'Insert_2B', N'Insert_2C1', 1) INSERT [dbo].[TABL2] ([A], [B], [C], [AX]) VALUES (2, N'Insert_2B2', N'Insert_2C2', 2) INSERT [dbo].[TABL2] ([A], [B], [C], [AX]) VALUES (3, N'Insert_2B3', N'Insert_2C3', 3) INSERT [dbo].[TABL2] ([A], [B], [C], [AX]) VALUES (4, N'Insert_2B4', N'Insert_2C4', 4) /****** Object: Table [dbo].[TABL3] Script Date: 05/27/2016 14:12:04 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[TABL3]( [D] [int] IDENTITY(1,1) NOT NULL, [E] [nvarchar](50) NULL, [F] [nvarchar](50) NULL, [A] [int] NOT NULL, CONSTRAINT [PK_TABL3] PRIMARY KEY CLUSTERED ( [D] ASC ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET IDENTITY_INSERT [dbo].[TABL3] ON INSERT [dbo].[TABL3] ([D], [E], [F], [A]) VALUES (1, N'Insert_3D1', N'Insert_3E1', 1) INSERT [dbo].[TABL3] ([D], [E], [F], [A]) VALUES (2, N'Insert_3D2', N'Insert_3E2', 2) INSERT [dbo].[TABL3] ([D], [E], [F], [A]) VALUES (3, N'Insert_3D3', N'Insert_3E3', 3) INSERT [dbo].[TABL3] ([D], [E], [F], [A]) VALUES (4, N'Insert_3D4', N'Insert_3E4', 4) SET IDENTITY_INSERT [dbo].[TABL3] OFF /****** Object: ForeignKey [FK_TABL2_TABL1] Script Date: 05/27/2016 14:12:04 ******/ ALTER TABLE [dbo].[TABL2] WITH CHECK ADD CONSTRAINT [FK_TABL2_TABL1] FOREIGN KEY([AX]) REFERENCES [dbo].[TABL1] ([A]) GO ALTER TABLE [dbo].[TABL2] CHECK CONSTRAINT [FK_TABL2_TABL1] GO /****** Object: ForeignKey [FK_TABL3_TABL2] Script Date: 05/27/2016 14:12:04 ******/ ALTER TABLE [dbo].[TABL3] WITH CHECK ADD CONSTRAINT [FK_TABL3_TABL2] FOREIGN KEY([A]) REFERENCES [dbo].[TABL2] ([A]) GO ALTER TABLE [dbo].[TABL3] CHECK CONSTRAINT [FK_TABL3_TABL2] GO /****** Object: Table [dbo].[TABL4] Script Date: 08/23/2016 14:26:23 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[TABL4]( [A] [int] NOT NULL, [Y] [varchar](50) NULL, [Z] [varchar](50) NULL, [TimeStamp] [datetime] NULL, CONSTRAINT [PK_TABL4] PRIMARY KEY CLUSTERED ( [A] ASC ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO INSERT [dbo].[TABL4] ([A], [Y], [Z], [TimeStamp]) VALUES (1, N'Insert_1Y', N'Insert_1Z', CAST(0x0000A66B00EDAAD3 AS DateTime)) INSERT [dbo].[TABL4] ([A], [Y], [Z], [TimeStamp]) VALUES (2, N'Insert_1Y2', N'Insert_1Z2', CAST(0x0000A66B00EDAAD3 AS DateTime)) INSERT [dbo].[TABL4] ([A], [Y], [Z], [TimeStamp]) VALUES (3, N'Insert_1Y3', N'Insert_1Z3', CAST(0x0000A66B00EDAAD3 AS DateTime)) INSERT [dbo].[TABL4] ([A], [Y], [Z], [TimeStamp]) VALUES (4, N'Insert_1Y4', N'Insert_1Z4', CAST(0x0000A66B00EDAAD3 AS DateTime)) /****** Object: Table [dbo].[TABL5] Script Date: 08/23/2016 14:26:23 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[TABL5]( [A] [int] NOT NULL, [B] [varchar](50) NULL, [C] [varchar](50) NULL, [AX] [int] NOT NULL, [TimeStamp] [datetime] NULL, CONSTRAINT [PK_TABL5] PRIMARY KEY CLUSTERED ( [A] ASC ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO INSERT [dbo].[TABL5] ([A], [B], [C], [AX], [TimeStamp]) VALUES (1, N'Insert_2B', N'Insert_2C1', 1, CAST(0x0000A66B00EDAAD3 AS DateTime)) INSERT [dbo].[TABL5] ([A], [B], [C], [AX], [TimeStamp]) VALUES (2, N'Insert_2B2', N'Insert_2C2', 2, CAST(0x0000A66B00EDAAD3 AS DateTime)) INSERT [dbo].[TABL5] ([A], [B], [C], [AX], [TimeStamp]) VALUES (3, N'Insert_2B3', N'Insert_2C3', 3, CAST(0x0000A66B00EDAAD3 AS DateTime)) INSERT [dbo].[TABL5] ([A], [B], [C], [AX], [TimeStamp]) VALUES (4, N'Insert_2B4', N'Insert_2C4', 4, CAST(0x0000A66B00EDAAD3 AS DateTime)) /****** Object: Table [dbo].[TABL6] Script Date: 08/23/2016 14:26:23 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[TABL6]( [D] [int] NOT NULL, [E] [nvarchar](50) NULL, [F] [nvarchar](50) NULL, [A] [int] NOT NULL, [TimeStamp] [datetime] NULL, CONSTRAINT [PK_TABL6] PRIMARY KEY CLUSTERED ( [D] ASC ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO INSERT [dbo].[TABL6] ([D], [E], [F], [A], [TimeStamp]) VALUES (1, N'Insert_3D1', N'Insert_3E1', 1, CAST(0x0000A66B00EDAAD3 AS DateTime)) INSERT [dbo].[TABL6] ([D], [E], [F], [A], [TimeStamp]) VALUES (2, N'Insert_3D2', N'Insert_3E2', 2, CAST(0x0000A66B00EDAAD3 AS DateTime)) INSERT [dbo].[TABL6] ([D], [E], [F], [A], [TimeStamp]) VALUES (3, N'Insert_3D3', N'Insert_3E3', 3, CAST(0x0000A66B00EDAAD3 AS DateTime)) INSERT [dbo].[TABL6] ([D], [E], [F], [A], [TimeStamp]) VALUES (4, N'Insert_3D4', N'Insert_3E4', 4, CAST(0x0000A66B00EDAAD3 AS DateTime)) /****** Object: Default [DF_TABL4_TimeStamp] Script Date: 08/23/2016 14:26:23 ******/ ALTER TABLE [dbo].[TABL4] ADD CONSTRAINT [DF_TABL4_TimeStamp] DEFAULT (getdate()) FOR [TimeStamp] GO /****** Object: Default [DF_TABL5_TimeStamp] Script Date: 08/23/2016 14:26:23 ******/ ALTER TABLE [dbo].[TABL5] ADD CONSTRAINT [DF_TABL5_TimeStamp] DEFAULT (getdate()) FOR [TimeStamp] GO /****** Object: Default [DF_TABL6_TimeStamp] Script Date: 08/23/2016 14:26:23 ******/ ALTER TABLE [dbo].[TABL6] ADD CONSTRAINT [DF_TABL6_TimeStamp] DEFAULT (getdate()) FOR [TimeStamp] GO /****** Object: ForeignKey [FK_TABL5_TABL4] Script Date: 08/23/2016 14:26:23 ******/ ALTER TABLE [dbo].[TABL5] WITH CHECK ADD CONSTRAINT [FK_TABL5_TABL4] FOREIGN KEY([AX]) REFERENCES [dbo].[TABL4] ([A]) GO ALTER TABLE [dbo].[TABL5] CHECK CONSTRAINT [FK_TABL5_TABL4] GO /****** Object: ForeignKey [FK_TABL6_TABL5] Script Date: 08/23/2016 14:26:23 ******/ ALTER TABLE [dbo].[TABL6] WITH CHECK ADD CONSTRAINT [FK_TABL6_TABL5] FOREIGN KEY([A]) REFERENCES [dbo].[TABL5] ([A]) GO ALTER TABLE [dbo].[TABL6] CHECK CONSTRAINT [FK_TABL6_TABL5] GO
-
ã³ãã³ãããã³ããã§ä»¥äžã®ã³ãã³ããå®è¡ããæ¬ãã¥ãŒããªã¢ã«ã§äœ¿çšãããã¹ãçšããŒã¿ããŒã¹ãäœæããŸãã
"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE" -S localhost\SQLExpress -E -i "C:\Users\[ãŠãŒã¶ãŒå]\Documents\createTestTable.sql"
æ¬ãã¥ãŒããªã¢ã«ã§ã¯ãVisual Studio 2015 åã Open æ£æ¢ãã³ãã¬ãŒãã»ããŒã¹ã«ä»å±ã®ãµã³ãã«ããã°ã©ã ã«ããŒã¿ã¡ã³ããã³ã¹ç»é¢èªåçææ©èœã§çæããç»é¢ã»ããžãã¯ãè¿œå ã»æ¹ä¿®ãã圢ã§æŒç¿ãè¡ããŸãããµã³ãã«ããã°ã©ã ã®æ§æãå³ 3-1 ã«ããã¥ãŒããªã¢ã«ã®ç»é¢é·ç§»å³ãå³ 3-2 ã«ç€ºããŸãã

å³ 3-1 ãµã³ãã«ããã°ã©ã ã®æ§æå³

å³ 3-2ããµã³ãã«ããã°ã©ã ã®ç»é¢é·ç§»å³
æŒç¿ã«å ç«ã¡ããããããäœæããããŒã¿ããŒã¹ã®ãD å±€å®çŸ©æ å ±ãã¡ã€ã«ãããã³ SQL ãã¡ã€ã«ããOpen æ£æ¢ã® D å±€èªåçæããŒã«ã䜿çšããŠçæããŠãããŸãã
-
C:\root\programs\C#\Frameworks\DaoGen_Tool\bin\Debug\DaoGen_Tool.exe
ãå®è¡ããD å±€èªåçæããŒã«ãèµ·åããŸãã -
以äžã®ããã«å€ãèšå®ãããååŸããã¿ã³ãã¯ãªãã¯ããŸãã
- ããŒã¿ãããã€ã: SQL Server Client
- æ¥ç¶æåå: Data Source=localhost\SQLExpress;Initial Catalog=Northwind;Integrated Security=true;
- ãã«ããŠã³: æŠèŠæ å ±
-
æ¥ç¶æååçã®æ å ±ã«èª€ãããªããã°ããDBMSã®ã¹ããŒãæ å ±ã®è¡šç€ºïŒæŠèŠæ å ±ïŒãã€ã¢ãã°ãã衚瀺ãããŸãã
æ¬ãã€ã¢ãã°ã衚瀺ãããããšã確èªãããéããããã¿ã³ãã¯ãªãã¯ããŠããã€ã¢ãã°ãéããŸãã
-
ãããŒãã«äžèŠ§ã®ååŸããã¿ã³ãã¯ãªãã¯ããŸãã
ããŒãã«å称ã«é¢ãã泚æãä¿ããã€ã¢ãã°ã衚瀺ãããŸããããOKããã¿ã³ãã¯ãªãã¯ããŠéããŠãã ããã
-
æ¬ãã¥ãŒããªã¢ã«ã§ã¯ããCategoriesããProductsããTABL1 ïœ TABL6ãããŒãã«ã䜿çšããŸãããããã®ããŒãã«ä»¥å€ãéžæããŠããåé€ããã¿ã³ãã¯ãªãã¯ããŸãã
-
ãªã¹ãå ã®é ç®ãã以äžã®å³ã®ããã«ãªã£ãããšã確èªãããããŒãããã¿ã³ãã¯ãªãã¯ããŸãã
-
ãDå±€å®çŸ©æ å ±ãçæããã¿ã³ã掻æ§åãããŸãã®ã§ãåºåãšã³ã³ãŒãã£ã³ã°ãšããŠãutf-8ããéžæãããDå±€å®çŸ©æ å ±ãçæããã¿ã³ãã¯ãªãã¯ããŸãã
D å±€å®çŸ©æ å ±ãã¡ã€ã«ã®ä¿åãã€ã¢ãã°ã衚瀺ãããŸãã®ã§ã
C:\root\Info.csv
ã«ãã¡ã€ã«ãä¿åããŸãã -
D å±€å®çŸ©æ å ±ãã¡ã€ã«ãæ£åžžã«çæã§ããããšã瀺ããã€ã¢ãã°ã衚瀺ãããŸãã®ã§ããOKããã¿ã³ãã¯ãªãã¯ããŠéããŸãã
-
ãSTEP2ãžé·ç§»ããã¿ã³ãã¯ãªãã¯ããŸãã
-
ãã¹ããã2ãç»é¢ã衚瀺ãããŸãã®ã§ã以äžã®ããã«å€ãèšå®ãããããã°ã©ã ãçæããããã¿ã³ãã¯ãªãã¯ããŸãã
- D å±€å®çŸ©æ å ±ãã¡ã€ã«: C:\root\Info.csv
- ãœãŒã¹ãã³ãã¬ãŒããã©ã«ã: C:\root\files\tools\DGenTemplates
- åºåãã¡ã€ã«: C:\root
- äžèšä»¥å€ã¯ããã©ã«ãã®ãŸãŸ
-
DaoãSQL ãã¡ã€ã«ãæ£åžžã«çæã§ããããšã瀺ããã€ã¢ãã°ã衚瀺ãããŸãã®ã§ããOKããã¿ã³ãã¯ãªãã¯ããŠéããŸãã
-
C:\root
ãã©ã«ã以äžã«ãDao ãã¡ã€ã«ãSQL ãã¡ã€ã«ãçæãããŠããããšã確èªããŸããã泚æãOpen æ£æ¢ã§ã¯ãSQL ãã¡ã€ã«ãšããŠãæ¡åŒµåã
.sql
ã®ãã¡ã€ã«ãšã.xml
ã®ãã¡ã€ã«ããããïŒè©³ãã㯠Open æ£æ¢ã®èª¬ææžãã芧ãã ããïŒ
4.1 ç¯ã§äœæãã SQL ãã¡ã€ã«ããã³ Dao ãã¡ã€ã«ããOpen æ£æ¢ãèŠå®ãããã©ã«ããŒã«é
眮ããŸããOpen æ£æ¢ãèŠå®ãããã©ã«ããŒã¯ãã¢ããªã±ãŒã·ã§ã³å®çŸ©ãã¡ã€ã« (app.config) ã§å®çŸ©ãããŠãããèªç±ã«ã«ã¹ã¿ãã€ãºã§ããŸããæ¬ãã¥ãŒããªã¢ã«ã§ã¯æ¢å®å€ã§ãã C:\root\files\resource\Sql
ã«é
眮ããŸãã
C:\root\files\resource\Sql
ã«ãèªåçæããã SQL ãã¡ã€ã«ã XML ãã¡ã€ã«ãã³ããŒããŸãã
<img src="./images/JOINTABLE/ScreenCapture_4_2_1.png" width="50%" >
Open æ£æ¢ã®ããŒã¿ã¡ã³ããã³ã¹ç»é¢èªåçææ©èœã®å©çšæ¹æ³ (ããŒã«ã®äœ¿çšæ¹æ³ãã¯ã©ã¹ã®ã«ã¹ã¿ãã€ãºæ¹æ³ãå®è¡çµæã®ç¢ºèªæ¹æ³) ããé ãè¿œã£ãŠèª¬æããŸãã
-
C:\root\Info.csv
ãã³ããŒããC:\root\Info2.csv
ãäœæããŸãã -
ããã§ã¯ Categories ããŒãã«ãš Products ããŒãã«ã䜿çšããããã以äžã®ããã«ãTABL1 ïœ TABL6 ããŒãã«ã®å®çŸ©æ å ±ãåé€ããŸãã
Table name, column information - Categories,CategoryID, ,CategoryName,Description,Picture, Products,ProductID, ,ProductName,SupplierID,CategoryID,QuantityPerUnit,UnitPrice,UnitsInStock,UnitsOnOrder,ReorderLevel,Discontinued,
-
C:\root\files\resource\Sql
ãã©ã«ããŒã«ãæ°èŠã« XML ãã¡ã€ã«ãäœæãããã¡ã€ã«åãDaoCategories_Products_JOIN_S2_Select.xml
ãšããŸãã -
DaoCategories_Products_JOIN_S2_Select.xml
ã以äžã®ããã«å®çŸ©ããŸãã<?xml version="1.0" encoding="UTF-8"?> <ROOT> SELECT Categories.CategoryID [Categories.CategoryID], Categories.CategoryName [Categories.CategoryName], Categories.Description [Categories.Description], Products.CategoryID [Products.CategoryID], Products.ProductID [Products.ProductID], Products.ProductName [Products.ProductName], Products.QuantityPerUnit [Products.QuantityPerUnit], Products.ReorderLevel [Products.ReorderLevel], Products.UnitPrice [Products.UnitPrice], Products.UnitsInStock [Products.UnitsInStock], Products.UnitsOnOrder [Products.UnitsOnOrder] FROM Categories,Products <WHERE> WHERE Categories.CategoryID = Products.CategoryID <IF>AND Categories.CategoryID = @Categories_CategoryID<ELSE>AND Categories.CategoryID IS NULL</ELSE></IF> <IF>AND Categories.CategoryName = @Categories_CategoryName<ELSE>AND Categories.CategoryName IS NULL</ELSE></IF> <IF>AND Categories.Description= @Categories_Description<ELSE>AND Categories.Description IS NULL</ELSE></IF> <IF>AND Products.CategoryID= @Products_CategoryID<ELSE>AND Products.CategoryID IS NULL</ELSE></IF> <IF>AND Products.ProductID = @Products_ProductID<ELSE>AND Products.ProductID IS NULL</ELSE></IF> <IF>AND Products.ProductName = @Products_ProductName<ELSE>AND Products.ProductName IS NULL</ELSE></IF> <IF>AND Products.QuantityPerUnit = @Products_QuantityPerUnit<ELSE>AND Products.QuantityPerUnit IS NULL</ELSE></IF> <IF>AND Products.ReorderLevel = @Products_ReorderLevel<ELSE>AND Products.ReorderLevel IS NULL</ELSE></IF> <IF>AND Products.UnitPrice = @Products_UnitPrice<ELSE>AND Products.UnitPrice IS NULL</ELSE></IF> <IF>AND Products.UnitsInStock = @Products_UnitsInStock<ELSE>AND Products.UnitsInStock IS NULL</ELSE></IF> <IF>AND Products.UnitsOnOrder = @Products_UnitsOnOrder<ELSE>AND Products.UnitsOnOrder IS NULL</ELSE></IF> </WHERE> </ROOT>
ã泚æã
DPQuery_Tool ã䜿çšããŠãçµåããŒãã«ã«å¯ŸããããŒã¿ã¡ã³ããã³ã¹ç»é¢ãçæããå Žåã以äžã®ãããªã«ãŒã«ããããŸãã- ãšã€ãªã¢ã¹å
ããŒãã«çµåãè¡ãå Žåããšã€ãªã¢ã¹åã¯ã[ããŒãã«å].[åå]ãã§ããå¿ èŠããããŸãããªããããŒãã«åã空çœæåãå«ãå Žåã¯ã空çœæåãã¢ã³ããŒã¹ã³ã¢ã«çœ®ãæããå¿ èŠããããŸãã - TimeStamp åã®æ±ã
çµåã¯ãšãªã«ãTimeStampããšããååã®åããã£ãå ŽåãããŒã¿ã¡ã³ããã³ã¹ç»é¢ã«ã¯è¡šç€ºããããæ¡ä»¶æ€çŽ¢ã®ã¿ã«äœ¿çšãããŸãããŸãã楜芳çæä»å¶åŸ¡ãè¡ãå ŽåãããŒã¿ã¡ã³ããã³ã¹ç»é¢ãæ±ãããŒãã«ã«ã¯ãã¹ãŠã¿ã€ã ã¹ã¿ã³ããä¿æããåãå¿ èŠã§ãããŸãããã®ååã¯åãã§ããå¿ èŠããããŸãã楜芳çæä»å¶åŸ¡ãå«ãããŒã¿ã¡ã³ããã³ã¹ç»é¢ã®çææ¹æ³ã«ã€ããŠã¯ã5.3 ç¯ã§èª¬æããŸãã
- ãšã€ãªã¢ã¹å
-
C:\root\programs\C#\Frameworks\Tools\DPQuery_Tool\bin\Debug\DPQuery_Tool.exe
ãèµ·åããŸãã -
DPQuery_Tool ãèµ·åããäžã®å³ã®ãããªç»é¢ã衚瀺ãããããšã確èªããŸãã
-
以äžã®ããã«èšå®ãããæ¥ç¶ããã¿ã³ãã¯ãªãã¯ããŸãã
- ããŒã¿ãããã€ã: SQL Server - sqlClient
- æ¥ç¶æåå: Data Source=localhost\sqlexpress;Initial Catalog=Northwind;Integrated Security=True;
DBãžã®æ¥ç¶ã«æåãããæ¥ç¶ããã¿ã³ãé掻æ§åãã代ããã«ãåæããã¿ã³ããã¯ãšãªå®è¡ããã¿ã³ã掻æ§åãããããšã確èªããŸãã
-
ãéãããã¿ã³ãã¯ãªãã¯ããŸãã
-
ãã¡ã€ã«ãéããã€ã¢ãã°ã§ã4.2.1 é ã§äœæãã
DaoCategories_Products_JOIN_S2_Select.xml
ãéžæããŸãã -
ããŒã«ç»é¢äžå€®ã«ã
DaoCategories_Products_JOIN_S2_Select.xml
ãã¡ã€ã«ã®å 容ã衚瀺ãããããšã確èªãããã¯ãšãªå®è¡ããã¿ã³ãã¯ãªãã¯ããŸãã -
以äžã®å³ã®ãããªã¡ãã»ãŒãžããã¯ã¹ã衚瀺ãããã¯ãšãªã®å®è¡ã«æåããããšã確èªãããOKããã¿ã³ãã¯ãªãã¯ããŸãã
-
ãçµæTable1ãç»é¢ãéããã¯ãšãªã®å®è¡çµæã衚瀺ãããããšã確èªãããGenerateããã¿ã³ãã¯ãªãã¯ããŸãã
-
ãçµåSELECTæãããããã®ç»é¢ãçæãããç»é¢ã衚瀺ãããã®ã§ã以äžã®ããã«èšå®ãããã¹ãããïŒãã¿ããã¯ãªãã¯ããŸãã
- Då±€å®çŸ©æ å ±ãã¡ã€ã«: C:\root\Info2.csv
- ãœãŒã¹ ãã³ãã¬ãŒã ãã¡ã€ã«: C:\root\files\tools\DGenTemplates
- åºåãã¡ã€ã«: C:\root\files\AutoGeneratedFiles
- äžèšä»¥å€ã¯ããã©ã«ãã®ãŸãŸ
-
ããŒã¿ãããã€ããšããŠããSQL Server ClientããéžæãããŠããããšã確èªãããïŒ Daoã»SQLãDTOãã¡ã€ã«ãçæããŸã ïŒ1ããã¿ã³ãã¯ãªãã¯ããŸãã
-
以äžã®å³ã®ãããªã¡ãã»ãŒãžããã¯ã¹ã衚瀺ãããç»é¢ã®çæã«æåããããšã確èªãããOKããã¿ã³ãã¯ãªãã¯ããŸãã
-
åºåå ãšããŠæå®ãããã©ã«ããŒã«ãããŒã¿ã¡ã³ããã³ã¹ç»é¢ãçæãããŠããããšã確èªããŸãã
-
C:\root\programs\C#\Samples\WebApp_sample\WebForms_Sample\WebForms_Sample.sln
ãéããŸãã -
4.2.2 é ã§çæããããŒã¿ã¡ã³ããã³ã¹ç»é¢ããã¹ãŠã³ããŒããŸãã
-
ãœãªã¥ãŒã·ã§ã³ ãšã¯ã¹ãããŒã©ãŒã§ã
Aspx\sample\3Tier
ãã©ã«ããŒãå³ã¯ãªãã¯ããã貌ãä»ãããéžæããŸãã -
3Tier
ãã©ã«ããŒã«ãããŒã¿ã¡ã³ããã³ã¹ç»é¢ãè¿œå ãããããšã確èªããŸããã泚æã
DPQuery_Tool ã®ããŒã¿ã¡ã³ããã³ã¹ç»é¢èªåçææ©èœã䜿çšãããšãHTML ã³ãŒããèšè¿°ãã ASPX ãã¡ã€ã«ãšããã®ã³ãŒãããã€ã³ããèšè¿°ãã C# ãã¡ã€ã«ãçæãããŸããWeb ã¢ããªã±ãŒã·ã§ã³ ãããžã§ã¯ãã®å Žåããããã®ä»ã« Visual Studio ã®ãã¶ã€ããŒãåºåããã³ãŒãã§ããã.designer.csããšãããã¡ã€ã«ãå¿ èŠã«ãªããŸããOpen æ£æ¢ãã³ãã¬ãŒãã»ããŒã¹ã«å«ãŸãã Web ã¢ããªã±ãŒã·ã§ã³ã®ãµã³ãã«ãããžã§ã¯ãã Web ã¢ããªã±ãŒã·ã§ã³ ãããžã§ã¯ãã®ããããã®ã.designer.csããã¡ã€ã«ãè¿œå ããå¿ èŠããããŸãã -
ãœãªã¥ãŒã·ã§ã³ ãšã¯ã¹ãããŒã©ãŒã§ããããžã§ã¯ãåã®éšåãå³ã¯ãªãã¯ãããWeb ã¢ããªã±ãŒã·ã§ã³ã«å€æããéžæããŸãã
-
以äžã®å³ã®ãããªç¢ºèªãã€ã¢ãã°ã衚瀺ãããŸãã®ã§ããã¯ãããã¯ãªãã¯ããŸãã
-
3Tier
ãã©ã«ããŒã®äžã«ãã.designer.csããã¡ã€ã«ãçæãããŠããããšã確èªããŸãã -
ãœãªã¥ãŒã·ã§ã³ ãšã¯ã¹ãããŒã©ãŒã§ã
Aspx\sample\3Tier\Categories_Products_JOIN_Screen_ConditionalSearch.aspx
ãå³ã¯ãªãã¯ãããã¹ã¿ãŒã ããŒãžã«èšå®ããéžæããŸãã -
ã¢ããªã±ãŒã·ã§ã³ããã«ãããŸãã
-
ã¹ã¿ãŒãã¡ãã¥ãŒã®ãããã°ã©ã ãšãã¡ã€ã«ã®æ€çŽ¢ãããã¯ã¹ããã
services.msc
ãå®è¡ããŸãã -
ãµãŒãã¹ç»é¢ãããASP.NET ç¶æ ãµãŒãã¹ããå³ã¯ãªãã¯ãããéå§ããéžæããŸãã
ã泚æã
åæç¶æ ã§ã¯ããASP.NET ç¶æ ãµãŒãã¹ãã®ã¹ã¿ãŒãã¢ããã®çš®é¡ã¯ãç¡å¹ãã«ãªã£ãŠããŸãããã®ãããASP.NET ç¶æ ãµãŒãã¹ã®ããããã£ç»é¢ãããã¹ã¿ãŒãã¢ããã®çš®é¡ããæåããªã©ã«å€ããå¿ èŠããããŸãã
-
Visual Studio ã§ãã¢ããªã±ãŒã·ã§ã³ããããã°å®è¡ããŸãã
-
ãã©ãŠã¶ãèµ·åãããã°ã€ã³ç»é¢ã衚瀺ãããŸãã®ã§ã以äžã®ããã«å€ãå ¥åããããã°ã€ã³ããã¿ã³ãæŒäžããŸãã
- ãŠãŒã¶ID: 空ã§ãªãä»»æã®æåå
- ãã¹ã¯ãŒã: ä»»æã®æåå (空ã§ããã)
-
以äžã®å³ã®ãããªç»é¢ã衚瀺ãããããšã確èªããŸãã
-
ããã§ãæ€çŽ¢æ¡ä»¶ãå ¥åãããSearch Resultããã¿ã³ãã¯ãªãã¯ãããšãç»é¢ã®äžéšã«çµæã衚瀺ãããŸãããã®ç»é¢ã®ä»æ§ã¯ä»¥äžã®ãšããã§ãã
- äœãå ¥åããªãã£ãå Žå: å šä»¶æ€çŽ¢
- ããã¹ãããã¯ã¹ã«æ€çŽ¢æ¡ä»¶ãå ¥åããå Žå: å ¥åããæ¡ä»¶ã«ãã AND æ€çŽ¢
ãŸãã¯ãäœãå ¥åããã«ãSearch Resultããã¿ã³ãã¯ãªãã¯ããŸãã
-
å šä»¶æ€çŽ¢ã®çµæã衚瀺ãããããšã確èªããŸãã
ãã¡ã¢ã
äžã®å³ã®ããã«ãäž»ããŒãšããŠèšå®ãããŠããå (ä»åã®ãµã³ãã«ã§ã¯ãCatetories ããŒãã«ã® CategoryID åããã³ Products ããŒãã«ã® ProductID å) ã¯ã°ã¬ãŒã¢ãŠããããç·šéäžå¯ãšãªããŸãã -
次ã«ãæ€çŽ¢æ¡ä»¶ãšããŠãCategoryID ã« 1 ãå ¥åããŠããSearch Resultããã¿ã³ãã¯ãªãã¯ããŸãã
-
CategoryID åã 1 ã®ã¬ã³ãŒãã®ã¿ã衚瀺ãããããšã確èªããŸãã
-
次ã«ãAND æ€çŽ¢ã®ç¢ºèªãšããŠãCategoryID ã« 1 ããProductID ã« 2 ãå ¥åããŠããSearch Resultããã¿ã³ãã¯ãªãã¯ããŸãã
-
AND æ€çŽ¢ãå®è¡ãããCategoryID ã 1 ã§ãã〠ProductID ã 2 ã®ã¬ã³ãŒãã®ã¿ã衚瀺ãããããšã確èªããŸãã
-
4.3.2 é ã®æé ãå®è¡åŸãçµæã»ããã®ãSelectããã¿ã³ãã¯ãªãã¯ããŸãã
-
以äžã®å³ã®ãããªç»é¢ã衚瀺ãããããšã確èªãããEdit Recordããã¿ã³ãã¯ãªãã¯ããŸãã(åæç¶æ ã§ã¯ãå³ã®ããã«ãã¹ãŠã®é ç®ãç·šéäžå¯ãšãªããŸã)
-
äž»ããŒå以å€ãç·šéå¯èœã«ãªã£ãããšã確èªããããã€ãã®é ç®ãç·šéãããUpdate Recordããã¿ã³ãã¯ãªãã¯ããŸãã
-
ããŒã¿ããŒã¹ã®æŽæ°ã«æåãããšã以äžã®å³ã®ããã«ãn Table Data Updated Successfullyããšè¡šç€ºãããŸãã
ãã¡ã¢ã
ããã§ãå éšçã«ã¯ Products ããŒãã«ã«å¯ŸããæŽæ°ãšãCategories ããŒãã«ã«å¯ŸããæŽæ°ãããããè¡ãããŸãããã®ããšã¯ãOpen æ£æ¢ã® SQL ãã¬ãŒã¹ãã°ã§ã確èªã§ããŸãã[2016/12/02 11:59:39,908],[INFO ],[8],22,0,[commandText]: -- DaoProducts_S3_Update -- 2016/12/1 æ¥ç« 倪é UPDATE [Products] SET [ProductName] = @Set_ProductName_forUPD, [CategoryID] = @Set_CategoryID_forUPD, [QuantityPerUnit] = @Set_QuantityPerUnit_forUPD, [UnitPrice] = @Set_UnitPrice_forUPD, [UnitsInStock] = @Set_UnitsInStock_forUPD, [UnitsOnOrder] = @Set_UnitsOnOrder_forUPD, [ReorderLevel] = @Set_ReorderLevel_forUPD WHERE [ProductID] = @ProductID [commandParameter]:ProductID=2,CategoryID=1,Set_ProductName_forUPD=Chang,Set_CategoryID_forUPD=1,Set_QuantityPerUnit_forUPD=24 - 12 oz bottles,Set_UnitPrice_forUPD=20,Set_UnitsInStock_forUPD=17,Set_UnitsOnOrder_forUPD=40,Set_ReorderLevel_forUPD=25, [2016/12/02 11:59:39,924],[INFO ],[8],3,0,[commandText]: -- DaoCategories_S3_Update -- 2016/12/1 æ¥ç« 倪é UPDATE [Categories] SET [CategoryName] = @Set_CategoryName_forUPD, [Description] = @Set_Description_forUPD WHERE [CategoryID] = @CategoryID [commandParameter]:ProductID=2,CategoryID=1,Set_CategoryName_forUPD=Beverages,Set_Description_forUPD=Soft drinks, coffees, teas, beers, and ales,
ãŸãããDelete Recordããã¿ã³ãã¯ãªãã¯ãããšãåæ§ã« Products ããŒãã«ãš Categories ããŒãã«ãžã® Delete æãå®è¡ãããŸãããã ããçµåããŒãã«ã®èŠªããŒãã«ã«å€éšããŒå¶çŽãèšå®ããŠããå Žåã芪ããŒãã«ãå ã«åé€ããããšããããåœè©²å€éšããŒãåç §ããŠããåããŒãã«ã®ã¬ã³ãŒãããŸã æ®ã£ãŠããå Žåã芪ããŒãã«ã®ã¬ã³ãŒãåé€æã«ãšã©ãŒãçºçããŸããã¬ã³ãŒãã®åé€ãè¡ãå Žåã¯ãèšå®ãããŠããå€éšããŒå¶çŽããèªåçæãããããã°ã©ã ããã確èªããå¿ èŠã§ããã°ããã°ã©ã ã®ã«ã¹ã¿ãã€ãºãæ€èšããŠãã ããããªããåé€åŠçã®ã«ã¹ã¿ãã€ãºæ¹æ³ã«ã€ããŠã¯ 6.1 ç¯ã§çŽ¹ä»ããŠããŸãã
-
ãœãªã¥ãŒã·ã§ã³ ãšã¯ã¹ãããŒã©ãŒã§ã
Aspx\sample\3Tier\Categories_Products_JOIN_Screen_SearchAndUpdate.aspx
ãå³ã¯ãªãã¯ãããã¹ã¿ãŒã ããŒãžã«èšå®ããéžæããŸãã -
ã¢ããªã±ãŒã·ã§ã³ããããã°å®è¡ããŸãã
-
ãã©ãŠã¶ãèµ·åãããã°ã€ã³ç»é¢ã衚瀺ãããŸãã®ã§ã以äžã®ããã«å€ãå ¥åããããã°ã€ã³ããã¿ã³ãæŒäžããŸãã
- ãŠãŒã¶ID: 空ã§ãªãä»»æã®æåå
- ãã¹ã¯ãŒã: ä»»æã®æåå (空ã§ããã)
-
以äžã®å³ã®ãããªç»é¢ã衚瀺ãããããšã確èªããŸãã
-
ããã§ãæ€çŽ¢æ¡ä»¶ãå ¥åãããSearch Recordããã¿ã³ãã¯ãªãã¯ãããšãç»é¢ã®äžéšã«çµæã衚瀺ãããŸãããã®ç»é¢ã®ä»æ§ã¯ä»¥äžã®ãšããã§ãã
- äœãå ¥åããªãã£ãå Žå: å šä»¶æ€çŽ¢
- ããã¹ãããã¯ã¹ã«æ€çŽ¢æ¡ä»¶ãå ¥åããå Žå: å ¥åããæ¡ä»¶ã«ãã AND æ€çŽ¢
ãŸãã¯ãäœãå ¥åããã«ãSearch Recordããã¿ã³ãã¯ãªãã¯ããŸãã
-
以äžã®å³ã®ããã«ãæ€çŽ¢çµæã衚瀺ãããããšã確èªããŸããã¬ã³ãŒãã®å€ãæŽæ°ããå Žåã¯ãããã¹ãããã¯ã¹ã«æ°ããå€ãå ¥åããŠãUpdateããªã³ã¯ãã¯ãªãã¯ããŸããã¬ã³ãŒããåé€ããå Žåã¯ãåé€ãããã¬ã³ãŒãã®ãDeleteããªã³ã¯ãã¯ãªãã¯ããŸãã
ãã¡ã¢ã
ãã®æ®µéã§ã¯ããŸã ããŒã¿ããŒã¹ãžã¯å€æŽå 容ã¯åæ ãããŠããŸããã次ã®ãUpdate the Result Set Using Batch Updateããã¿ã³ã«ãããå€æŽå 容ãããŒã¿ããŒã¹ã«åæ ãããŸãã -
ãUpdate the Result Set Using Batch Updateããã¿ã³ã掻æ§åãããããšã確èªãããUpdate the Result Set Using Batch Updateããã¿ã³ãã¯ãªãã¯ããŸãã
ãã¡ã¢ã
4.3.3 é ãšåæ§ãããã§ãå éšçã«ã¯ Products ããŒãã«ã«å¯ŸããæŽæ°ãšãCategories ããŒãã«ã«å¯ŸããæŽæ°ãããããè¡ãããŸãããã®ããšã¯ãOpen æ£æ¢ã® SQL ãã¬ãŒã¹ãã°ã§ã確èªã§ããŸãã
åç« ã§ã¯ãããŒã¿ã¡ã³ããã³ã¹ç»é¢ã®åºæ¬çãªäœ¿ãæ¹ã«ã€ããŠçŽ¹ä»ããŸãããæ¬ç« ã§ã¯ãèªåçæãããç»é¢ãããžãã¯ãã«ã¹ã¿ãã€ãºããæ¹æ³ã«ã€ããŠçŽ¹ä»ããŸãã
æ¬ç¯ã§ã¯ãçµåããŒãã«ã«å¯ŸããŠãèªåçæãããåé€åŠçãã«ã¹ã¿ãã€ãºããæ¹æ³ã玹ä»ããŸããåé€åŠçãè¡ãå Žåãéçºè ã¯ããããã®ããŒãã«ã®äž»ããŒãšå€éšããŒã®é¢é£ (ã©ã¡ãã芪ããŒãã«ã§ãã©ã¡ããåããŒãã«ã) ããã確èªããäžã§ãåé€åŠçã®é åºã決å®ããå¿ èŠããããŸãã
æ¬ç¯ã§ã¯ããã¹ãçšããŒãã«ã®ããŒã®é¢é£æ§ã«ããšã¥ããŠãèªåçæãããåé€åŠçãã«ã¹ã¿ãã€ãºããæ¹æ³ã玹ä»ããŸãã
æ¬ç¯ã§äœ¿çšããããŒãã«ã®é¢é£ãå³ 6-1 ã«ç€ºããŸããTABL3 ããŒãã«ã® A å㯠TABL2 ããŒãã«ã® A åãåç §ããTABL2 ããŒãã«ã® AX å㯠TABL1 ããŒãã«ã® A åãåç §ããŠããŸããã€ãŸããTABL1 ããŒãã«ãš TABL2 ããŒãã«ã§ã¯ãTABL1 ããŒãã«ã芪ã§ãããTABL2 ããŒãã«ãåãšãªããŸãããŸããTABL2 ããŒãã«ãš TABL3 ããŒãã«ã§ã¯ãTABL2 ããŒãã«ã芪ã§ãããTABL3 ããŒãã«ãåãšãªããŸãã

å³ 6-1ããã¹ãçšããŒãã«ã®é¢é£å³ (ERå³)
-
C:\root\Info.csv
ãã³ããŒããC:\root\Info3.csv
ãäœæããŸãã -
ããã§ã¯ TABL1 ïœ TABL3 ããŒãã«ã䜿çšããããã以äžã®ããã«ãCategories ããŒãã«ãProducts ããŒãã«ãTABL4 ïœ TABL6 ããŒãã«ã®å®çŸ©æ å ±ãåé€ããŸãã
Table name, column information - TABL1,A, ,Y,Z, TABL2,A, ,B,C,AX, TABL3,D, ,E,F,A,
-
C:\root\files\resource\Sql
ãã©ã«ããŒã«ãæ°èŠã« XML ãã¡ã€ã«ãäœæãããã¡ã€ã«åãDaoTABL1_TABL2_TABL3_JOIN_S2_Select.xml
ãšããŸãã -
DaoTABL1_TABL2_TABL3_JOIN_S2_Select.xml
ã以äžã®ããã«å®çŸ©ããŸãã<?xml version="1.0" encoding="UTF-8"?> <ROOT> SELECT TABL1.A [TABL1.A], TABL1.Y [TABL1.Y], TABL1.Z [TABL1.Z], TABL2.A [TABL2.A], TABL2.B [TABL2.B], TABL2.C [TABL2.C], TABL2.AX [TABL2.AX], TABL3.D [TABL3.D], TABL3.E [TABL3.E], TABL3.F [TABL3.F], TABL3.A [TABL3.A] FROM TABL1, TABL2, TABL3 <WHERE> WHERE TABL1.A = TABL2.AX AND TABL2.A = TABL3.A <IF>AND TABL1.A = @TABL1_A<ELSE>AND TABL1.A IS NULL</ELSE></IF> <IF>AND TABL1.Y = @TABL1_Y<ELSE>AND TABL1.Y IS NULL</ELSE></IF> <IF>AND TABL1.Z = @TABL1_Z<ELSE>AND TABL1.Z IS NULL</ELSE></IF> <IF>AND TABL2.A = @TABL2_A<ELSE>AND TABL2.A IS NULL</ELSE></IF> <IF>AND TABL2.B = @TABL2_B<ELSE>AND TABL2.B IS NULL</ELSE></IF> <IF>AND TABL2.C = @TABL2_C<ELSE>AND TABL2.C IS NULL</ELSE></IF> <IF>AND TABL2.AX = @TABL2_AX<ELSE>AND TABL2.AX IS NULL</ELSE></IF> <IF>AND TABL3.D = @TABL3_D<ELSE>AND TABL3.D IS NULL</ELSE></IF> <IF>AND TABL3.E = @TABL3_E<ELSE>AND TABL3.E IS NULL</ELSE></IF> <IF>AND TABL3.F = @TABL3_F<ELSE>AND TABL3.F IS NULL</ELSE></IF> <IF>AND TABL3.A = @TABL3_A<ELSE>AND TABL3.A IS NULL</ELSE></IF> </WHERE> </ROOT>
-
4.2.2 é ããã³ 4.2.3 é ãåèã«ãDPQuery_Tool ã䜿çšããŠã
DaoTABL1_TABL2_TABL3_JOIN_S2_Select.xml
ã®çµæã»ãããããšã«ããããŒã¿ã¡ã³ããã³ã¹ç»é¢ãçæããŸããçæããç»é¢ã¯ãAspx\sample\3Tier
ãã©ã«ããŒã«é 眮ããŸãã -
ãœãªã¥ãŒã·ã§ã³ ãšã¯ã¹ãããŒã©ãŒã§ã
WebForms_Sample
ãå³ã¯ãªãã¯ãããWeb ã¢ããªã±ãŒã·ã§ã³ã«å€æããéžæããã.designer.csããã¡ã€ã«ãçæãããããšã確èªããŸãã
-
ãœãªã¥ãŒã·ã§ã³ ãšã¯ã¹ãããŒã©ãŒã§ã
TABL1_TABL2_TABL3_JOIN_Screen_Detail.aspx.cs
ãéããŸãã -
ã³ãŒããšãã£ã¿ãŒäžéšã®ããããããŠã³ãªã¹ãããã
UOC_btnDelete_Click
ãéžæããŸãã -
UOC_btnDelete_Click
ã¡ãœããã衚瀺ãããããšã確èªããŸããããã«ãUOC_btnDelete_Click
ã¡ãœããã®äžã§ããDelete the data from the XXXX tableããšååã®ã€ããããã³ãŒããããã¯ã確èªããŸãããã¡ã¢ã
ãã®å³ã§ã¯ãäžèšã®ãXXXXãã®éšåããTABL1ããTABL2ããTABL3ãã®é çªã«ãªã£ãŠããŸããããã¯ããã®é çªã«ã¬ã³ãŒãã®åé€åŠçãå®è¡ãããããšã瀺ããŠããŸããããããå³ 6-1 ã«ç€ºããŸããããã«ãTABL1 㯠TABL2 ã®èŠªããŒãã«ã®ãããåºæ¬çã«ã¯åããŒãã«ããé çªã«åé€ããå¿ èŠããããŸãã ãŸããæ¢å®ã§ã¯ã¬ã³ãŒãã®åé€åŠçãé çªã«è¡ãããŸããå®éã®éçºã®å Žé¢ã§ã¯ãããã®èŠªã¬ã³ãŒããåç §ããŠããåã¬ã³ãŒããæ®ã£ãŠããªãããšã確èªããŠããã芪ã¬ã³ãŒããåé€ããããªã©ã®èŠä»¶ãããå ŽåããããŸãããã®å Žåã¯ããDelete the data from the XXXX tableãã®ã³ãŒããããã¯ã®éã«ããåé€ããããšããŠãã芪ã¬ã³ãŒããåç §ããŠããåã¬ã³ãŒãã®ååšãã§ãã¯ããè¿œå ããå¿ èŠããããŸããæ¬ãã¥ãŒããªã¢ã«ã§ã¯ãã³ãŒãããããããããããããåé€ã®é çªãå€ããã ãã«çããŸãã -
åé€åŠçã®å®è¡é åºãããTABL3ããTABL2ããTABL1ã(åããŒãã«ãã芪ããŒãã«ãž) ã«ãªãããã«ãã³ãŒããä¿®æ£ããŸãã
-
åæ§ã«ã
TABL1_TABL2_TABL3_JOIN_Screen_SearchAndUpdate.aspx.cs
ã®ãUOC_btnBatUpd_Clickãã¡ãœããããåé€åŠçã®é çªããTABL3ããTABL2ããTABL1ãã«ãªãããã«ã³ãŒããä¿®æ£ããŸãã
-
4.3 ç¯ãåèã«ã
TABL1_TABL2_TABL3_JOIN_Screen_ConditionalSearch.aspx
ãã¹ã¿ãŒãããŒãžã«æå®ãããããã°å®è¡ããŸãã -
ä»»æã®ã¬ã³ãŒããæ€çŽ¢ãããDelete Recordããã¯ãªãã¯ããã3 Data is Deleted from the table Successfullyãã®ã¡ãã»ãŒãžã衚瀺ãããããšã確èªããŸãã
-
SQL ãã¬ãŒã¹ãã°ãéãããTABL3ããTABL2ããTABL1ãã®é çªã«åé€åŠçãå®è¡ãããŠããããšã確èªããŸãã
[2016/12/05 16:17:01,891],[INFO ],[6],21,0,[commandText]: -- DaoTABL3_S4_Delete -- 2016/12/5 æ¥ç« 倪é DELETE FROM [TABL3] WHERE [D] = @D [commandParameter]:D=1,TABL2_A=1,TABL1_A=1, [2016/12/05 16:17:01,910],[INFO ],[6],1,0,[commandText]: -- DaoTABL2_S4_Delete -- 2016/12/5 æ¥ç« 倪é DELETE FROM [TABL2] WHERE [A] = @A [commandParameter]:TABL3_D=1,A=1,TABL1_A=1, [2016/12/05 16:17:01,928],[INFO ],[6],1,0,[commandText]: -- DaoTABL1_S4_Delete -- 2016/12/5 æ¥ç« 倪é DELETE FROM [TABL1] WHERE [A] = @A [commandParameter]:TABL3_D=1,TABL2_A=1,A=1,
楜芳çæä»å¶åŸ¡ãšã¯ãããŒãã«ã®æä»å¶åŸ¡ã®äžã€ã§ããã¬ã³ãŒããæŽæ°ããçŽåã«ãä»ã®ãŠãŒã¶ãŒã«ãã£ãŠãã®ã¬ã³ãŒããå ã«æŽæ°ãããŠããªããããã§ãã¯ããæŽæ°ãããŠããªããã°æŽæ°åŠçãç¶è¡ããæŽæ°ãããŠããã°æŽæ°åŠçããã£ã³ã»ã«ããä»çµã¿ã§ããä»ã®ãŠãŒã¶ãŒã«ãã£ãŠãã®ã¬ã³ãŒããæŽæ°ãããããšãç¥ãããã«ãã¿ã€ã ã¹ã¿ã³ãã䜿çšããã±ãŒã¹ãå€ãã§ãã
ã¿ã€ã ã¹ã¿ã³ãã䜿çšããã楜芳çæä»å¶åŸ¡ã®ä»çµã¿ãå³ 6-2 ã«ç€ºããŸãã

å³ 6-2ã楜芳çæä»å¶åŸ¡ã®ä»çµã¿
Open æ£æ¢ã«ã¯ããã®æ¥œèŠ³çæä»å¶åŸ¡ãå«ããããŒã¿ã¡ã³ããã³ã¹ç»é¢ãçæã§ããŸããæ¬ç¯ã§ã¯ããã®æ¹æ³ã玹ä»ããŸãã
æ¬ç¯ã§äœ¿çšããããŒãã«ã®é¢é£ãå³ 6-3 ã«ç€ºããŸãã倧ããã¯å³ 6-1 ãšå€ãããŸããããåããŒãã«ã«ãã¿ã€ã ã¹ã¿ã³ãå€ãæ ŒçŽããããã®ãTimeStampãåãããç¹ãç°ãªããŸãã

å³ 6-3ããã¹ãçšããŒãã«ã®é¢é£å³ (ERå³)
-
C:\root\Info.csv
ãã³ããŒããC:\root\Info4.csv
ãäœæããŸãã -
ããã§ã¯ TABL4 ïœ TABL6 ããŒãã«ã䜿çšããããã以äžã®ããã«ãCategories ããŒãã«ãProducts ããŒãã«ãTABL1 ïœ TABL3 ããŒãã«ã®å®çŸ©æ å ±ãåé€ããŸãã
Table name, column information - TABL4,A, ,Y,Z,TimeStamp, TABL5,A, ,B,C,AX,TimeStamp, TABL6,D, ,E,F,A,TimeStamp,
-
C:\root\files\resource\Sql
ãã©ã«ããŒã«ãæ°èŠã«XMLãã¡ã€ã«ãäœæãããã¡ã€ã«åãDaoTABL4_TABL5_TABL6_JOIN_S2_Select.xml
ãšããŸãã -
DaoTABL4_TABL5_TABL6_JOIN_S2_Select.xml
ã以äžã®ããã«å®çŸ©ããŸãã<?xml version="1.0" encoding="UTF-8"?> <ROOT> SELECT TABL4.A [TABL4.A], TABL4.Y [TABL4.Y], TABL4.Z [TABL4.Z], TABL4.TimeStamp [TABL4.TimeStamp], TABL5.A [TABL5.A], TABL5.B [TABL5.B], TABL5.C [TABL5.C], TABL5.AX [TABL5.AX], TABL5.TimeStamp [TABL5.TimeStamp], TABL6.D [TABL6.D], TABL6.E [TABL6.E], TABL6.F [TABL6.F], TABL6.A [TABL6.A], TABL6.TimeStamp [TABL6.TimeStamp] FROM TABL4, TABL5, TABL6 <WHERE> WHERE TABL4.A = TABL5.AX AND TABL5.A = TABL6.A <IF>AND TABL4.A = @TABL4_A<ELSE>AND TABL4.A IS NULL</ELSE></IF> <IF>AND TABL4.Y = @TABL4_Y<ELSE>AND TABL4.Y IS NULL</ELSE></IF> <IF>AND TABL4.Z = @TABL4_Z<ELSE>AND TABL4.Z IS NULL</ELSE></IF> <IF>AND TABL5.A = @TABL5_A<ELSE>AND TABL5.A IS NULL</ELSE></IF> <IF>AND TABL5.B = @TABL5_B<ELSE>AND TABL5.B IS NULL</ELSE></IF> <IF>AND TABL5.C = @TABL5_C<ELSE>AND TABL5.C IS NULL</ELSE></IF> <IF>AND TABL5.AX = @TABL5_AX<ELSE>AND TABL5.AX IS NULL</ELSE></IF> <IF>AND TABL6.D = @TABL6_D<ELSE>AND TABL6.D IS NULL</ELSE></IF> <IF>AND TABL6.E = @TABL6_E<ELSE>AND TABL6.E IS NULL</ELSE></IF> <IF>AND TABL6.F = @TABL6_F<ELSE>AND TABL6.F IS NULL</ELSE></IF> <IF>AND TABL6.A = @TABL6_A<ELSE>AND TABL6.A IS NULL</ELSE></IF> </WHERE> </ROOT>
-
4.2.2 é ãåèã«ãDPQuery_Tool ã䜿çšããŠã
DaoTABL4_TABL5_TABL6_JOIN_S2_Select.xml
ã®çµæã»ãããããšã«ããããŒã¿ã¡ã³ããã³ã¹ç»é¢ãçæããŸããããã§ã楜芳çæä»å¶åŸ¡ã®ããã®åŠçãèªåçæãããããããã¹ãããïŒãã¿ãã§ä»¥äžã®ããã«èšå®ããŠããïŒ Daoã»SQLãDTOãã¡ã€ã«ãçæãã ïŒ1ããã¿ã³ãã¯ãªãã¯ããŸãã- ã¿ã€ã ã¹ã¿ã³ãåå: TimeStamp
- æŽæ°æ¹æ³: SYSDATETIME()
- ã¿ã€ã ã¹ã¿ã³ãå¿ é : ãã§ãã¯ãã
-
4.2.3 é ãåèã«ãçæããç»é¢ã
Aspx\sample\3Tier
ãã©ã«ããŒã«é 眮ããŸãã -
ãœãªã¥ãŒã·ã§ã³ ãšã¯ã¹ãããŒã©ãŒã§ã
WebForms_Sample
ãå³ã¯ãªãã¯ãããWebã¢ããªã±ãŒã·ã§ã³ã«å€æããéžæããã.designer.csããã¡ã€ã«ãçæãããããšã確èªããŸãã
-
ãœãªã¥ãŒã·ã§ã³ ãšã¯ã¹ãããŒã©ãŒã§ã
TABL4_TABL5_TABL6_JOIN_Screen_SearchAndUpdate.aspx.cs
ãéããŸãã -
ã³ãŒããšãã£ã¿ãŒäžéšã®ããããããŠã³ãªã¹ãããã
UOC_btnBatUpd_Click
ãéžæããŸãã -
以äžã®ã³ãŒããæ€çŽ¢ããŸãã
//Timestamp column parameterValue.AndEqualSearchConditions.Add("TimeStamp", "");
ãã¡ã¢ã
ãã®ã³ãŒãã¯ãTimeStamp åãæ€çŽ¢æ¡ä»¶ã«è¿œå ããŠããã³ãŒãã§ãããã®ã³ãŒãã¯ãTABL4ãTABL5ãTABL6 ã®åããŒãã«ã®æŽæ°åŠçã®äžã«ããããå®è£ ãããŠããŸãããã®ããããã® TimeStamp åãã©ã®ããŒãã«ã® TimeStamp åãªã®ããåºå¥ãããå¿ èŠããããŸãã -
äžèšã®éšåãã以äžã®ããã«ä¿®æ£ããŸãã(ããããã[ããŒãã«å]_TimeStamp ãšãªãããã«ä¿®æ£ããŸã)
-
TABL4 æŽæ°éšå
//Timestamp column parameterValue.AndEqualSearchConditions.Add("TABL4_TimeStamp", "");
-
TABL5 æŽæ°éšå
//Timestamp column parameterValue.AndEqualSearchConditions.Add("TABL5_TimeStamp", "");
-
TABL6 æŽæ°éšå
//Timestamp column parameterValue.AndEqualSearchConditions.Add("TABL6_TimeStamp", "");
-
-
4.3 ç¯ãåèã«ã
TABL4_TABL5_TABL6_JOIN_Screen_ConditionalSearch.aspx
ãã¹ã¿ãŒãããŒãžã«æå®ãããããã°å®è¡ããŸãã -
ä»»æã®ã¬ã³ãŒãã®å€ãæŽæ°ãããUpdate Recordããã¿ã³ãã¯ãªãã¯ããã3 Data is Deleted from the table Successfullyãã®ã¡ãã»ãŒãžã衚瀺ãããããšã確èªããŸãã
-
次ã«ã楜芳çæä»å¶åŸ¡ããã¹ãããããããã©ãŠã¶ã 2 ã€èµ·åããåãã¬ã³ãŒããåç §ãããŸãã
-
çæ¹ã®ãã©ãŠã¶ã§å€ãæŽæ°ããŸãã
-
ããçæ¹ã®ãã©ãŠã¶ã§å€ãæŽæ°ããŸãããã ãããã§ã«ãã®ã¬ã³ãŒãã¯ä»ã®ãã©ãŠã¶ (ãŠãŒã¶ãŒ) ã«ãã£ãŠæŽæ°ãããŠããŸãã®ã§ã楜芳çæä»å¶åŸ¡ã«ãããã¬ã³ãŒããæŽæ°ãããªãããšã確èªããŸãã
æ¥åèŠä»¶ã«ãã£ãŠã¯ãæŽæ°ããå€ã®é¢é£ãã§ãã¯ãå¿ èŠã«ãªãå ŽåããããŸããããšãã°ããéå§æ¥ããçµäºæ¥ãã®ã«ã©ã ããã£ãå Žåããçµäºæ¥ã¯éå§æ¥ãããåŸã§ãªããã°ãªããªãããªã©ã§ããæ¬ç¯ã§ã¯ãèªåçæãããã¡ã³ããã³ã¹ç»é¢ã«ãå€ã®é¢é£ãã§ãã¯ãè¿œå ããæ¹æ³ã玹ä»ããŸãã
-
ãœãªã¥ãŒã·ã§ã³ ãšã¯ã¹ãããŒã©ãŒã§ã
AppCode\sample\Business
ãã©ã«ããŒãå³ã¯ãªãã¯ãããè¿œå ã-ãã¯ã©ã¹ããéžæããŸãã -
My3TierEngine.cs
ã¯ã©ã¹ãè¿œå ããŸãã -
Open æ£æ¢ã®åã¯ã©ã¹ãåç §ããããã以äžã®ã³ãŒããè¿œå ããŸã
// Business using Touryo.Infrastructure.Business.Business; using Touryo.Infrastructure.Business.Common; using Touryo.Infrastructure.Business.Dao; using Touryo.Infrastructure.Business.Exceptions; using Touryo.Infrastructure.Business.Presentation; using Touryo.Infrastructure.Business.Util; // Framework using Touryo.Infrastructure.Framework.Business; using Touryo.Infrastructure.Framework.Common; using Touryo.Infrastructure.Framework.Dao; using Touryo.Infrastructure.Framework.Exceptions; using Touryo.Infrastructure.Framework.Presentation; using Touryo.Infrastructure.Framework.Util; using Touryo.Infrastructure.Framework.Transmission; // Parts using Touryo.Infrastructure.Public.Db; using Touryo.Infrastructure.Public.IO; using Touryo.Infrastructure.Public.Log; using Touryo.Infrastructure.Public.Str; using Touryo.Infrastructure.Public.Util; // B å±€ã¯ã©ã¹ using WebForms_Sample.AppCode.sample.Business;
-
Open æ£æ¢ã¯ãæ¢å®ã§ã¯ Open æ£æ¢ãæäŸããŠãã
_3TierEngine
ã¯ã©ã¹ã䜿çšããŠãããŒã¿ã¡ã³ããã³ã¹ãè¡ããŸããããã§ãå ã»ã©äœæããMy3TierEngine
ã¯ã©ã¹ã«ã_3TierEngine
ã¯ã©ã¹ãç¶æ¿ãããŸããpublic class My3TierEngine : _3TierEngine { }
-
My3TierEngine
ã¯ã©ã¹ã以äžã®ããã«å®è£ ããŸãããã€ã³ãã¯ãå€ã®é¢é£ãã§ãã¯ãå®è£ ããããã®UOC_RelatedCheck
ã¡ãœããã§ãããã®ã¡ãœããã«é¢é£ãã§ãã¯ããžãã¯ãå®è£ ããããšã§ãããŒãã«æŽæ°æã«ãå€ã®é¢é£ãã§ãã¯ãå®è¡ã§ããŸãã(ãªããæ¬ãã¥ãŒããªã¢ã«ã§ã¯ãé¢é£ãã§ãã¯ã®å®è£ ç®æã®ã¿ç€ºããå®éã®ããžãã¯ã¯å®è£ ããŸãã)public class My3TierEngine : _3TierEngine { /// <summary>Constructor</summary> public My3TierEngine() { // TODO: Add the constructor logic here } #region Fixed execution /// <summary>Call base</summary> /// <param name="parameterValue">Argument class</param> protected override void UOC_SelectRecord(_3TierParameterValue parameterValue) { base.UOC_SelectRecord(parameterValue); } /// <summary>Call base</summary> /// <param name="parameterValue">Argument class</param> protected override void UOC_UpdateRecordDM(_3TierParameterValue parameterValue) { base.UOC_UpdateRecordDM(parameterValue); } /// <summary>Call base</summary> /// <param name="parameterValue"> Argument class </param> protected override void UOC_DeleteRecordDM(_3TierParameterValue parameterValue) { base.UOC_DeleteRecordDM(parameterValue); } /// <summary>Call base</summary> /// <param name="parameterValue"> Argument class </param> protected override void UOC_BatchUpdateDM(_3TierParameterValue parameterValue) { base.UOC_BatchUpdateDM(parameterValue); } #endregion /// <summary> Work code class for three layer data bind related check </summary> /// <param name="parameterValue"> Argument class </param> protected override void UOC_RelatedCheck(_3TierParameterValue parameterValue) { // TODO: ããã«ãå€ã®é¢é£ãã§ãã¯ãå®è£ ãã } }
-
UOC_RelatedCheck
ã¡ãœããã«ãã¬ãŒã¯ãã€ã³ãã眮ããŸã -
TABL1_TABL2_TABL3_JOIN_Screen_Detail.aspx.cs
ãéããUOC_btnUpdate_Click
ã¡ãœããããã³UOC_btnDelete_Click
ã¡ãœããã®äžã§ã_3TierEngine
ã¯ã©ã¹ãåç §ããŠããç®æãæ€çŽ¢ããŸãã// B layer Initialize _3TierEngine b = new _3TierEngine();
-
äžèšã®éšåãã以äžã®ããã«ä¿®æ£ããŸãã(åç §ããã¯ã©ã¹ã
My3TierEngine
ã«ããŸã)// B layer Initialize My3TierEngine b = new My3TierEngine();
-
TABL1_TABL2_TABL3_JOIN_Screen_ConditionalSearch.aspx
ãã¹ã¿ãŒãããŒãžã«èšå®ããã¢ããªã±ãŒã·ã§ã³ããããã°ããŸãã -
ã¬ã³ãŒãæŽæ°æã«ããã¬ãŒã¯ãã€ã³ããèšçœ®ãã
UOC_RelatedCheck
ã¡ãœããã§ãã¬ãŒã¯ããããšã確èªããŸãã