Criando um site para Controle de Projetos com ASP.NET 2.0 – Parte I
Veja nesse artigo como construir uma aplicação que faz controle de projetos utilizando as principais funcionalidades do ASP.NET 2.0.
Clique aqui para ler este artigo em pdf
Clique aqui para ler todos os artigos desta edição
Criando um site para Controle de Projetos com ASP.NET 2.0 – Parte I
Que tal explorarmos algumas funcionalidades do ASP.NET 2.0 desenvolvendo uma aplicação real? Interessante, não é? Quando o assunto é ASP.NET, ouvimos falar de controles de Login, DataSets, Profiles, Ajax, e mais uma porção de coisas separadamente, mas raramente vemos todas essas funcionalidades em um único exemplo. É isso que faremos neste artigo.
De uma forma bem prática e objetiva iremos construir uma aplicação que faz controle de projetos utilizando as principais funcionalidades do ASP.NET 2.0. Vamos fazer uma aplicação de controle de projetos, pois é um tipo de aplicativo muito comum em nosso dia-a-dia de uma equipe de desenvolvedores, ou você nunca teve que preencher uma planilha de despesas?
Database
Toda aplicação começa com a modelagem de uma base de dados. Neste artigo utilizaremos o SQL Server 2005, mas você também pode utilizar a versão 2000 ou a Express. Não vamos entrar nos detalhes da estrutura das tabelas desse sistema.
Vou propor um diagrama, que você pode conferir na Figura 1, e construiremos nossa aplicação em cima dessas tabelas. Obviamente que esse é um tipo de aplicação que pode sofrer variações entre uma empresa e outra, portanto sinta-se a vontade em alterar essa estrutura, ou até criar a sua própria estrutura de tabelas.
Figura 1. Diagrama do banco VMProjetos
Veja que nosso database foi criado com o nome VMProjetos, e nele temos quatro tabelas:
·Clientes: Cadastraremos os clientes do sistema. Veja que a chave primária nesse caso é o CNPJ do cliente;
·Projetos: É a principal tabela da aplicação, onde abriremos novos projetos. Veja que a chave primária é o proId, que foi declarado como inteiro e definido como identity;
·Projeto_Apontamentos: É a tabela onde os recursos envolvidos no projeto deverão apontar as horas consumidas durante o projeto. Veja que a chave primária dessa tabela é o ID do Projeto junto com o ID do Apontamento. O ID do apontamento (apoId) também foi definido como inteiro e identity;
·Projeto_Despesas: Nessa tabela os recursos irão lançar as despesas ocorridas durante o projeto. Assim com nos apontamentos, a chave primária dessa tabela é o ID do Projeto juntamente com o ID da Despesa. O ID da despesa (desIs) foi definido como inteiro e identity.
Você pode conferir o script completo para a criação das tabelas na Listagem 1.
Listagem 1. Script para a criação das tabelas no banco WPProjetos
USE [WMProjetos]
GO
/****** Table [dbo].[Clientes] ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Clientes](
[cliCNPJ] [varchar](18) COLLATE Latin1_General_CI_AS NOT NULL,
[cliNome] [varchar](50) COLLATE Latin1_General_CI_AS NOT NULL,
[cliEndereco] [varchar](50) COLLATE Latin1_General_CI_AS NOT NULL,
[cliCidade] [varchar](50) COLLATE Latin1_General_CI_AS NOT NULL,
[cliUF] [varchar](50) COLLATE Latin1_General_CI_AS NOT NULL,
[cliCEP] [varchar](9) COLLATE Latin1_General_CI_AS NOT NULL,
[cliFone] [varchar](15) COLLATE Latin1_General_CI_AS NOT NULL,
CONSTRAINT [PK_Clientes] PRIMARY KEY CLUSTERED
(
[cliCNPJ] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Table [dbo].[Projeto_Apontamentos] ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Projeto_Apontamentos](
[proId] [int] NOT NULL,
[apoId] [int] IDENTITY(1,1) NOT NULL,
[apoRecurso] [nvarchar](50) COLLATE Latin1_General_CI_AS NOT NULL,
[apoCustoHora] [decimal](8, 2) NOT NULL,
[apoDataHoraIni] [datetime] NOT NULL,
[apoDataHoraFim] [datetime] NOT NULL,
[apoHoras] [int] NOT NULL,
[apoTotalCusto] [decimal](12, 2) NOT NULL,
[apoDescricao] [varchar](500) COLLATE Latin1_General_CI_AS NOT NULL,
CONSTRAINT [PK_Projeto_Apontamentos_1] PRIMARY KEY CLUSTERED
(
[proId] ASC,
[apoId] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Table [dbo].[Projeto_Despesas] ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Projeto_Despesas](
[proId] [int] NOT NULL,
[desId] [int] IDENTITY(1,1) NOT NULL,
[desRecurso] [nvarchar](256) COLLATE Latin1_General_CI_AS NOT NULL,
[desData] [datetime] NOT NULL,
[desValor] [decimal](12, 2) NOT NULL,
[desNroNF] [varchar](20) COLLATE Latin1_General_CI_AS NOT NULL,
CONSTRAINT [PK_Projeto_Despesas] PRIMARY KEY CLUSTERED
(
[proId] ASC,
[desId] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Table [dbo].[Projetos] ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Projetos](
[proId] [int] IDENTITY(1,1) NOT NULL,
[cliCNPJ] [varchar](18) COLLATE Latin1_General_CI_AS NOT NULL,
[proNome] [varchar](50) COLLATE Latin1_General_CI_AS NOT NULL,
[proGerente] [nvarchar](256) COLLATE Latin1_General_CI_AS NOT NULL,
"Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo