Editorial. sumário EDITORIAL. Olá Amigos do The Club,



Documentos relacionados
Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

AMBIENTE. FORMULÁRIO: é a janela do aplicativo apresentada ao usuário. Considere o formulário como a sua prancheta de trabalho.

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Display de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Microsoft Office PowerPoint 2007

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

MANUAL DO ANIMAIL Terti Software

SUMÁRIO TUTORIAL DO HQ. 2 DICAS PEDAGÓGICAS:. 2 DOWNLOAD DA INSTALAÇÃO. 2 PASSO 1 FORMULÁRIO PARA DOWNLOAD. 2 PASSO 2 ESCOLHENDO A VERSÃO.

Inserindo Dados no Banco de Dados Paradox.

Tabela e Gráficos Dinâmicos Como estruturar dinamicamente dados no Excel

Banco de Dados Microsoft Access: Criar tabelas

Manual AGENDA DE BACKUP

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO DELPHI FORMULÁRIO COM ABAS E BUSCAS DE REGISTROS

Banco de Dados Microsoft Access: Criar tabelas. Vitor Valerio de Souza Campos

APOSTILA DE EXEMPLO. (Esta é só uma reprodução parcial do conteúdo)

Primeiros Passos para o Simulador de Ações do FinanceDesktop. Parte A INICIANDO E CONFIGURANDO (5 passos)

Dicas para usar melhor o Word 2007

BH PARK Software de Estacionamento

Manual do Google agenda. criação e compartilhamento de agendas

ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007

MANUAL DO PVP SUMÁRIO

Como incluir artigos:

Segurança de Acesso a Banco de Dados no MS SQL Server

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

Como Gerar documento em PDF com várias Imagens

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

Manual Captura S_Line

CRIAÇÃO DE RELATÓRIOS EM DELPHI

MANUAL DE INSTALAÇÃO DO ODONTO TECHNOLOGY

Guia Sphinx: instalação, reposição e renovação

EXEMPLO DE COMO FAZER UMA MALA DIRETA

Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo.

Entradas Digitais. PdP. Autores: Luís Fernando Patsko e Tiago Lone Nível: Intermediário Criação: 27/12/2005 Última versão: 18/12/2006

Manual de Publicaça o no Blog da Aça o TRIBOS nas Trilhas da Cidadania

O Windows 7 é um sistema operacional desenvolvido pela Microsoft.

Tutorial Gerar arquivo PDF. Gerando um documento pdf com várias imagens 1- Inserir imagem no Word

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

Microsoft Access: Criar consultas para um novo banco de dados. Vitor Valerio de Souza Campos

Registro e Acompanhamento de Chamados

PdP. Autor: Luís Fernando Patsko e Tiago Lone Nível: Intermediário Criação: 26/12/2005 Última versão: 18/12/2006

Manual do Sistema "Vida Controle de Contatos" Editorial Brazil Informatica

Apostila Oultlook 2007 Prof. Fabrício Melo

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES I PROFESSOR RAFAEL BARRETO

Guia de Início Rápido

1 UNIT Universidade do Trabalhador Dr. Abel dos Santos Nunes

Associação Educacional Dom Bosco Curso de Engenharia 1º ano

Resumo da Matéria de Linguagem de Programação. Linguagem C

Manual AGENDA DE BACKUP

A Estação da Evolução

- Versão 1.0 Página 1

Revisão: Introdução. - Integração com o AutoManager; 1 Atualização de versão do banco de dados PostgreSQL

Como atualizar os preços da ABCFarma.

Como instalar uma impressora?

TUTORIAL COMO CRIAR E EDITAR UM VÍDEO NO WINDOWS MOVIE MAKER*

Como funciona? SUMÁRIO

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

MANUAL DE UTILIZAÇÃO SISTEMA DE CADASTRO INTRANET

O que há de novo. Audaces Idea

Guia Site Empresarial

Google Drive. Passos. Configurando o Google Drive

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

MANUAL TISS Versão

Manual Simulador de Loja

Manual Equipamento ST10 Flasher Rev. 1

Simulador ITIL Exame de Certificação da EXIM

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos

Autor: Tiago Lone Nível: Básico Criação: 19/12/2005 Última versão: 18/12/2006. PdP. Pesquisa e Desenvolvimento de Produtos

Sistema de Chamados Protega

Data Transformation Services (DTS) por Anderson Ferreira Souza

Iniciação à Informática

Atualizaça o do Maker

Manual do Usuário Android Neocontrol

Cartilha da Nota Fiscal Eletrônica 2.0 Hábil Empresarial PROFISSIONAL & Hábil Enterprise

Produção de tutoriais. Suellem Oliveira

ECD1200 Equipamento de Consulta de Dados KIT DE DESENVOLVIMENTO

1 Inicie um novo. Guia de Referência Rápida de Gerenciamento de Projeto para o Project projeto

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

Gerenciamento de Arquivos e Pastas. Professor: Jeferson Machado Cordini jmcordini@hotmail.com

Procedimentos para Reinstalação do Sisloc

Manual UNICURITIBA VIRTUAL para Professores

Como funcionam os comandos de SQL no Logic Basic Por Alan Oliveira

Delphi 7 Aula 01 Área do Triângulo

Lição 1 - Criação de campos calculados em consultas

Unidade 7: Panes no Excel

Trecho retirando do Manual do esocial Versão 1.1

Menu Utilitários. Atualização do Banco de Dados Atualização e organização dos arquivos existentes

Lazarus pelo SVN Linux/Windows

CONFIGURAÇÃO DE REDE SISTEMA IDEAGRI - FAQ CONCEITOS GERAIS

Celebre este natal e ano novo junto aos seus amigos e familiares distantes.

Manual de operação. BS Ponto Versão 5.1

CURSO DE INFORMÁTICA BÁSICA AULA 2 O AMBIENTE WINDOWS

Transcrição:

arquivo em corel 1

