_G.gif" border="0" hspace="0"> 

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,

[proTotalHoras] [int] NOT NULL,

[proTotalCusto] [decimal](14, 2) NOT NULL,

[proTotalDespesas] [decimal](14, 2) NOT NULL,

CONSTRAINT [PK_Projetos_1] PRIMARY KEY CLUSTERED

(

[proId] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

SET ANSI_PADDING OFF

GO

USE [WMProjetos]

GO

USE [WMProjetos]

GO

USE [WMProjetos]

GO

ALTER TABLE [dbo].[Projeto_Apontamentos] WITH CHECK ADD CONSTRAINT

[FK_Projeto_Apontamentos_Projetos] FOREIGN KEY([proId])

REFERENCES [dbo].[Projetos] ([proId]) ...

Quer ler esse conteúdo completo? Tenha acesso completo