| Últimas 20 atualizações de BRUNO LICHOT |
|
|
Relatório Master-Detail no Quick Report
Salve Galera Delphiana!!!!
Quanto tempo hein!!!?? Mas estamos de volta com mais essa matéria sobre relatórios no Quick e com muitas novidades.
Gostaria de aproveitar e agradecer a todos que tem me ajudado e incentivado a fortalecer a comunidade Delphi no Brasil e também para que eu possa de alguma forma continuar contribuindo com o sucesso dos meus amigos Delphianos. São eles: Gladstone Matos, Kaline, Guinther, Luciano Pimenta, Fábio Francelino e todo o pessoal da DevMedia pela constante confiança e apoio. Ao Sergio Werner e a ASSESPRO por estarem sempre investindo na comunidade de TI e nos permitirem desfrutar de suas instalações para as reuniões do grupo de usuários.
Ao meu chefe André Valle (www.micrologos.com.br) e meus colegas de trabalho por sempre me incentivar e me liberar para ir nos eventos, na maioria das vezes em horário de trabalho. Ao Marco (ClubeDelphi – DelphiRio) e ao Edison. Ao pessoal da lista Delphi-br, a galera que tem comparecido as reuniões mensais do DelphiRio na ASSESPRO-RJ e aos participantes da lista, q mesmo com tantas dificuldades continuamos vivos e na luta. Ao pessoal do DUG-BR (Akira, Marco, Cantu, Marcelo, Facunte, Edu, Luiz Mattos e a galera toda) pelo carinho e confiança e pelas oportunidades de estar sempre nos eventos ajudando de alguma forma, vocês realmente são D+, muito obrigado!!!! A minha família e a minha noiva por me agüentarem os horários e as ausências. E acima de tudo, ao meu precioso Jesus, o motivo principal da minha vida, sem o qual nem mesmo estaria aqui.
Lembrando que no mês de Abril começaremos o grupo de SQL e não para por ai não, no dia 02/04/2005 estarei no 5º DDD (www.dugbr.com.br) em SP e no dia 16/04/2005 no SQL Tech Week (www.sqlmagazine.com.br/td). Galera, quem busca crescimento técnico e profissional, não existe nada melhor do que investir em si mesmo indo a esses eventos, quem vai sempre volta e quem não vai deveria ir. Isso não é “mercham” barato, realmente vale a pena ir e fazer muitos contatos.
Dados os recados vamos ao que interessa, lembrando que qualquer coisa basta passar um e-mail ou me encontrar num dos eventos. Estamos sempre as ordens.
O Relatório
Este tipo de relatório é baseado na projeção de dados relacionados em mais de um RecordSet de registros, fornecendo uma quebra de Mestre e Detalhe, Item e Sub-Item, obtidos em nosso sistema de informação. Ao longo desta etapa, a fim de consolidarmos o nosso aprendizado, os nossos exemplos serão baseados numa situação proposta para confecção do relatório.
O departamento financeiro da nossa empresa requisitou uma projeção de dados que possa demonstrar os pedidos feitos dentro de um espaço de tempo a ser definido, ou seja, compreendidos entre uma data inicial e uma data final que será fornecida pelo usuário. O relatório fornecerá o nome do cliente em ordem alfabética e os seus pedidos ordenados por data, do mais recente para o mais antigo. Serão visualizados o nome do cliente, a data do pedido, o total do pedido e os itens do pedido, compreendidos por descrição do produto, quantidade vendida, preço vendido e valor total da venda.
Para alcançarmos nosso objetivo, utilizaremos a tabela de Clientes, Itens, Produtos e Pedidos, cuja estrutura é apresentada abaixo:
CREATE TABLE CLIENTES (
ID_CLIENTE INTEGER NOT NULL,
NOME VARCHAR(60) NOT NULL,
CPF CHAR(11) NOT NULL,
CIDADE VARCHAR(25) NOT NULL,
ESTADO CHAR(2) NOT NULL,
ENDERECO VARCHAR(100) NOT NULL,
CEP CHAR(9) NOT NULL,
DATACADASTRO TIMESTAMP NOT NULL,
FOTO BLOB SUB_TYPE 0 SEGMENT SIZE 80);
CREATE TABLE PRODUTOS (
ID_PRODUTO INTEGER NOT NULL,
DESCRICAO VARCHAR(60) NOT NULL,
ESTOQUE INTEGER default 0 NOT NULL,
PRECOCOMPRA NUMERIC(15,2) NOT NULL);
CREATE TABLE PEDIDOS (
ID_PEDIDO INTEGER NOT NULL,
ID_CLIENTE INTEGER NOT NULL,
DATAPED TIMESTAMP NOT NULL);
CREATE TABLE ITENS (
ID_PEDIDO INTEGER NOT NULL,
ID_PRODUTO
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|

|
Título: QuickReport - Criando Relatórios com agrupamento e sumário. Autor: Bruno Lichot Info: Audio/Video

| -->">
|
|
|
|
Relatório com Agrupamento no Quick Report Salve comunidade Delphiana! Olha eu de novo falando de relatório, prometo que o próximo assunto será diferente. No mês passado podemos desfrutar da excelente visita da maior autoridade em InterBase no Brasil na nossa reunião do grupo de usuários DelphiRio, Paulo Sérgio da Presence/Borland. O qual gostaria de agradecer profundamente a visita, a palestra e apoio singular a comunidade. Lembrando que neste mês de férias nossa agenda está repleta de eventos de qualidade começando no dia 13/07 com a reunião do DelphiRio(http://www.devmedia.com.br/ClubeDelphi/delphirio.asp), seguido pelo ClubeDelphi Tech Weekend(http://www.devmedia.com.br/tw) e FireBird Developers Day(http://www.firebirddevelopersday.com.br). Não deixem de prestigiar os eventos, aprenderem com que faz, trocar informações, idéias e principalmente desfrutar de uma boa diversão com os colegas e amigos de profissão. Continuem escrevendo, e se puder ser útil em alguma coisa, sintam-se a vontade em escrever, passar uma mensagem, me convidar para um almoço, etc. Contem sempre comigo! Bom, passemos agora ao nosso artigo de Relatórios Relatórios com Agrupamento de Dados Este tipo de relatório é baseado na projeção de dados relacionados em mais de um RecordSet de registros ou não, porém fornecendo agrupamento por um ou mais valores obtidos em nosso sistema de informação. Criemos uma situação base, tendo as nossas tabelas dos exemplos anteriores para nos auxiliarem nesta tarefa. O departamento de vendas da empresa requisitou um relatório onde possa se averiguar o quanto se vendeu de cada produto nos meses de um determinado ano. O relatório deverá apresentar os produtos, os meses e o total vendido em cada mês. Deve apresentar o seu resultado agrupado por produtos e para cada produto os meses e o total vendido. O ano será definido pelo usuário do relatório. Faremos uso das tabelas de Pedidos, Itens e Produtos apresentadas anteriormente. Lembrando que nosso exemplo é desenvolvido sobre InterBase ou FireBird com acesso e manipulação de dados em DBExpress. Inicie uma nova aplicação no Delphi, assim como nos exemplos anteriores adicione um ComboBox para escolha do ano, um botão Gerar Relatório e um Panel para conter o objeto QuickRep. Façamos a obtenção dos dados: Adicione um SqlConnection e faça a conexão com o banco. O primeiro SQLDataSet a ser adicionado ao projeto terá a função de listar os produtos vendidos no ano que for selecionado pelo usuário. Altere a propriedade Name para SQLProdutos, a propriedade SQLConnection aponte para o seu objeto de conexão configurado anteriormente. Na propriedade CommandText defina o seguinte comando: select distinct produtos.descricao ,produtos.id_produto ,extract(year from pedidos.dataped) as ANO from pedidos ,itens ,produtos where extract(year from pedidos.dataped) = :ANO and pedidos.id_pedido = itens.id_pedido and itens.id_produto = produtos.id_produto order by produtos.descricao Este é o DataSet Mestre e proverá os produtos vendidos em um determinado ano e fará o agrupamento da amostragem como requisitado, pela descrição do produto. Abra a sua propriedade Params e defina a propriedade DataType do parâmetro ANO como ftString. O próximo DataSet obterá os meses em que o produto foi vendido do ano escolhido, e também exibirá o total deste produto vendido naquele mê
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Relatório no Quick Report - Parte 2
Com Apresentação do Número de Página Corrente e do Número Total de Páginas
Fala Galera!
A BorCon foi o máximo! Pude conhecer muita gente que só falava por e-mail e demais meios do tipo. Estou ansioso pela próxima ano que vem. Está perto o TechDay POA e o WebMobile Tech Week, não percam estas oportunidades! Ao pessoal que reside no Rio de Janeiro não esqueçam o encontro do grupo de usuários DelphiRio que acontece toda primeira Quarta-Feira do mês, a próxima reunião será 01/09/2004 das 14:00 as 16:00 com Dormevilly Tertius da Borland no auditório da Assespro-RJ - Rua Buenos Aires, 68/14º andar - Centro - RJ. www.delphirio.assespro-rj.org.br
A página está simples e até meio feinha mais aos poucos vamos melhorando, acredito que mesmo assim estamos atingindo o objetivo. Força comunidade carioca!
Esta semana vamos falar novamente sobre um assunto que não gosto muito, mas muitos me fazem muitas perguntas sobre isto: Relatórios.
Vou utilizar o exempo de criação de relatórios com QuickReport da minha coluna para exemplificar o uso de contador de páginas. Exemplo: Páginas 2 de 5.
Desta forma quando apresentarmos o número da página corrente, também apresentaremos o número total de páginas do relatório a cada página exibida.
Relatório
Abra o projeto do relatório desenvolvido anteriormente da matéria de Criação de Relatório no Quick Report. Vamos redefinir a banda Page Footer. Esta banda é referente ao roda-pé do relatório, exibiremos nesta banda a página corrente do relatório em questão e o total de páginas do relatório.
Selecione da palheta de componentes do QuickReport um objeto QRSysData e coloque-o na banda como mostra a figura abaixo, defina a sua propriedade Data como qrsPageNumber, assim exibirá o número da página corrente do relatório.
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Criando campos calculados e agregados em um ClientDataSet
Passo a Passo
Fala Galera Delphiana!
Obrigado pelos e-mails enviados com dúvidas e sugestões! É isso aí, vamos trocar figurinhas sempre. Uma mão lava a outra e as duas lavam o rosto...Compartilhando para conquistar! É isto que me motiva após ou antes de um dia duro de trabalho sentar em meu computador, responder e-mails e criar matérias. É saber que você pode usar seu talento para ser útil e ajudar outras pessoas e ser ajudado. Isto é gratificante.
Esta semana vamos falar um pouco sobre estes dois recursos do ClientDataSet. Na minha opinião, este componente é uma das melhores criações da mãe Borland para nós meros desenvolvedores lutando pelo pão de cada dia. É incontável as soluções que este Objeto me permite implementar.
Imaginemos uma situação de controle de vendas onde temos que relacionar os itens ao seus pedidos. Algumas informações que disponibilizaremos não existem na base de dados, como o total do pedido e o total de cada item. Sendo assim construiremos campos calculados nos datasets de Itens e Pedidos para gerar esses totais. Não me importarei com conexão de dados e configurações básicas dos DataSets, vou direto ao ponto.
Construindo campos calculados e agregados
Imagine que você construiu um ClientDataSet para trabalhar com os pedidos(CdsPedidos) e um relacionado a este para trabalhar com os itens do pedido(CdsItens), no editor de campos do CdsItens(que você pode acessar aplicando um duplo clique no objeto), clique com o botão direito e selecione a opção New Field.
Na tela de configuração, defina sua propriedade Name como VirtTotal, e o seu Type como Float. Nas opções do Field Type, selecione Calculated e em seguida clique no botão Ok para criar o campo.
Trabalhando com o preenchimento de campos calculados
Com os campo criado, vamos ao preenchimento dos valores. Para tanto, existe um evento no ClientDataSet, chamado OnCalcFields que ocorre sempre que o dataset é aberto, colocado em modo de edição ou atualizado. Serve justamente para implementarmos processamentos para preenchimento de valores nos campos virtuais calculados que criamos sobre um dataset.
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Criação de gráficos com dbChart
Passo a Passo
Fala galera!
Após um tempinho de herdwork e out of time, estamos de volta. E esta semana vamos abordar um assunto interessante: a criação de gráficos.
Mas, antes de começarmos, gostaria de agradescer a todos que tem me enviado e-mails e contribuido para o aprimoramento da nossa coluna. Estou muito satisfeito de ajudar e ser ajudado, satisfeito por que este veículo de comunicação tem levado informações relevantes a todas as pessoas que dele usufruem. Lembrem sempre: "O Caminho do crescimento é a humildade e a carência do saber, mas a soberba precede a queda"(Jesus Cristo).
Continuem escrevendo e espero estar ajudando com mais este artigo. Fiquem de olho no próximo ClubeDelphi TechDay! Aí galera do Sul, vamos nos encontrar em breve!
Gráficos: Ferramenta de Análise e Tomada de Decisão
A utilização de representação gráfica para demonstração de situações, acontecimentos, para ensinar, entre outras aplicações, tem se perdurado desde os tempos remotos da humanidade. Hoje com os sistemas de informação baseado em softwares e banco de dados, a consolidação destas informações são de extrema necessidade para, principalmente, projetar os dados de forma inteligível a ponto de se tornarem uma informação relevante. Esta técnica é muito utilizada para embasar tomada de decisão, projeção financeira, crescimento, mentas e motivação.
Desta forma, faremos construção de um gráfico que demonstre a projeção de venda dos produtos de nosso sistema num período determinado de tempo.
Criando Gráficos
Adicione um novo formulário ao projeto, defina sua propriedade Name como FrmGrafico salve sua unidade como UGrafico e defina sua interface como demonstrado abaixo. O nome dos componentes DateTimePickers será DtpInicial e DtpFinal. O nome do edit será EdtValor.
Adicione ao FrmGrafico um objeto DBChart da palheta DataControls de forma que preencha o restante do formulário. Defina a propriedade WindowState do FrmGrafico como wsMaximized.
Adicione um SqlDataSet para nele criarmos a projeção de dados que fornecerá os valores para criação do gráfico de projeção de vendas por período. Defina suas propriedades como demonstrado a seguir.
Observação: Estou utilizando três tabelas: Pedidos, Itens e Produtos para montar a minha projeção de exemplo. O leitor pode optar por outra projeção.
Name: SqlGrafico
SqlConnection: SqlConnection
CommandText:
SELECT PRODUTOS.DESCRICAO
,SUM(ITENS.PRECO * ITENS.QUANTIDADE) AS TOTAL
FROM PEDIDOS
,ITENS
,PRODUTOS
WHERE PEDIDOS.DATA BETWEEN :DATA1 AND :DATA2
AND PEDIDOS.ID_PEDIDO = ITENS.ID_PEDIDO
AND ITENS.ID_PRODUTO = PRODUTOS.ID_PRODUTO
GROUP BY PRODUTOS.DESCRICAO
HAVING SUM(ITENS.PRECO * ITENS.QUANTIDADE) > :VALOR
ORDER BY PRODUTOS.DESCRICAO
Params: DATA1 e DATA2 – DataType = ftDate
VALOR – DataType = ftFloat
Observação: Este DataSet fornece a projeção de produtos vendidos dentro de um determinado período. Período este, fornecido pelo usuário definido pelos parâmetros DATA1 e DATA2, bem como a restrição de valor total de venda no período definido no parâmetro VALOR.
O componente DBChart não está habilitado a trabalhar com dados provenientes de um DataSet unidirecional como o SqlGrafico. Neste caso adicionaremos um DataSetProvider e um ClientDataset para solucionar esta questão. Adicione os componentes e siga as configurações a seguir.
Tipo: DataSetProvider
Nam
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Manipulando formulários
Criando formulários transparentes e com outras formas geométricas
Esta semana vamos falar um pouco de recursos visuais do Delphi. A idéia do artigo surgiu em uma de minhas aulas durante a semana.
Neste artigo vamos aprender como criar formulários transparentes e com outras formas geométricas. Continuem mandando suas sugestões, se vc possui alguma informação técnica importante que gostaria de compartilhar com toda a comunidade de desenvolvedores Delphi, sinta-se a vontade de fazê-lo aqui. É sempre um prazer colaborar com o crescimento de todos. Compartilhando para conquistar!
Criando Formulários Transparentes
Crie uma nova aplicação no Delphi, adicione um label com o seguinte caption: Exemplo de formulário transparente. adicione um botão e coloque no seu caption: Sair.
No evento OnClick do botão digite close. Selecione o formulário e procure pela propriedade TransparentColor, esta propriedade é do tipo boleana e habilita ou não a possibilidade de transformar uam das cores do formulário como
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Como configurar o servidor Web IIS Passo a passo Agradecimentos Iniciais Gostaria de iniciar a matéria desta semana com um profundo agradecimento a toda comunidade Delphi que esteve no ClubeDelphi TechDay em São Paulo(17/04/2004). Realmente foi um sucesso! Palestras excelentes, o local estava confortável e dispunha de toda infra-estrutura digna de um evento para uma das maiores comunidades de desenvolvedores do Brasil. Pude conhecer muitos colegas com quem falava por e-mail e telefone, trocando muitas informações e aprendendo muito, encontrei amigos e tentei trocar umas idéias com o Guinther, mas como sempre só consegui receber idéias. Mas este evento só foi o sucesso que foi porque a comunidade lotou o centro de convenções do HoliDay Inn Select Jaraguá. O assunto desta semana surgiu a partir de dúvidas durante as minhas palestras. Assim como este podem surgir outros, continuemos a compartilhar para que possamos sempre crescer. Configurando o Servidor Web IIS para hospedar aplicações ISAPIs ou CGIs O IIS(Servidor Web da Microsoft) pode tanto hospedar páginas html, páginas dinâmicas como ASP e PHP, seus arquivos relacionados como músicas e imagens, mas também pode hospedar e ser o ambiente para executar aplicações compiladas como ISAPI e CGI. Para tanto precisaremos configurar o servidor web para hospedar a nossa aplicação. Vamos as configurações necessárias para criáramos uma pasta virtual e assim hospedar a nossa aplicação e torna-la acessível via browser. No menu Iniciar do Windows, selecione Painel de Controle, Ferramentas Administrativas e Gerenciador do Internet Services (IIS).
Observação: Se esta ferramenta não existir será preciso adicionar este serviço através de Adicionar e Remover Programas, Adicionar ou Remover Componentes do Windows e marcar o CheckBox do Internet Information Services (IIS), é necessário ter em mãos o CD de instalação do Windows
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Persistindo dados com ClientDataSet
Aumente seu poder sobre a informação, persistindo dados desconectados do banco.
Salve Pessoal!!!
Antes de abordarmos o assunto desta semana, gostaria de fazer um agradecimento a todos que tem me enviado e-mails com dúvidas e sugestões, tenho aprendido muito com cada um. Continuem escrevendo, critiquem, mandem sugestões de matérias, tirem suas dúvidas e as minhas também; compartilhando para conquistar. ?
Mais um lembrete: não deixem de ir ao ClubeDelphi TechDay São Paulo, está imperdível. Três salas simultâneas, duas de palestras sobre Delphi e uma só de banco de dados. As palestras estão incríveis confira: http://www.clubedelphi.com.br/eventos/cdtd/indexsp.html
Não deixem de participar dos treinamentos do ClubeDelphi!
Persistindo Dados Localmente – A Motivação
Quando desenvolvemos aplicações em modelo Client/Server, temos questões do tipo como gerenciar a concorrência dos dados. Uma das soluções de maior sucesso hoje tem sido a utilização do DataSetProvider e do ClientDataSet para trabalharmos desconectados do banco e mesmo assim controlar e resolver as concorrências nos dados. Tudo isso devido à capacidade de persistirem em memória as alterações nos dados e identificar individualmente cada registro: o que está na base, o que foi lido e o alterado.
Por conseqüência desta capacidade e aliado a tecnologia e métodos específicos, podemos persistir toda esta estrutura de dados em memória localmente, através de arquivos binários, XML e XML-UTF8. São grandes os benefícios ao se fazer isto. Por exemplo: Uma de suas máquinas clientes perdeu a conexão com o banco e precisa salvar registros importantes que acabaram de ser trabalhados. Esta situação se resolve facilmente, basta salva-los localmente e criar uma rotina para “ouvir” a conexão e no restabelecimento da mesma, lê-se o arquivo de dados e envia a transação para o banco como se tivesse acabado de faze-la.
No caso de aplicações móbiles, este é um grande e poderoso recurso pois é fácil de utilizar, gera arquivos pequenos e mantém um histórico completo de alterações para cada registro e isto para não falar de transporte de informações entre sistemas, principalmente baseado no padrão XML.
Construindo o Exemplo
Em nosso exemplo vamos usar a seguinte estrutura no InterBase/FireBird:
CREATE TABLE PRODUTOS (
ID_PRODUTO INTEGER NOT NULL,
DESCRICAO VARCHAR(60) NOT NULL,
ESTOQUE INTEGER default 0 NOT NULL,
PRECOCOMPRA NUMERIC(15,2) NOT NULL);
CREATE GENERATOR GEN_PRODUTOS_ID;
ALTER TABLE PRODUTOS ADD CONSTRAINT UK_DESCRICAO_PRODUTOS UNIQUE (DESCRICAO);
ALTER TABLE PRODUTOS ADD CONSTRAINT PK_PRODUTOS PRIMARY KEY (ID_PRODUTO);
SET TERM ^ ;
CREATE TRIGGER TRG_GERA_ID_PRODUTO FOR PRODUTOS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.ID_PRODUTO = GEN_ID(GEN_PRODUTOS_ID,1);
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Criação de um cliente do servidor de aplicação em COM+
Continuando a seqüência da semana passada quando falamos sobre a concepção de um Servidor de Aplicação baseado em COM+, nesta semana vamos trabalhar na construção de um cliente para este Servidor de Aplicação.
Não se esqueça que este modelo de desenvolvimento é completado pelas outras matérias disponíveis na coluna sobre Multi-Camadas, por tanto não vou abordar questões do tipo como configuração do servidor e distribuição da aplicação cliente, tendo em vista os assuntos já terem sido abordados anteriormente.
Vamos ao que interessa: Menu File, New, Application.
Com o novo formulário, montemos o seguinte Layout:
Para Fazermos a conexão com o servidor de aplicação vamos utilizar o componente DcomConnection da palheta DataSnap. Vamos as suas configurações: Abra o combo da propriedade ServerName e procure pela opção AppServer.ClasseDados, que é nome do servidor e da classe que criamos no exemplo de semana passada. Após selecionar o servidor basta passar o valor da propriedade Connected para True.
A primeira chamada demorará alguns segundos, depois é instantâneo. Estamos conectados, passemos ao acesso e manipulação dos dados.
Selecione um ClientDataSet da palheta DataAccess, defina a sua propriedade Name como CdsProdutos, em seguida configure a propriedade RemoteServer com o nome do nosso objeto de conexão com o Servidor de Aplicação, se você não mudou o seu nome, este deve ainda se chamar DComConnection1. Ele também é listado no combo do valor da propriedade.
Como estamos utilizando um DataSetProvider na aplicação servidora para disponibilizar o conteúdo de um DataSet e assim, junto com o ClientDataSet promover o ambiente para navegação e operação com os dados, vamos a definição do valor da propriedade ProviderName que será o nome do DataSetProvider com o qual queremos trabalhar e que está no servidor de aplicação. No nosso caso será o DspProdutos, criado no exemplo da semana passada.
Lembrando que o comando de execução do DataSet no servidor de aplicação precisa de um parâmetro para sua execução, que é o nome parcial do produto; clique com o botão direito do mouse no CdsProdutos e em seguida clique em Fetch Params para adicionar os parâmetros necessários a execução do comando.
Em seguida aplique um duplo clique no CdsProdutos e no editor de campos adicione todos os campos, fazemos isto para ganharmos maior progamabilidade visto que os campos são objetos para nós agora.
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Criação do servidor de aplicações
Atendendo a solicitações da comunidade, nesta semana vamos falar um pouco sobre a criação de um servidor de aplicação. Criaremos uma aplicação servidora que pode ser responsável por todos os métodos e regras implementados com relação ao acesso e manipulação de dados referente ao projeto. Aqui utilizaremos tecnologia COM+ na MiddleWare do Servidor de Aplicação, DBExpress e MIDAS no acesso a dados. Utilizaremos InterBase/FireBird como SGBD.
Vale ressaltar as vantagens de uma aplicação distribuída: aumento de poder de processamento, quebra da tranca tecnológica do fornecedor do SGBD, subutilização do Hardware do SGBD, que é o mais caro, proporcionando um prolongamento da sua vida útil até que se tenha lentidão em seus processos e seja necessário investimento em melhoria no seu hardware. Este tipo de aplicação também aumenta a escalabilidade e proporciona criação de várias interfaces, em tecnologias distintas acessando um mesmo cerne de acesso a dados e regras de negócios. Um ponto que se deve ter cuidado nesta arquitetura é a rede que deve ser rápida, pois o número de nós até a informação chegar no banco, ou do banco chegar no cliente, aumenta.
Existe muito a falar sobre esse assunto e possibilidades de uso,bem como sua melhor aplicação e utilização de seus recursos e tecnologias. Mas não fique desapontado se não deu para explorar tudo, fique ligado no ClubeDelphi TechDay, inscreva-se já, será uma ótima oportunidade para aprender mais sobre o assunto. Outra opção é nos treinamentos do ClubeDelphi, e se você não mora no Rio ou São Paulo, não fique triste, entre em contato conosco que vamos até você. Bom chega de comercial e vamos ao nosso exemplo.
Nosso projeto consistirá apenas em um pequeno cadastro de produtos. Eis a nossa tabela de produtos:
Id_Produto - Inteiro – Chave Primária
Descricao – Caracter Variável de 60 posições
Quantidade – Inteiro
PrecoCompra – Decimal de 15 posições e precisão de duas casas
Para criarmos a aplicação servidora siga os passos no menu do Delphi: File >New >Othe > Multitier >Transactional Data Module e siga as configurações abaixo.
Figura01
Figura02
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Teclas de Atalho Úteis
Neste artigo, vamos falar sobre algumas teclas de atalho úteis e algumas configurações que podemos fazer no ambiente Delphi para facilitar e dinamizar nosso desenvolvimento.
Vamos as teclas de atalhos mais clássicas:
F12 – Alterna entre o formulário ou outro container e a sua respectiva unidade de código e vice-versa.
F11 – Alterna entre o formulário ou outro container, a sua respectiva unidade de código e o Object Inspector.
F9 – Compila, linkedita e executa a aplicação em modo de debug( se possível for ).
Ctrl + F9 – Compila e linkedita gerando a aplicação sem executa-la.
Ctrl + F2 – Para a execução do programa quando este está em modo de debug.
Ctrl + Space Bar – Abre a ajuda de auto complemento de código.
Outras Teclas de Atalho
Shift + F12 – Exibe uma lista com todos os formulários do projeto, onde é possível selecionar um ou mais para visualização.
Ctrl + F12 – Exibe uma lista com todas as unidades do projeto, onde é possível selecionar um ou mais para visualização.
Ctrl + Shift + S – Salva tudo o que foi modificado no projeto até o momento.
Ctrl + K + I – Faz com que um bloco de comandos ou palavras selecionadas na unit seja movimentado a um espaço de tabulação a direita.
Ctrl + K + U – Faz com que um bloco de comandos ou palavras selecionadas na unit seja movimentado a um espaço de tabulação a esquerda.
Alt + F11 – Abre uma lista das unidades do projeto que ainda não foram declaradas na seção uses da unidade corrente, para que esta esteja disponível para ser referenciada junto com o seu conteúdo a partir da unidade em questão. É possível selecionar mais de uma unidade nesta lista para ser declarada automaticamente na seção uses da unidade
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Proxy para o Servidor de Aplicação
Configuração Passo a Passo
Na matéria anterior, abordamos a configuração do Servidor de Aplicação, agora demonstraremos como exportar o proxy para o servidor de aplicação para ser usado nas estações clientes. Para isso, se faz necessário que tanto o servidor como as estações estejam na mesma rede.
Ainda em tempo, ressalto nesta matéria o que não havia feito na anterior com relação ao ambiente ideal para o servidor de aplicação; use sempre Win2k ou superior. Win95, Win98 e WinME são impraticáveis tanto para este tipo de desenvolvimento quanto hospedagem desse tipo de serviço. Isto não significa que estes não possam servir como estações clientes, mas sempre tenha preferência por Win2k e WinXP e somente em último caso use WinME
Abra o Serviços de Componente no Painel de Controle em Ferramentas Administrativas.

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Como Configurar o Servidor de Aplicação
Passo a Passo
Muitos dos meus alunos e pessoas que conversam comigo diariamente, me perguntam como configurar o servidor de aplicação COM+ e como configurar o cliente de uma aplicação Multi-Camadas. Com o intuito de ajudar a comunidade e divulgar a tecnologia, vamos a uma série de pequenos artigos que irão demonstrar como solucionar essas questões do desenvolvimento N-Tier.
Não abordaremos neste momento a criação de um Application Server em COM+ em virtude da edição número 46 da ClubeDelphi ser totalmente voltada para este tema.
Depois de criada e compilada a aplicação que será a nossa camada de acesso a dados e regras de negócio, devemos registra-lo no serviço de componentes do windows para ativar o seu uso por parte da aplicação cliente através do COM+.
Abra o Serviços de Componente no Painel de Controle em Ferramentas Administrativas.
No serviço de componentes, em Aplicativos do COM+, clique com o botão direito do mouse e no menu popup, escolha opção Novo e Aplicativo.


...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
| |
|