EDITORIAL Editorial THE CLUB Av. Profº Celso Ferreira da Silva, 190 Jd. Europa - Avaré - SP - CEP 18.707-150 Informações: (14) 3732-3689 Suporte: (14) 3733-1588 - Fax: (14) 3732-0987 Internet http://www.theclub.com.br Cadastro: cadastro@theclub.com.br Suporte: suporte@theclub.com.br Informações: info@theclub.com.br Dúvidas Correspondência ou fax com dúvidas devem ser enviados ao - THE CLUB, indicando Suporte. Opinião Se você quer dar a sua opinião sobre o clube em geral, mande a sua correspondência para a seção Tire sua dúvida. Reprodução A utilização, reprodução, apropriação, armazenamento em banco de dados, sob qualquer forma ou meio, de textos, fotos e outras criações intelectuais em cada publicação da revista The Club Megazine são terminantemente proibidos sem autorização escrita dos titulares dos direitos autorais. Impressão e acabamento: HIPERGRAF Indústria Gráfica Tel.: (14) 3641-1665 - Cep 17340-000 Rua Francisca A. Pereira Borges, 436 Barra Bonita - Vila São Caetano Tiragem: 5.000 exemplares Copyright The Club Megazine 2007 Diretor Técnico Mauro Sant Anna Colaboradores Mauto Sant Anna Delphi é marca registrada da Borland International, as demais marcas citadas são registradas pelos seus respectivos proprietários. Olá Amigos do The Club, E stamos chegando em nossa edição de número 156 da The Club Megazine, com matérias, dicas e muitas outras coisas, tudo para satisfação dos senhores associados. Sempre trabalhamos com o intuito de poder ajudá-los. Estamos trazendo duas matérias do nosso Consultor Técnico Thiago Cavalheiro Montebugnoli, uma de um gerador de relatórios chamado ReportBuilder, com uma breve explicação de seus recursos seguido de um exemplo prático e a outra algumas dicas para instalar o Firebird no Windows Vista, inclusive uma dúvida freqüente em nosso suporte técnico. Vitor Scarso, nosso consultor técnico, vem com uma matéria interessante e prática sobre como trabalhar com Stored Procedures, com a intenção de poder sanar parte das dúvidas do pessoal que trabalha com elas. Não deixem de conferir duas matérias do nosso colaborador Fábio Câmara, uma que trata de Técnicas de Redimensionamento de Forms e outra denominada Gerente de Projetos, uma nova ótica, que certamente serão úteis. Não podemos esquecer de nossa seção de Dicas e Truques e Perguntas e Respostas. Boa Leitura e sucesso a todos. sumário - Editorial... 03 - Report Builder... 04 Conhecendo os recursos desse gerador de relatórios - Stored Procedures... 08 Sem segredos! - Técnicas de redimensionamento de forms...13 - Instalando o Firebird no Windows Vista...17 - Gerente de projetos: uma nova ótica...18 - Dicas & Truques... 21 - Perguntas & Respostas... 26 3

delphi ReportBuilder Conhecendo os Recursos deste Gerador de Relatórios Nesta matéria iremos conhecer este poderoso gerador de relatório denominado ReportBuilder. Ele se diferencia da forma de trabalhar dos outros geradores de relatório como o Quick Report, ou até mesmo o Fortes Report. Vale salientar a imensa quantidade de recursos e a facilidade de construir relatórios possuindo algumas características importantes que vale salientar, como: A fácil instalação e manuseio dos componentes, sua utilização difere muito do Quick Report, ou seja não precisa de muito adaptação do programador. Procurarei abordar os principais componentes e demonstrar seu poderio seguido de uns exemplos bem simples de sua utilização. Entendendo o Funcionamento Observe na Figura 01 o esquema de como é o funcionamento do ReportBuilder. Report Output: Saída do relatório, ou seja o resultado final para o usuário. A instalação Infelizmente ele não é gratuito, mas possui uma versão trial no seguinte site http://www.digital-metaphors.com/ que iremos desfrutá-lo neste artigo. Utilizaremos a versão Server ( a mais completa), para isto entre no site acima e através da aba Download escolha Server 10.06 for Delphi 7 e em seguida baixe o seu instalador. A instalação é bem simples, feche o Delphi 7 e dê um duplo clique em seu arquivo de instalação. Leia atentamente sua Licença (lembrando que estamos utilizando uma versão demo) e em seguida clique em next. Aparecerá algumas janelas para escolher o diretório de instalação, entre outras configurações. Instale tudo como padrão. Conhecendo os componentes Abra o Delphi 7 e localize a paleta chamada RBuilder, veja a Figura 02. Figura 02. Paleta de componentes. Figura 01. Equação do ReportBuilder. Em seguida irei dar uma breve explicação da dita Equação do Report- Builder. Data Access: Acesso aos dados, seria a recuperação dos dados de uma base de dados qualquer, seja por tabelas ou outra série de dados de forma organizada. Data Process: Processamento dos dados, camada intermediária para o processamento dos dados. Report Layout: Layout do relatório, é a disposição e o comportamento dos componentes dentro do relatório. Irei dar uma breve explicação dos principais componentes encontrados nesta paleta. ppdbpipeline: Utilizado para acesso aos dados. Componente compatível com Tdataset. O ppdbpipeline é conectado através da propriedade Datasource. ppbdepipeline: Utilizado especificamente para acesso aos dados utilizando o BDE. As características são as mesmas no descrito acima. pptextpipeline: Utilizado para acessar arquivos textos. As características são parecidas com os descritos acima. ppjitpipeline: Quando ligado a propriedade DataPipeline de qualquer componente de relatório Data-Aware, esse componente 4

delphi pode ser usado para acessar dados armazenados em objetos do Delphi. ppreport: O principal componente do ReportBuilder. Ao clicar com o botão direito escolhendo Report Designer... é possível verificar o layout do relatório. ppviewer: É um objeto pouco utilizado, útil para que você possa substituir o formulário padrão utilizado pelo ReportBuilder para visualização e impressão de relatórios por formulários criados. pparchivereader: Componente utilizado para ler relatórios salvos com extensão (.raf) ppdbarchivereader: Componente utilizado para manipular relatórios salvos em tabelas do Banco de Dados. ppdesigner: Utilizado para que os usuários finais possam customizar seus relatórios junto com sua aplicação. ppreportexplorer: Permite que os usuários finais salve e organize seus relatórios em uma estrutura de diretórios. ppdatadictionary: É possível controlar as tabelas e campos que o usuário pode ver, como também fornece relacionamentos default entre tabelas. Logo abaixo irei explicar e apresentar alguns dos principais recursos desta ferramenta. Figura 04. Barra de Ferramentas. A barra de ferramentas é dividida em três segmentos: Na parte esquerda da barra encontram-se os componentes de interface, na região central os componentes ditos Data-Awares e na direita os relacionados aos tipos de bandas. Label, Memo e Richtext: A mesma funcionalidade dos componentes da própria IDE do Delphi. System Variable: Recursos do sistema. Interessante, permite colocar a data atual, data e hora atual, nome do documento, número de páginas entre outras coisas. Poderá ser alterado através da propriedade VarType e seu formato é controlado pela propriedade DisplayFormat, veja Figura 05 abaixo: Neste momento iremos conhecer alguns dos principais recursos deste gerador de relatórios para adiante montarmos um exemplo simples. Para isto abra o Delphi 7 e coloque no formulário um componente chamado ppreport e em seguida dê um duplo clique. Aparecerá uma mensagem indicando que se trata de uma cópia Demo e mais algumas informações relevantes para poder obter o produto completo. Veja a Figura 03 o layout. Figura 05. System Variable. Shape: Permite colocar figuras geométricas no relatório como (quadrados, retângulos, círculos, elipses). Lines: Inserir linhas, útil para fazer divisões entre os campos ou entre as bandas do relatório. Figura 03. Design do ReportBuilder. Barcode e 2DBarcode: Código de barras, recurso muito interessante em se tratando de geradores de relatórios, um exemplo disto é o Quick Report, é necessário componentes de terceiros para obter este recurso. 5

delphi CheckBox: Possibilidade da utilização do checkbox dentro do relatório. Chart: Criação de gráficos. Os recursos apresentados na região central da barra de tarefas possuem quase a mesma finalidade, a diferença é que eles têm vínculo ao Banco de Dados. Region: Define uma área especifica do relatório para ser controlada. Subreport: Utilizado para criar relatórios do tipo mestre-detalhe, possibilitando criar várias abas dividindo-o em várias partes. A propriedade PrintBehavior determina o tipo de banda a ser criada. Page Break: Como o próprio nome diz, serve para fazer quebra de páginas. Crosstab: Componente útil para fazer relatórios com referência cruzada. É importante ressaltar que o ReportBuilder possui Eventos para serem utilizados nas bandas, mas especificamente nesta matéria não utilizaremos nenhum evento. Providername como Datasetprovider1. Coloque mais um componente Sqldataset e o nomeie para SqlEmployee, ligue sua propriedade Sqlconnection para Sqlconnection1 e em sua propriedade CommandText coloque o seguinte código SQL: SELECT FIRST_NAME, LAST_NAME, HIRE_DATE, DEPT_NO FROM EMPLOYEE WHERE DEPT_NO = :DEPT_NO Em seguida deveremos ligar este SqlDepartment com o SqlEmployee e será feito isto através de um datasource. Coloque no formulário um componente Datasource e dê o nome de DSDepEmp. Em sua propriedade dataset coloque como SqlDepartment, no SqlEmployee coloque a propriedade Datasource para DSDepEmp. Coloque mais um componente Clientdataset e altere seu nome para ClientEmployee. Adicione os Fields tanto nos componentes SqlDatasets quanto nos ClientDatasets. Não esqueça de setar a propriedade DataSetField do ClientEmployee para ClientDepartmentSQLEmployee. Veja a Figura 06 como está ficando nosso formulário. Montando um projeto de exemplo Depois de aprendermos e conhecermos um pouquinho sobre os recursos, iremos a partir daqui montar um exemplo simples de relatório do tipo Mestre-detalhe. Abra o Delphi 7 vá em File/New/Application e adicione no formulário um componente SqlConnection. Vale ressaltar que estaremos utilizando o Firebird 1.54 e seu Banco de Dados padrão (EMPLOYEE.FDB), para quem não sabe ele encontra-se na seguinte pasta C:\Arquivos de programas\firebird\ Firebird_1_5\examples\EMPLOYEE.FDB. Pegue um SqlDataset altere seu nome para SqlDepartment e ligue-o ao Sqlconnection através de sua propriedade Sqlconnection. Em sua propriedade CommandText iremos colocar a instrução SQL para obter os campos da tabela Department. Veja abaixo: Figura 06. Mestre Detalhe. Criamos apenas um relacionamento entre estas duas tabelas. Adicione mais dois Datasources os renomeie para DSDepartment e DSEmployee e ligue-os aos respectivos Clientdatasets. Agora iremos utilizar os componentes do ReportBuilder. Coloque um componente ppdbpipeline (utilizado para acesso aos dados) e o nomeie para ppdbdepartment e coloque na propriedade Datasource para DSDepartment. Após isto coloque mais um componente ppdbpipeline e o nomeie para ppdbemployee ligando ao Datasource DSEmployee e a propriedade MasterDataPipeline deixe como ppdbdepartment (seria a tabela mestre). Por último coloque um componente ppreport e ligue sua propriedade Datapipeline para ppdbdepartment. Veja na Figura 07 como está ficando nosso exemplo. SELECT DEPT_NO, DEPARTMENT, LOCATION FROM DEPARTMENT Neste momento colocaremos um componente Datasetprovider e ligaremos a propriedade Dataset ao SqlDepartment e em seguida coloque um Clientdataset, nomeie para ClientDepartment e coloque em sua propriedade Figura 07. Mestre Detalhe 6

delphi Para visualizarmos os dados insira nos formulários dois Dbgrids e altere suas propriedades Datasource respectivamente para DSDepartment e DSEmployee e finalmente iremos inserir uma botão para chamar nosso relatório. Veja abaixo o código e a Figura 08. procedure TForm1.BitBtn1Click(Sender: TObject); ppreport1.print; Adicione na banda Detail um componente Subreport e ligue-o à tabela Employee. Percebam que foi criado uma aba na região inferior da tela chamada Subreport1:Dbemployee, é através desta aba que iremos configurar a outra parte do nosso relatório. Clique nesta aba e coloque mais 3 Labels e 3 Dbtexts, com os seguintes nomes First_Name, Last_Name e Hiredate e ligandos os Dbtexts aos seguintes campos: Fisrt_name, Last_Name e Hiredate respectivamente. Para completar nosso exemplo insira um componente System Variable, altere sua propriedade vartype para vtpagesetdesc (serve para ter uma contagem do tipo: página atual por total de páginas) e o coloque no formulário principal na banda Footer. Rode nosso exemplo, clique no botão Preview e teremos como resultado nosso relatório parecido com a Figura 10. Figura 08. Configuração dos Componentes. Montando o relatório Dê um duplo clique sobre o componente ppreport para abrir o Report Designer. Por padrão ele vem com as bandas Header, Detail e Footer. Adicione na banda Header um componente Label com o nome de Exemplo Mestre Detalhe e um System variable para podermos pegar a data atual. Em seguida na banda Detail coloque mais 2 Labels e 2 Dbtext para pegar os seguintes campos da tabela Department: Dept_No e Department, nomeie os Labels e ligue os Dbtexts com respectivos campos. Veja abaixo a Figura 09 como está ficando nosso relatório. Figura 09. Montando o relatório. Figura 10. Exemplo Pronto. Conclusão Montamos nesta matéria sem muito esforço, um exemplo simples com este gerador de relatórios. Procurei explorar e demonstrar poucos dos muitos recursos encontrados nele. Espero que tenham gostado e até a próxima. Sobre o autor Thiago Cavalheiro Montebugnoli é tecnólogo, formado pela Faculdade de Tecnologia de Botucatu SP (FATEC) e consultor técnico do The Club. 7

firebird STORED PROCEDURES Sem segredos! Muitos de nossos sócios ainda não sabem trabalhar ou não conhecem as SPs (Stored Procedures). Para quem não sabe as Stored Procedures são comandos escrito na sua linguagem própria do Firebird que é armazenado como parte do Banco de Dados. Este conjunto fica armazenado no Banco de Dados e pode ser chamado a qualquer momento tanto pelo SGBD (sistema Gerenciador de Banco de Dados) quanto por um sistema que faz interface com o mesmo. A SP é bem parecida com as TRIGGERS menos pela forma como são chamadas. Mas esta matéria vem focalizando somente nas SP tirando muitas das dúvidas e até mesmo abrindo portas para muitas idéias. Qual é a vantagem de usar uma Stored Procedure? A vantagem de se usar as SPs é justamente a economia de código em seu projeto e o mais importante que é a diminuição de tráfego na rede. Como o código fica concentrado no Banco de Dados, toda a execução de pesquisa, alterações de dados de várias tabelas e movimentações que seriam extensas e demoradas na aplicação cliente são rapidamente executadas por meio destes comandos. As Stored Procedures podem também economizar tempo de manutenção e desenvolvimento já que qualquer aplicação poderá chamá-la. A manutenção é bem mais fácil porque você pode alterar a stored procedures sem ter que alterar ou mesmo recompilar cada aplicação cliente. Sempre que puder use as SPs. Porém a linguagem usada para desenvolver as SPs é limitada para operações mais complexas. Você tem que ser capaz de passar qualquer informação para a stored procedure como parâmetros ou colocá-las em uma tabela que a stored procedure possa acessar. Qual o tamanho máximo de uma Stored Procedure? Quando uma stored procedure é criada ou alterada, o Firebird compila o código em uma linguagem chamada BLR. O tamanho máximo que o BLR pode ter é de 64K. É difícil estimar se o BLR será maior ou menor do que o código da procedure, pois cada caso é um caso. Estou trabalhando com o Firebird 1.54, que é usado pela maioria dos sócios, com o BD EMPLOYEE que acompanha o Firebird. Na versão 2.1 oferece mais recursos, destacado na matéria sobre FIREBIRD 2.1 nos meses de Junho e Julho. Vamos começar vendo como criar um procedure. CREATE PROCEDURE Esse comando é utilizado para criar as SPs, veja como é a sintaxe: CREATE PROCEDURE NomedaProcedure <parâmetros de entrada> RETURNS <parâmetros de saída> AS <declaração de variáveis locais> <comandos da procedures> As Stored Procedures lembram bem as que utilizamos no Delphi. Nas SPs temos: o NomedaProcedure com seus parâmetros de entrada, Returns com os parâmetros de saída. Após a cláusula AS fazemos a declaração das variáveis. E dentro do e as instruções a SP.... CORPO DA PROCEDURE Dentro da Stored Procedure usamos um conjunto de comandos, no fim de cada comando colocamos o ( ; ) (ponto e vírgula). VARIÁVEIS Podemos declarar qualquer tipo de variável que o Firebird suportar. Estas variáveis só existem quando está sendo executada a procedure, ela é de uso local. Não tem como trabalhar com variáveis globais no Firebird, sendo que podemos passar o conteúdo de uma variável para outra procedure por meio de parâmetro ou guardar em uma tabela. Veja a sintaxe: DECLARE VARIABLE <Nome variável> <Tipo variável> 8

firebird Vamos supor que deseje atribui o nome de um funcionário a uma variável veja como fica: CREATE PROCEDURE NOME AS DECLARE VARIABLE NOME VARCHAR(20); //declaração da variável SELECT FIRST_NAME FROM EMPLOYEE WHERE EMP_NO = 2 INTO :NOME; //atribui o resultado na variável NOME //...continua o código //... ; IF-THEN-ELSE Até agora vimos uma abordagem introdutória a respeito da SPs, porém a partir daqui veremos como usá-las em nosso dia-a-dia em nossos projetos. Vamos começar a trabalhar com o comando IF-THEN-ELSE. Veja a sintaxe: IF <expressão condicional> THEN <comando> ELSE <comando> Veja o seguinte exemplo: O exemplo acima mostra uma declaração da variável NOME do tipo VARCHAR(20), lembrando que a declaração das variáveis tem que ser após a cláusula AS e antes da. Para cada variável é necessário uma declaração (mesmo sendo do mesmo tipo), então se desejarmos usar mais de uma variável temos que declarar da seguinte maneira: DECLARE VARIABLE Contador Integer; DECLARE VARIABLE Total NUMERIC(15,2); Vimos no exemplo acima o uso da cláusula INTO, para atribuir o resultado da Select na variável colocamos o : (dois pontos), porém para trabalhar com o conteúdo do variável não é necessário. ATRIBUIÇÃO A linguagem de procedures suporta comandos de atribuição da seguinte forma: CREATE PROCEDURE AUMENTO ( departamento integer ) as declare variable total integer; if ( DEPARTAMENTO IS NOT NULL ) THEN --Conta quantos funcionários no departamento select count(emp_no) from employee where DEPT_NO = :departamento into :TOTAL; --Verifica de a quantidade for menor que 20 if (TOTAL < 20) then update employee set salary = ( salary+100 ) where dept_no = :departamento; end end Var1 = Var2 * Var3; Var1 tanto pode ser uma variável local quanto um parâmetro de saída. Var2 e Var3 tanto podem ser variáveis locais como parâmetros de entrada. Do lado direito do igual podemos usar várias expressões, usando os parênteses para agrupá-las. No exemplo acima é um uso simples de IF-THEN-ELSE, primeiro verificamos se o parâmetro é nulo, se não for executa os comandos dentro do Begin-End. Dentro desse bloco fazemos um SELECT que retornará a quantidade de funcionários do departamento e será atribuído na variável TOTAL. Depois verificamos se o TOTAL é menor que 20, se for executa a instrução UPDATE. 9

firebird VALOR CONDICIONAL Valor BETWEEN valor AND valor Valor LIKE valor Valor IN (valor1, valor2, valor3, &) Valor EXISTS (subquery) Valor ANY (subquery) Valor ALL (subquery) Valor IS NULL Valor IS NOT NULL Valor CONTAINING valor Valor STARTING WITH valor WHILE DO Também é possível trabalhar com comandos de laço como o WHILE, veja a sintaxe: WHILE <condição> do Begin <comandos> end Faixa de valores DESCRIÇÃO O valor à direita pode incluir um ou mais curingas. Use % para zero ou mais caracteres e _ para um caractere. Membro de uma lista de valores. Verdadeiro se o valor combinar com um dos valores retornados pela subquery. Verdadeiro se o valor combinar com qualquer das linhas retornadas pela subquery. Verdadeiro se o valor combinar com todas as linhas retornadas pela subquery. Verdadeiro se o valor for nulo. Verdadeiro se o valor não for nulo. Busca de substring sem diferenciar maiúsculas e minúsculas. Verdadeiro se o valor a esquerda iniciar com o valor a direita. Diferenciam maiúsculas e minúsculas. Vamos ver uma situação aonde poderíamos trabalhar com este comando: */ Cnt = Cnt + 1; O exemplo acima é um simples contador até 10. Veja que ele não tem parâmetros de entrada, destacando que não é obrigatório ter para rodar a SP. Nesse exemplo é mostrado o comando SUSP. Ele é usado sempre que a stored procedure retorna um valor para o cliente evitando que a stored procedure termine antes que o cliente tenha pegado o resultado. COMANDOS SQL NAS STORED PROCEDURES Vimos que é possível usar comandos SQL dentro das SPs, comandos como SELECT, INSERT, UPDATE e DELETE. Para todos esses comandos podemos usar variáveis ou parâmetros de entrada para montar os comandos. Veja o exemplo abaixo: CREATE PROCEDURE ADD_EMP_PROJ ( emp_no smallint, proj_id char(5)) as INSERT INTO employee_project (emp_ no, proj_id) VALUES (:emp_no, :proj_id); SUSP; Com os parâmetros de entrada conseguimos gerar o comando INSERT dentro da SP. Veja mais um exemplo agora usando o comando SELECT: CREATE PROCEDURE CountTo10 RETURNS (Cnt INTEGER) AS Cnt = 1; WHILE (Cnt <= 10) DO SUSP; /* Retorna a próxima linha CREATE PROCEDURE CUSTOMER_COUNT RETURNS ( COUNT INTEGER) AS SELECT COUNT(*) FROM CUSTOMER INTO :Count; SUSP; 10

firebird No exemplo acima é contado todos os registros da tabela CUSTOMER, o total é colocado na variável COUNT. Nota: Você não pode usar comandos SQL DDL em uma stored procedure. Esta restrição se aplica aos comandos CREATE, ALTER, DROP, SET, GRANT, REVOKE, COMMIT e ROLLBACK. FOR SELECT e DO O uso do SELECT é apenas útil quando desejamos que retorne apenas uma linha. Mas quando precisamos ter o retorno de várias linhas? Para isso usamos o como FOR SELECT e DO, veja o exemplo: CREATE PROCEDURE GET_EMP_PROJ ( emp_no smallint) returns ( proj_id char(5)) as FOR SELECT proj_id FROM employee_project WHERE emp_no = :emp_no INTO :proj_id DO SUSP; Nesse exemplo vemos que quando informamos o código do funcionário o comando for Select vai trazer todos os projetos envolvidos desse funcionário. Funcionária como um While enquanto tiver registro referente à condição, resultado é mostrado na variável proj_id. Mais uma vez é usado o comando SUSP. A palavra chave FOR diz paro o Firebird abrir um cursor no conjunto de resultados (result set) do comando SELECT. O comando após a palavra chave DO é executado para cada linha retornada pelo SELECT. PROCEDURE. Somente o SYSDBA ou o proprietário poderá excluir a procedure. Veja a sintaxe: DROP PROCEDURE NomeProcedure; PROVILÉGIOS (GRANT) EM SP Para que usuários possam executar uma stored procedure, o seu criador deve conceder o privilégio de execução (execute) dessa stored procedure a esses usuarios via comando: Grant execute on procedure procedure(s) to usuario(s) Para que outras stored procedures possam chamar esta stored procedure o criador dela deve emitir o comando: Grant execute on procedure procedure to outraprocedure(s) Para permitir que uma stored procedure possa executar operações de acesso/atualização sobre uma tabela o criador da tabela (ou o criador da stored procedure, caso tenha o(s) privilégio(s) apropriados sobre a tabela) deve executar o comando: Grant privilegio(s) on [table] tabela(s) to procedure nome_procedure É possível também a revogação de privilégios através do comando SQL: Revoke privilégio(s) trigger(s) role(s) Dica: Podemos chamar uma SP dentro de outra, basta seguir a sintaxe: EXECUTE PROCEDURE NOME_PROC(PARAMETROS); Nota: Se desejarmos atribuir em mais de uma variável, após a cláusula INTO, devemos separar por vírgula. Exemplo: INTO :NOME, :IDADE etc. DROP PROCEDURE Para remover uma Stored Procedure do BD usamos o comando DROP UTILIZANDO STORED PROCEDURE EM PROJETOS Até agora vimos como criar as SPs no banco de Banco de Dados. Agora vamos ver um exemplo de como aplicar o que aprendemos em nossos projetos Delphi. Lembrando que estou trabalhando com o BD EMPLOYEE que acompanha o FIREBIRD e o Delphi 2007. Vamos supor que desejamos aumentar o salário dos funcionários do mesmo departamento, a mesma procedure que foi criada no inicio da ma- 11

firebird téria. Criaremos a seguinte SP no BD: CREATE PROCEDURE AUMENTO ( departamento integer ) as declare variable total integer; if ( DEPARTAMENTO IS NOT NULL ) THEN --Conta quantos funcionários no departamento select count(emp_no) from employee where DEPT_NO = :departamento into :TOTAL; --Verifica de a quantidade for menor que 20 if (TOTAL < 20) then update employee set salary = ( salary+100 ) where dept_no = :departamento; end end O destaque nesse projeto é a utilização do componente SQLStoredProc. É com ele que vamos executar a nossa SP e enviar parâmetros a ela. Altere as propriedades SQLConnection para SQLCONNECTION1, e a propriedade StoredProcName para o AUMENTO. Quando são definidas essas propriedades automaticamente ele abastece o componente com o parâmetro da SP. Veja na propriedade PARAMS. No evento OnClick do Buttom coloque a seguinte instrução: //Abre a conexão com o banco SQLConnection1.Open; //Acessa os parâmetros por nome SQLStoredProc1.Params. ParamByName( DEPARTAMENTO ).Value := StrToInt(Edit1.text); SQLStoredProc1.Params. ParamByName( VALOR ).Value := StrToFloat(Edit2.text); //Executa a procedure SQLStoredProc1.ExecProc; SQLConnection1.Close; Abra o Delphi 7 e crie um novo projeto. Faça a conexão com o nosso BD EMPLOYEE.FDB por meio da palheta DBEXPRESS. Esse BD se localiza na pasta C:\Arquivos de programas\firebird\firebird_1_5. Além dos componentes de conexão ao BD adicione os seguintes componentes: 1 BUTTON, 1 STOREDPROC. Veja a tela do nosso projeto (Figura 01). Execute nosso projeto e clique no botão. Depois veja o resultado das alterações feitas pela SP que está no banco. Conclusão Vimos nessa matéria uma abordagem mais detalhada de Stored Procedure. Já tivemos matéria dando exemplo de como trabalhar com parâmetros de entrada e de saída, com a arquitetura DBX (revista de Abril/2007). Espero que os exemplos e funções apresentada possa ser de grande ajuda em seus projetos. Um forte abraço e até mais! Figura 01 Tela do Projeto Sobre o autor Vitor Scarso é consultor técnico do The Club, trabalha com programação há 5 anos e é formado em Técnico de Informática pela CNEC Capivari. 12

Software Tecnicas de redimensionamento de forms Como sem ter bola de cristal posso prever quantos anos de programação você leitor tem? Contudo não é muito imprevisível afirmar que já enfrentou nesta jornada profissional alguns tipos de problemas com redesenho de formulários. Atualmente, os paradigmas de resolução de tela estão se concentrando em 800 x 600. Arrisco-me em afirmar que 640 x 480 foram abolidos dos micros da geração Pentium III. Por outro lado já estamos em plena era do Pentium 4 e a resolução do meu notebook por exemplo é 1024 x 768. Quando trabalhamos com Windows Forms as preocupações não se limitam somente a resolução, existe também o redesenho do formulário. Já vi projetos com alternativas radicais do tipo não permitir o redesenho, eliminando o botão de maximizar da barra de caption do form e alterando as propriedades específicas do mesmo. Minha proposta é apresentar sugestões tipo Design Patterns para minimizar redesenhos indesejados em forms e seus componentes visuais internos, prejudicando a visualização e, às vezes, até o manuseio do formulário. Antes de prosseguir, se desejas implementar minhas sugestões, crie um novo projeto no Visual Studio.NET e escolha o template C# / Windows Application. Batize-o de ResizeForm e após as explicações, as implementações. Indo direto ao assunto ao estilo Mike Tyson antes da prisão, as propriedades mágicas chamam-se Dock e Anchor e pertencem ao grupo Layout. Dock é a propriedade que amarra seu componente a alguma borda do container (formulário). Esta propriedade pode ser modificada em tempo de design como também em run-time, como no exemplo a seguir: this.button1.dock = System.Windows.Forms. DockStyle.Left; Para ver em ação esta propriedade, coloque aleatoriamente sete componentes buttons no nosso projeto conforme sugere a imagem. Figura 01. Digite em seguida o código abaixo no evento Load de seu formulário. private void Form1_Load(object sender, System.EventArgs e) { this.button1.dock = System.Windows. Forms.DockStyle.Top; this.button2.dock = System.Windows. Forms.DockStyle.Top; this.button3.dock = System.Windows. Forms.DockStyle.Bottom; this.button4.dock = System.Windows. Forms.DockStyle.Bottom; this.button5.dock = System.Windows. Forms.DockStyle.Left; this.button6.dock = System.Windows. Forms.DockStyle.Right; this.button7.dock = System.Windows. Forms.DockStyle.Fill; } 13

Delphi O resultado será similar a próxima imagem. Passando para a propriedade Anchor, sua finalidade é definir constante de limite entre a borda e o próprio limite do container. Traduzindo, seria ancorar seu componente por uma ou mais de suas bordas. Assim como a propriedade Dock, Anchor pode ser alterada na janela Properties ou em run-time através de código. Veja os exemplos seguintes: Figura 02. Figura 04. Muito interessante porém pouco funcional. Propondo um exemplo funcional, como você simularia a tela do Windows Explorer? Vamos implementála e utilizar a propriedade Dock para funcionalidades mais úteis. Voltando ao nosso projeto, retire os sete botões que colocamos anteriormente e insira um componente treeview. Não se esqueça de retirar também o código que digitamos no evento Load do form. Altere a propriedade Dock do treeview para Left. Coloque agora um componente splitter, ele serve para redimensionar o treeview em run-time. Por default ele já possui a propriedade Dock como Left, não alterar. Coloque agora o componente listview do lado direito do spliter e configure a propriedade Dock para Fill. Pronto! Visualmente já possuímos um simulador de Windows Explorer que pode ser redimensionado livremente sem comprometer sua visualização. this.button1.anchor = (System.Windows. Forms.AnchorStyles.Bottom System.Windows.Forms.AnchorStyles.Right); Esta propriedade é muito útil quando desejamos ter o controle de como os componentes irão ser esticados. Por exemplo, altere o nosso projeto novamente, retirando os componentes existentes e inserindo novos como: label, combobox, button e textbox. Faça um design conforme a imagem a seguir. Figura 05. 14 Figura 03. Com este design pronto, sem alterar nenhuma propriedade default, execute o programa e maximize a tela. Um desastre, não acha? Simples-

Delphi mente os componentes não se movem e o formulário fica com uma imensa área inútil cinza. Você já se perguntou porque o usuário de seu sistema iria maximizar a tela? Ele pode estar desejando que o componente da descrição seja aumentado facilitando sua visualização. Como toda problemática possui uma solucionática, vamos alterar as propriedades e resolver a questão. Vencido este desafio, vamos então complicar mais nosso form e estudar novas técnicas de para solucionar os problemas de redesenho de componentes. Construa um novo form com a seguinte aparência. Coloque os componentes conforme sugere a imagem. 1- O label consulta não precisa ser alterado. Por default ele esta ancorado como Left e Top. 2- No combobox alterar a propriedade Anchor para Left, Top e Right. Assim ele será esticado horizontalmente. 3- O label descrição, alterar a propriedade Anchor para somente Left. Assim ele continuará centralizado em relação ao textbox. 4- No textbox, marcar todas as opções, ou seja, Left, Top, Right e Bottom. 5- Finalmente nos botões, alterar para Right e Bottom. Figura 07. Para ficar ainda melhor, alterar a propriedade MinimumSize do formulário colocando o tamanho atual do mesmo. Desta forma, se o usuário tentar diminuir demais o form não irá esconder os componentes. Execute e verifique como ficou bem melhor. Não se preocupe com alguma dúvida do tipo que componente é esse. Como a funcionalidade é apenas visual, não importa muito ter o componente exato do desenho, até mesmo porque todos os componentes visuais possuem as propriedades em questão. Bom, devemos agora redimensionar este form. Pelo que já estudamos, isso é possível alterando as propriedades Dock e Anchors. Contudo, este desafio em particular depende mais do que isso, pois não é permitido no mesmo componente alterar as propriedades Dock e Anchors. É ou uma ou outra! Antes de começar a bolar alguma solução tipo as da organização Tabajara, ou seja, em informatiquês bacalhau, vamos a uma proposta mais inteligente. Se utilizarmos os componentes panel para servir como container de grupos de outros componentes, resolvemos a questão. Veja como seria: Figura 06. 1- Crie um novo form e divida-o em duas partes conforme a imagem sugere. Coloquei cores diferentes para facilitar sua visualização e compreensão. No panel vermelho, alterar a propriedade Dock para Top e no verde para Fill. 15

Delphi 3- Neste momento se você executar nosso programa e maximizar o formulário, já perceberá o resultado desejado. Em outras palavras, somente os panels com Dock igual a Fill redimensionam conforme o form, o panel amarelo permanece inalterado. 4- Agora basta distribuir novamente os componentes que estavam na proposta inicial e ajustar os mesmos com a seguintes regras: O panel amarelo e azul não são redimensionados verticalmente; O panel amarelo não é redimensionado horizontalmente. Figura 08. 2- No panel vermelho, insira mais dois novos panels, dividindo a área entre eles. Para isso alterar a propriedade Dock do panel amarelo (conforme imagem a seguir) para Left e do Azul para Fill. E assim vencemos mais um desafio, o de controlar corretamente o redimensionamento de forms complexos (com vários componentes). Conclusão A minha missão foi lhe fazer entender que construir um projeto de interface com usuário, por mais que seja simples, deve ser minuciosamente planejada ou deverá ter muito mais trabalho do que imaginas. É preciso levar também em conta fatores como ergonomia, possibilidade de operação apenas com o uso do teclado, agilidade para usuários experientes, uso harmonioso de cores e compatibilidade com outras interfaces Windows. Figura 08. Sobre o autor Fabio Camara Microsoft MVP VSTS, MCSD, MCDBA, MCAD. É autor de diversos livros pela editora Visual Books, destacando Projetos com Windows DNA e.net, Programação Orientada a Objeto com.net e Dominando o Visual Studio.NET com C#. Para entrar em contato visite http:// www.vstsrocks.com.br HUMOR 16

firebird Instalando o Firebird no Windows Vista Muitos de nossos sócios migraram do sistema Operacional Windows XP para o Windows Vista, e recebemos vários telefonemas com dúvidas a respeito da instalação do Firebird, tais como: O Windows Vista é compatível com o Firebird? A resposta é SIM, mas devemos fazer pequenos ajustes para que ele funcione adequadamente. específico do Windows Vista indique também o nome do servidor, ou seja, ficaria da seguinte maneira Localhost:C:\Arquivos de programas\firebird\ Firebird\examples\EMPLOYEE.FDB, Veja na Figura 02 um exemplo de como iremos conectar utilizando o Ibexpert. Obs: Estas dicas servirão para o Firebird 1.54 e o 2.0, sendo os mais utilizados pelos nossos associados. Dica 1. Ao rodar o arquivo de instalação do Firebird, instale-o normalmente. Fique atento na seguinte etapa Selecione tarefas adicionais, deixe a opção Instalar a aplicação no painel de controle como desmarcada, pois no Windows Vista existe uma incompatibilidade (um bug do Windows em relação ao Firebird) deixando o painel de controle travado, veja abaixo a Figura 01. Caso tenha instalado o Firebird sem desmarcar esta opção basta desinstalá-lo e instalá-lo novamente seguindo as dicas acima. Figura 02. Conectando ao Firebird. Tratando-se da versão 2.0 do Firebird a Dica 1 não é necessária. Conclusão Depois de muitos testes com nossas máquinas utilizando o Windows Vista podemos perceber que alguns pequenos ajustes são necessários em relação a instalação do Firebird. Espero que esta dica seja útil para os senhores. Sucesso a todos. Figura 01. Selecionar tarefas adicionais. Dica 2. Normalmente para conectarmos a um banco de dados Firebird em uma máquina local é necessário indicarmos apenas o caminho (C:\Arquivos de programas\firebird\firebird\examples\employee.fdb), mas no caso Sobre o autor Thiago Cavalheiro Montebugnoli é tecnólogo, formado pela Faculdade de Tecnologia de Botucatu SP (FATEC) e consultor técnico do The Club. 17

Gerente de projetos Gerente de projetos: uma nova ótica Da experiência na consultoria de empresas, o que se revela a base de toda problemática é a carência de conhecimento sobre o que realmente está acontecendo na dinâmica do projeto. Não se conhece o que acontece, não se conhecem as realidades que estão agindo naquele momento a não ser pelos efeitos póstumos. Não estamos falando de conhecimentos técnicos específicos, pois estes podem ser adquiridos facilmente. Estamos falando de liderança nos projetos, na organização. Porque para além de toda a tecnologia a primeira referência de qualquer atividade é o individuo. A diferença no sucesso de qualquer atividade não é mais devida apenas a técnica, mas ao indivíduo. Um dado incontestável é que o êxito de um projeto é sempre verificação histórica de um homem. Um novo projeto de software, infelizmente, possui uma enorme chance de ter resultados decepcionantes. O problema nasce do fato que os projetos são iniciados sem levar em conta fatores humanos, ou melhor, criam-se expectativas sobre ferramentas, metodologias e processos esquecendo que o que realmente faz um projeto funcionar são os seus participantes. Quando estudamos propostas diferentes para este quadro geral, observamos no manifesto ágil: _ Indivíduos e interações ao invés de processos e ferramentas. Desta forma podemos definir que ser ágil é aplicar propostas diferentes para problemas antigos, sob uma nova ótica a ótica humana. É simples, é apenas uma nova abordagem. Por exemplo, muitas empresas nestes últimos anos montaram escritórios de projetos (também conhecidos como PMO Project Management Office) com o objetivo de mudar alguma coisa n o cenário dos resultados dos desenvolvimentos dos projetos. Aplicou-se um vasto conhecimento de processos e construíram uma infinidade de controles. Na minha visão, passaram horas a fio estudando algo que já é evidente, que todos têm certeza. Os projetos estão com sérios problemas. Este tipo de ação orienta ao determinismo psíquico. Desta forma, uma causa gera um efeito, este efeito gera outro efeito e depois outro efeito como um programa. Meu objetivo neste artigo não é esgotar o assunto, sabendo-se que é vasto e polêmico. Ficarei imensamente feliz se eu conseguir sensibilizar meu leitor a curiosidade de conhecer propostas diferentes. Projeto e programa Antes de continuar o artigo, acredito que seja muito válido explicar, ou melhor, especificar o sentido da palavra projeto. Na minha leitura, torna-se fácil quando diferenciamos do conceito de programa. O programa é uma série pré-impostada de eventos fixos, os quais produzem um determinado efeito. Se o projeto tem sempre, como no caso do programa, o seu escopo específico, diferencia-se do primeiro pelo fato que no seu proceder é absolutamente variável. Por exemplo: não é importante conhecer passagens intermediárias de quem tem a intenção de ir estudar na biblioteca; se o seu projeto é esse, pode usar qualquer meio, passar por qualquer lugar, desde que permaneça fiel ao efeito final: estudar na biblioteca. No programa, ao contrário, tudo é sistematicamente calculado. Onde passar, como e quando são fundamentais. A máquina funciona por programas, enquanto o homem é capaz também de projetar. Se trouxermos isso para um projeto de desenvolvimento de software, poderíamos: Colher idéias sobre requisitos necessários ao nosso projeto; Validar estas idéias, reduzindoas ou especificando-as (tornando-as claras). Coloque-as numa lista que poderíamos apelidar de Product Backlog ; Estimar e priorizar todos os itens da lista. Separe depois em conjuntos de funcionalidades que devem ser produzidas em determinado tempo. Vamos apelidar este conjunto que deve ser produzido em um tempo fixo de sprint ; Desenvolva; Revise seu desenvolvimento; Faça uma retrospectiva no final do conjunto de funcionalidades, colhendo fatos, avaliando o que foi bom e o que deve melhorar. Parece simples. É simples. É a metodologia SCRUM. Nesta metodologia duas práticas são fundamentais ao gerente de projetos: Manter as coisas simples e livrar-se de todos os impedimentos. Minha contribuição da dúvida para meu leitor imaginário é: como pode alguém que está seguindo sistematicamente processos manter as coisas simples e livrar-se de todos os impedimentos? 18

gerente de projetos O novo gerente de projetos Hoje, quem trabalha com projetos, é sobretudo um knowledge worker, ou melhor, uma pessoa que trabalha por métodos e não por processos, sobre objetivos e não por horários. Muitos processos tornam-se imediatamente obsoletos devido a novas características de negócios. A velocidade das mudanças impõe a exigência de uma atualização contínua das competências e das habilidades. Para ser gerente de projetos hoje não se pode permanecer esclerosado em papéis, funções e modalidades operacionais que necessariamente devem confrontarse com cenários mutáveis. Um tipo de resultado positivo em um projeto só é totalmente repetível se permanecerem as mesmas pessoas e se tratar dos mesmos problemas. Em outras palavras, é inútil seguir um script de como gerenciar um projeto de desenvolvimento de software. Eu particularmente acredito que no futuro próximo, a diferença fundamental entre os gerentes de projetos não será a bagagem de conhecimentos e experiências que soube acumular, organizar e renovar, mas sobretudo o método com o qual saberá continuamente capitalizá-los em adaptação e evolução. Se estudarmos MSF (Microsoft Solutions Framework), tanto MSF Essentials como MSF for Agile Software Development, encontraremos uma descrição e uma lista de responsabilidades que devem ser efetuadas pelo gerente do projeto. A especificação de responsabilidades claras para os papéis necessários de um projeto é um dos pontos fortes do MSF. Entretanto a informação sempre toma forma conforme os olhos de quem a vê. Mesmo que eu e o meu leitor estudemos juntos, seriamente, tudo que é ensinado no papel MSF Project Manager, agiremos de forma diferente dentro do projeto. Em resumo, o sucesso como gerente de projetos não será pela quantidade de informação que se tem, e sim pelo modo útil de usar a informação em função do escopo do projeto. É preciso compreender que o conhecimento diferencia-se em três: 1- Conhecimento explícito: é o conhecimento que pode ser catalogado. Facilmente encontra-se em livros e artigos; 2- Conhecimento incorporado: é o conhecimento que você reproduz, seja com ação, seja com direção, sem entender. É uma soma da informação com a intuição; 3- Conhecimento tácito: é um modo particular de entender que não é possível de ser explicado. Todos nós temos estes três tipos de conhecimento. Por isso, somos únicos em determinada situação, somos parecidos em outra determinada situação. Agimos de acordo com nossos tipos de conhecimentos. Como trabalhar por métodos O cenário no qual o colaborador é fundamentalmente um executor, guiado por processos e regras muito claras e das quais raramente se desvia está se deslocando para um cenário no qual o colaborador tem cada vez mais responsabilidades, não trabalha mais com base em horas, mas com base no alcance de certos objetivos. Executores com regras claras é um cenário apropriado para o nível puramente operacional. Quando tratamos dos cargos estratégicos e táticos, os livros sobre PMI, CMMI, RUP, TOC, MSF e SCRUM devem servir como um guia de técnicas e práticas que podem ser aplicados para determinada situação, desde que você compreenda e transcenda. Compreender é alcançar com inteligência o que está sendo ensinado no livro. Transcender é passar além dos limites de forma superior ao que está sendo ensinado. Em outras palavras, construa em cima de ensinamentos que você compreendeu e terás resultados magníficos. Não existe nenhum empresário que espere do gerente de projetos relatórios mostrando como estão os projetos em andamento. Relatórios, gráficos, controles, são todos menores comparados ao cliente satisfeito por um produto (que normalmente é o resultante de um projeto) sendo entregue. Para trabalhar com base em métodos, verifica-se hoje que as propostas ágeis são as mais adequadas. Agilidade pode ser definida como a habilidade tanto para criar quanto para responder às mudanças, de modo a lucrar em um ambiente turbulento de negócios. (Jim Highsmith, no livro Agile Software Development Ecosystems ). Para identificar um gerente de projetos que trabalha por métodos, não utilize o critério de avaliar seus certificados técnicos, sua formação acadêmica ou as empresas no qual trabalhou. Observe seus resultados. Observe como ele lidera. Não é ser gerente de projetos do ponto de vista técnico, é ser gerente de projetos do ponto de vista realizador. Considerações finais A intensidade da mudança exigida das empresas para serem competitivas, remetem-nos a tornar indispensável a necessidade de formação contínua e inovadora. Esta formação deve buscar respostas eficazes que se ponham a priori e não a posteriori como é observado em praticamente todos os departamentos de informática. O resultado prático desta formação é preparar pessoas para saber dar, de tal modo, respostas eficazes aos problemas que mudam momento a momento. O gerente de projetos deve ser cada vez mais um tipo de profissional que sabe gerir, mais individualmente do que em nível de categoria, as próprias relações dos projetos. Ele deve acima de tudo saber que: O que realmente faz funcionar uma empresa são as pessoas. Para Saber Mais Treinamento de MSF + Agile Methods da F Camara Formação e Consultoria (http://www.fcamara.com.br) Referências Agile Software Development: The Cooperative Game by Alistair Cockburn; Visual Studio Team System Rocks by Fábio Câmara, Clementino Mendonça e outros; Software Engineering with Microsoft Visual Studio Team System by Sam Guckenheimer; Agile And Iterative Development A Managers Guide by Craig Larman. Sobre o autor Fábio Câmara (fabio.camara@fcamara.com.br): Microsoft MVP VSTS, MCT, MCSD.NET, MCTS - TFS, ITIL Foundations, Certified SCRUM Master e MSF Practitioner, é professor e consultor. Seu lema é: Antes de investir em metodologia, processos e ferramentas, lembre-se que o maior valor do seu projeto de software é o valor humano. 19

20 firebird