quinta-feira, 11 de novembro de 2010

Utilizando o FPDF

Nesse artigo iremos aprender a gerar um arquivo PDF com nosso querido PHP. Para isso, utilizaremos a biblioteca FPDF que se encontra em:

http://www.fpdf.org

Caso tenha alguma dúvida, faça veja o manual do FDPF no site dele:

http://www.fpdf.org/en/download.php

Tem inclusive uma versão em português.

Os métodos aqui utilizados estão todos explicados nos comentários do código.

Vamos lá:

 
SetFont('arial','',10);

//define o titulo
$pdf->SetTitle("Testando PDF com PHP !");

//assunto
$pdf->SetSubject("assunto deste artigo!");

// posicao vertical no caso -1.. e o limite da margem
$pdf->SetY("-1");
$titulo="Titulo do Artigo";

//escreve no pdf largura,altura,conteudo,borda,quebra de linha,alinhamento
$pdf->Cell(0,5,$titulo,0,0,'L');
$pdf->Cell(0,5,'http://www.seusite.com.br',0,1,'R');
$pdf->Cell(0,0,'',1,1,'L');
$pdf->Ln(8);

//hora do conteudo do artigo
$pdf->SetFont('arial','',8);
$novo="A Agência Nacional de Aviação Civil (Anac) informou, nesta segunda-feira (2), que vai investigar se as companhias áereas têm culpa pelos atrasos e cancelamentos registrados durante o fim de semana.
No sábado (30), o percentual de vôos com mais de uma hora de atrasos chegou a 45,2%. No domingo (1º), até as 19h30, 36% dos vôos tiveram atrasos.
";

//posiciona verticalmente 21mm
$pdf->SetY("21");

//posiciona horizontalmente 30mm
$pdf->SetX("30");

//escreve o conteudo de novo.. parametros posicao inicial,altura,conteudo(*texto),borda,quebra de linha,alinhamento
$pdf->MultiCell(0,5,$novo,0,1,'J');

$novo="
Nesta segunda-feira, a situação começou a se normalizar, mas ainda há registro de problemas. Até as 10h, dos 623 vôos previstos nos 13 principais aeroportos brasileiros, 126 tiveram atrasos de mais de uma hora, segundo balanço divulgado pela Infraero, a estatal que administra os terminais aéreos. O número equivale a 20,2% do total. Quarenta e seis decolagens foram canceladas (7,3%).
Os terminais que tiveram maiores percentuais de atrasos foram os do Recife (PE) e de Fortaleza (CE). Na Capital de Pernambuco, oito dos 24 vôos marcados até as 10h atrasaram mais de uma hora (33,3% do total). No terminal cearense, oito das 25 partidas ocorreram fora
O terminal que registrou maior índice de cancelamentos foi o de Curitiba (PR). Das 22 decolagens programadas, quatro foram canceladas (18,1%).
A assessoria de Infraero informa que os atrasos são conseqüência dos transtornos do fim de semana. Muitos vôos tiveram que ser remarcados para o início desta semana.
Previsão - O presidente da Infraero, brigadeiro José Carlos Pereira, também foi prejudicado pela crise aérea. Ele tinha uma viagem marcada de Brasília para o Rio às 7h desta segunda, mas o avião só decolou às 9h59.
Apesar do transtorno, ele disse que as operações estão ocorrendo normalmente nos principais aeroportos do país e a situação deve se normalizar até as 14h.
";

//posiciona verticalmente 41mm
$pdf->SetY("41");

//posiciona horizontalmente 10mm
$pdf->SetX("10");

//escreve o conteudo de novo.. parametros posicao inicial,altura,conteudo(*texto),borda,quebra de linha,alinhamento
$pdf->MultiCell(0,5,$novo,0,1,'J');

//endereco da imagem,posicao X(horizontal),posicao Y(vertical), tamanho altura, tamanho largura
$pdf->Image("teste.jpg", 8,20,20,20);

/*******definindo o rodapé*************************/
//posiciona verticalmente 270mm
$pdf->SetY("270");

//data atual
$data=date("d/m/Y");
$conteudo="criado em ".$data;
$texto="por Alexandre Oliveira";

//imprime uma celula... largura,altura, texto,borda,quebra de linha, alinhamento
$pdf->Cell(0,0,'',1,1,'L');

//imprime uma celula... largura,altura, texto,borda,quebra de linha, alinhamento
$pdf->Cell(0,5,$texto,0,0,'L');

//imprime uma celula... largura,altura, texto,borda,quebra de linha, alinhamento
$pdf->Cell(0,5,$conteudo,0,1,'R');

//imprime a saida do arquivo..
$pdf->Output("arquivo","I");

/*
agora imaginem que estes dados viessem do banco de dados ?
que maravilha hein ! seus artigos convertidos em pdf dinamicamente hein?

REFERENCIAS :

FPDF - >Esta é o construtor da classe. Ele permite que seja definido o formato da página, a orientação e a unidade de medida usada em todos os métodos (exeto para tamanhos de fonte).

utilizacao : FPDF([string orientation [, string unit [, mixed format]]])

SetFont -> Define a fonte que será usada para imprimir os caracteres de texto. É obrigatória a chamada, ao menos uma vez, deste método antes de imprimir o texto ou o documento resultante não será válido.

utilizacao : SetFont(string family [, string style [, float size]])

SetTitle - >Define o título do documento.

utilizacao : SetTitle(string title)

SetSubject -> Define o assunto do documento

utilizacao : SetSubject(string subject)

SetX - >Define a abscissa da posição corrente. Se o valor passado for negativo, ele será relativo à margem direita da página.

utilizacao : SetX(float x)

SetY - > Move a abscissa atual de volta para margem esquerda e define a ordenada. Se o valor passado for negativo, ele será relativo a margem inferior da página.

utilizacao : SetY(float y)

Cell - > Imprime uma célula (área retangular) com bordas opcionais, cor de fundo e texto. O canto superior-esquerdo da célula corresponde à posição atual. O texto pode ser alinhado ou centralizado. Depois de chamada, a posição atual se move para a direita ou para a linha seguinte. É possível pôr um link no texto.

Se a quebra de página automática está habilitada e a pilha for além do limite, uma quebra de página é feita antes da impressão.

utilizacao - >Cell(float w [, float h [, string txt [, mixed border [, int ln [, string align [, int fill [, mixed link]]]]]]])

Ln - > Faz uma quebra de linha. A abscissa corrente volta para a margem esquerda e a ordenada é somada ao valor passado como parâmetro.

utilizacao ->Ln([float h])

MultiCell - > Este método permite imprimir um texto com quebras de linha. Podem ser automática (assim que o texto alcança a margem direita da célula) ou explícita (através do caracter n). Serão geradas tantas células quantas forem necessárias, uma abaixo da outra.

O texto pode ser alinhado, centralizado ou justificado. O bloco de células podem ter borda e um fundo colorido.

utilizacao : MultiCell(float w, float h, string txt [, mixed border [, string align [, int fill]]])

Image ->Coloca uma imagem na página - tipos suportados JPG PNG

utilizacao : Image(string file, float x, float y [, float w [, float h [, string type [, mixed link]]]])

Bom mais uma vez.. agradeço se for útil..

*/
?>

sábado, 4 de setembro de 2010

TECNOLOGIAS APLICÁVEIS AO DELPHI 7

Quando executamos o Delphi® 7, deparamo-nos com uma coleção de páginas organizadas numa paleta contendo centenas de componentes visuais e não visuais. Para quem é neófito no uso dessa ferramenta, dependendo da pessoa, isso pode ser desencorajador ou, contrariamente, desafiante. Até para mim, que já uso o Delphi há alguns anos, todo esse arsenal de recursos ainda apresentava uma certa nublagem.

As questões que me surgiam eram: qual das tecnologias presentes no Delphi é adequada para que propósitos? Quais as relações entre as centenas de siglas existentes neste planeta interconectado e as maneiras de trabalhar, no Delphi, com os recursos que elas representam? Quais dessas tecnologias vão permanecer e quais estão em processo de mutação ou substituição, notadamente para integração às novas plataformas (.NET, por exemplo) e novas concepções do mundo digital (software livre, sistemas independentes de plataforma, etc.)?

O compêndio a seguir visa reunir alguns aspectos marcantes dessas tecnologias, e foi elaborado a partir do livro Dominando o Delphi 7, de Marco Cantù. Essa obra, bastante extensa, considerada “a Bíblia” do Delphi, assim mesmo não alcança toda a profundidade e extensão dos recursos oferecidos por esse ambiente de desenvolvimento, tal a sua abrangência.

Quando produzi este material, tinha em mente apenas a minha própria orientação, mas, ao finalizá-lo, percebi que se foi útil para esclarecer alguns dos meus questionamentos, também poderia (e deveria) ser disponibilizado para a comunidade de desenvolvedores Delphi e quem mais tivesse interesse no tema. Afinal, conhecimento não disseminado não produz energia.

Ao final do artigo, temos um diagrama que mostra visualmente essas relações.


· ODBC (Open DataBase Connectivity):
§ Conectividade de banco de dados aberta, da Microsoft.

§ A Microsoft começou a substituir o ODBC pelo OLE DB em meados dos anos 90, através do COM.

§ É grande, complexo, impõe maiores demandas sobre programador e exige um nível mais alto de conhecimento, em troca de uma produtividade menor.

§ É destinado a ser usado por programadores em nível de sistema operacional.

§ O ADO é a camada sobre o OLE DB e é referido como uma interface em nível de aplicativo, sendo mais simples que esse.


· IDAPI (Integrated DataBase Application Programming Interface): interface de programação de aplicativo de banco de dados integrada, da Borland, mais conhecida como BDE.

· SOAP (Simple Object Access Protocol – protocolo de acesso a objetos simples):
§ Integrante da estrutura de WebServices (vide WDSL).

§ Criado com base no HTTP-padrão para que um servidor Web pudesse manipular os pedidos SOAP e os pacotes de dados relacionados pudessem passar por firewalls.

§ Define uma notação baseada em XML para solicitar a execução de um método por um objeto no servidor, passando parâmetros para ele, e uma notação para definir o formato de uma resposta.

§ É uma pedra fundamental da arquitetura .NET DA Microsoft e também das plataformas atuais da Sun e da Oracle.

§ O SOAP substituirá as chamadas ao COM, pelo menos entre computadores diferentes.


· WDSL (WebServices Description Language – linguagem de descrição de serviços para a Web):
§ Integrante da estrutura de WebServices.

§ Substituirá a IDL e as bibliotecas de tipo usadas pelo COM/COM+.

§ Os documentos WDSL são outro tipo de documento XML que fornece a definição de metadados de uma requisição SOAP.

§ Um WebService normalmente está contido em um servidor Web que usa uma das tecnologias de extensão de servidor Web disponíveis (CGI, ISAPI, módulos Apache e outras).

§ Um módulo WebServices contém pelo menos três componentes básicos:
a) HTTPSoapDispatcher: recebe a requisição da Web, como qualquer outro distribuidor HTTP.

b) HTTPSoapPascalInvoker: realiza a operação inversa do componente HTTPRIO, pois ele pode transformar requisições SOAP em chamadas a interfaces Pascal (em vez de transformar chamadas a métodos de interfaces em requisições SOAP).

c) WSDLHTMLPublish: pode ser usado para extrair a definição WSDL do serviço das interfaces que ele suporta e executar o papel oposto do WebServices Import Wizard.

· Indy (Internet Direct):
§ A página Internet da paleta de componentes do Delphi contém os componentes TcpClient e TcpServer, desenvolvidos em substituição a ClientSocket e ServerSocket, disponíveis em versões anteriores do Delphi. A Borland sugere o uso dos componentes Indy correspondentes.

§ A paleta Indy tem mais de cem componentes. Esses componentes usam exclusivamente conexões com bloqueio (blocking).

§ A base do trabalho com soquetes é o protocolo TCP/IP. Cada conexão de soquete é composto por um endereço IP e a porta TCP. As portas mais comuns são: 80-HTTP; 21-FTP; 25-SMTP; 110-POP3; 23-TelNet. O arquivo services lista as portas padrão.

§ Existem três tipos de conexão:
a) de cliente: são iniciadas pelo cliente e conectam um soquete cliente local a um soquete servidor remoto.

b) de escuta (listening connections): são soquetes servidores passivos esperando por clientes. Quando um cliente faz uma requisição, o servidor gera um soquete dedicado a essa conexão específica e, em seguida, volta ao estado de escuta. Os servidores de escuta indicam a porta que representa o serviço que fornecem.

c) as conexões de servidor são conexões ativadas por servidores, pois elas aceitam uma requisição de um cliente.

§ Os componentes TCP do Indy são: IdTCPClient e IdTCPServer. Coloca-se um deles em um programa e o outro em um programa diferente, configurando-os para a mesma porta e deixa-se que o programa cliente consulte o programa servidor.

§ Os sockets também podem ser usados para operações em bancos de dados remotos, usando DataSnap e SOAP. São adequados para uso em correio eletrônico, protocolos HTTP.

§ Através dos componentes produtores de HTML do Delphi, presentes na paleta Internet, é possível gerar tabelas HTML a partir de tabelas de bancos de dados, usando a tecnologia WebBroker:
a) PageProducer: manipula arquivos HTML nos quais foram incorporadas tags especiais.

b) DataSetPageProducer: extensão do PageProducer, substituindo automaticamente as tags correspondentes aos nomes de campo de uma fonte de dados conectada.

c) DataSetTableProducer: útil para apresentar o conteúdo de uma tabela, consulta o outro conjunto de dados, com pré-visualização em tempo de projeto..

d) QueryTableProducer e SQLQueryTableProducer: são especificamente personalizados para a construção de consultas paramétricas (para o BDE ou dbExpress).


· DataSnap:
§ Arquitetura de multicamada (multitier) física:
a) servidor de dados: instalação e configuração de acesso ao banco de dados;
b) servidor de aplicativos: comunicam-se com o servidor de dados;
c) clientes magros: não se comunicam diretamente com o servidor de banco de dados, mas com o servidor de aplicativos).
§ A vantagem dessa arquitetura é que a configuração do acesso ao banco de dados precisa ser instalada apenas no servidor de aplicativos.

§ Essa arquitetura era chamada Midas.

§ Com o Delphi 7, não é preciso pagar taxa de distribuição para os aplicativos DataSnap.

§ Desenvolvimento cliente/servidor: o banco de dados e o mecanismo de acesso ficam no servidor, reduzindo a necessidade de processamento nos clientes.

§ Exige instalação de bibliotecas específicas na camada intermediária que fornece a seus computadores clientes os dados extraídos do servidor de banco de dados.

§ Não exige um servidor SQL para armazenamento dos dados. Pode servir dados de uma variedade de fontes, incluindo SQL, CORBA e outros servidores DataSnap.

§ Suporta os seguintes protocolos e conexões:
a) DCOM (COM Distribuído), e COM sem estados (MTS ou COM+): oferecem recursos como segurança, gerenciamento de componentes e transações de bancos de dados. Devido a problemas de passagem através de firewalls, até a Microsoft está abandonando o DCOM em favor de soluções baseadas em SOAP.

b) Soquetes TCP/IP: distribuição de clientes através da Web onde não se pode contar com DCOM. Para isso, o computador da camada intermediária deve executar o ScktSrvr.exe, fornecido pela Borland, como aplicativo ou serviço, que recebe os pedidos dos clientes e os encaminha para o módulo de dados remoto, usando COM. Os soquetes não fornecem proteção contra falhas no lado cliente, pois o servidor não é informado e pode não liberar recursos quando um cliente desligar inesperadamente. Apresenta problemas com firewalls.

c) HTTP e SOAP: HTTP simplifica conexões através de firewalls ou servidores proxy (que não gostam de soquetes TCP/IP personalizados). Nesse caso, usa-se um aplicativo servidor Web específico, httpsrvr.dll, que aceite requisições de clientes e cria-se os módulos de dados remotos apropriados, usando COM. Essas conexões Web podem usar segurança SSL. As conexões Web baseadas no transporte HTTP podem usar o suporte de pooling de objetos do DataSnap.

§ O transporte HTTP do DataSnap pode usar XML como formato de pacote de dados, permitindo que qualquer plataforma ou ferramenta que possa ler XML participe. O uso de XML sob HTTP também é a base do SOAP.
§ O componente DCOMConnection pode ser usado no lado cliente para se conectar a um servidor DCOM e MTS, localizado no computador atual ou em outro computador indicado pela propriedade ComputerName. A conexão se dá com um objeto registrado que tem determinado ServerGUID ou ServerName.

§ O componente SocketConnection pode ser usado para se conectar com o servidor por meio de TCP/IP. Deve-se indicar o endereço IP ou o nome do host, e o IntercepGUID do objeto servidor.

§ O componente WebConnection é usado para manipular uma conexão HTTP, que pode passar por um firewall facilmente. Deve ser indicada a URL na qual sua cópia do arquivo httpsrvr.dll está localizada e o nome ou GUID do objeto remoto no servidor.

§ O componente ConnectionBroker pode ser usado como um alias de um componente de conexão real, o que é útil quando se tem um único aplicativo com múltiplos conjuntos de dados-cliente. Para mudar a conexão física de cada um dos conjuntos de dados, basta mudar a propriedade Connection.

§ O componente SharedConnection permite que um aplicativo conecte-se a múltiplos módulos de dados do servidor, com uma única conexão compartilhada.

§ O componente LocalConnection pode ser usado para fazer com que um provedor de conjuntos de dados local atue como a fonte do pacote de dados, permitindo escrever um aplicativo local com o mesmo código de um aplicativo multicamada complexo.

§ Os componentes XMLTransform, XMLTransformProvider e XMLTransformClient se relacionam com a transformação do pacote de dados DataSnap em formatos XML personalizados.

§ O recurso de pooling permite que se compartilhe alguns objetos da camada intermediária entre um número muito maior de clientes, porque quando um cliente não está chamando um método do objeto camada intermediária, esse mesmo módulo remoto pode ser usado para um outro cliente.


· UDDI (Universal Description, Discovery and Integration – descrição, descoberta e integração universais):
§ Esforço para criar um catálogo de serviços Web oferecido por empresas de todo o planeta, objetivando criar uma estrutura aberta, global e independente de plataforma para que as entidades de negócios se encontrem, definam como interagem com a rede Internet e compartilhem de um registro global de negócios, agilizando a adoção do comércio eletrônico na forma de B2B (business to business).

§ Basicamente é um registro global de negócios, incluindo:
a) White Pages: informações de contato, endereços e outras informações.

b) Yellow Pages: registra a empresa em uma ou mais taxonomias, incluindo a categoria industrial, produtos vendidos, informações geográficas e outras.

c) Green Pages: relaciona os serviços Web oferecidos pelas empresas. Cada serviço é relacionado por tipo (chamado Tmodel).

§ A API UDDI se baseia no SOAP.

§ O Delphi 7 inclui um navegador UDDI que você pode usar para localizar um serviço Web ao importar um arquivo WSDL.

· IntraWeb: Desenvolvimento de aplicativos para Web (não sites Web).
§ Propõe-se a programadores que querem apenas criar aplicativos Web no Delphi da maneira como eles criavam aplicativos VCL ou CLX.

§ Os aplicativos criados podem ser usados em um programa WebBroker ou WebSnap.

§ Arquitetura relativamente aberta (o código fonte pode ser adquirido).

§ Disponível para Delphi, Kylix, C++ Builder, Java e .NET (esta última em andamento).

§ Aplicativos IntraWeb podem ser totalmente independentes de plataforma, dependendo de como são desenvolvidos.

§ Ao se trabalhar com WebBroker ou WebSnap, faz-se isso muito no nível de geração de HTML. Quando se trabalha com IntraWeb, faz-se isso em termos de componentes, de suas propriedades e de seus manipuladores de evento, como faz no desenvolvimento visual do Delphi.

§ Podem ser usadas diferentes arquiteturas para criar e implantar aplicativos: o modo application leva em conta todos os recursos da IntraWeb, e pode ser implantado como biblioteca ISAPI, módulos Apache ou modo standalone da IntraWeb. O modo page é uma versão simplificada que você pode ligar aos aplicativos Delphi WebBroker ou WebSnap existentes, e pode ser implantado como ISAPI, Apache, CGI, etc.

§ Incorpora gerenciamento de sessões pré-definido e simplifica o trabalho com elas.

§ Integra-se com WebBroker e WebSnap.


· ModelMaker: Ambiente de Projeto: UML (Unified Modeling Language): ferramenta CASE e de diagramação em UML de ciclo completo extensível, personalizável e específica do Delphi.

· Rave Reports: Geração de Relatórios.

· CLX (Component Library for Cross-Platform): Criação de Sistemas que funcionam em ambientes Windows e Linux (independente de plataforma)

· .NET
§ O Runtime Enviroment da estrutura .NET pode ser baixado gratuitamente no site Web MSDN da Microsoft. O .NET Framework SDK (Software Development Kit), que é mais completo e inclui documentação e ferramentas para desenvolvedores também pode ser baixado dali. Antes de rodar o Delphi for .NET Preview, uma dessas estruturas deve estar instalada.

§ Sob o ponto de vista do programador, o recurso básico da plataforma .NET é o seu ambiente gerenciado, que permite a execução de código intermediário compilado por várias linguagens de programação diferentes (desde que sejam compatíveis com uma definição comum para os tipos de dados básicos). Esse ambiente incorpora muitos recursos, que variam do gerenciamento de memória sofisticado à segurança integrada.

§ A biblioteca de classes cobre diversas áreas de desenvolvimento (formulários baseados no Windows, desenvolvimento para a Web, desenvolvimento de serviços Web, processamento XML, acesso a bancos de dados e muito mais).

§ CLI (Common Language Infrastructure – infra-estrutura de linguagens comum): compreende:
a) CTS (Common Type System – sistema de tipos comuns): cria a fundação para integrar linguagens de programação diferentes. Ela especifica como os tipos são declarados e usados, e os compiladores de linguagem devem ser compatíveis com essa especificação, para aproveitar a integração independente de linguagem da plataforma .NET.

b) Extensible Metadata (metadados extensíveis): Cada unidade (assembly) deve trazer com ela os dados que a identificam completamente (nome, versão, cultura e chave pública opcionais), os dados que descrevem os tipos definidos, os dados que relacionam os outros arquivos referenciados e todas as permissões especiais de segurança exigidas. Pode conter ainda outros elementos.

c) CIL (Common Intermediate Language – linguagem intermediária comum): é a linguagem de programação de um ambiente de execução virtual com um microprocessador abstrato. Os compiladores que têm como destino a plataforma .NET não geram instruções de CPU nativas, mas instruções na linguagem intermediária do processador abstrato. É semelhane aos bytecodes da Java.

d) P/Invoque (Platform Invocation Services – serviços de chamadas de plataforma): Os programas executados no ambiente em tempo de execução da .NET são reproduzidos em sua própria sandbox particular. Existe uma camada grande e complicada de software entre os programas e o sistema operacional. O embiente de execução da .NET não substitui completamente a API Win32, de modo que deve haver uma maneira de fazer a ponte entre os dois mundos.

e) FCL (Framework Class Library – bibliotecas de classe da estrutura): é uma hierarquia de classes semelhante à VCL. Todas as classes, numa aplicação Delphi .NET devem ser herdadas da .NET Fx.

f) PE (Extended Portable Executable – executável portátil extendido): formato usado pelos arquivos-padrão executáveis do Win32 – para dar suporte aos requisitos de metadados da CLI. Assim, o sistema operacional pode carregar um aplicativo .NET da mesma forma que carrega um aplicativo Win32 nativo.

§ CLR (Common Language Runtime – ambiente de tempo de execução de linguagens comum): a CLI é uma especificação e o CLR é a implementação daquela. É uma biblioteca runtime que unifica a grande variedade de serviços oferecidos pelo sistema Operacional Windows e os apresenta ao programador dentro de uma estrutura orientada a objetos. É responsável por todo o universo .NET: carregamento da imagem executável, verificação de sua identidade e segurança quanto a tipos de dados, compilação do código CIL em instruções nativas de CPU e gerenciamento do aplicativo durante sua vida útil. O código CIL que deve ser executado no CLR é chamado de código gerenciado, enquanto o código restante (como o código executável Intel produzido pelo Delphi 7) é não gerenciado.

§ CLS (Common Language Specification – especificação de linguagens comum): é um subconjunto da CTS, definindo regras que governam o modo como os tipos criados nas diferentes linguagens de programação podem interoperar.

· OLE/COM/COM+/DCOM (Distributed Component Object Model):
§ Tecnologia que define uma maneira-padrão para um módulo (aplicativo ou biblioteca) cliente e um servidor se comunicarem, por meio de uma interface específica. Ex.: geração de dados para Excel, Word, AutoCad, um webbrowser, etc.

§ A página Servers da paleta de componentes do Delphi tem os principais servidores de automação DCOM. Os controles ActiveX podem também ser desenvolvidos no Delphi.

· InterBase Express (IBX):
§ Não é um mecanismo de banco de dados independente de servidor, mas um conjunto de componentes para acessar um servidor de banco de dados específico.

§ Esse conjunto de componentes aplica-se a diferentes ambientes (Delphi, Oracle) e plataformas (Linux).

§ Oferecem melhor desempenho e controle, à custa de flexibilidade e portabilidade.

§ Transações: Cada operação de edição/postagem é considerada uma transação implícita, mas deve-se alterar esse comportamento manipulando as transações implicitamente. Deve-se evitar as transações que esperam entrada do usuário para serem concluídas, pois o usuário poderia ficar foram indefinidamente e a transação permaneceria ativa por um longo tempo, consumindo peformance do sistema. Deve-se isolar cada transação corretamente, por meio do nível de isolamento SnapShot para relatórios e ReadCommited para formulários interativos. Uma transação começa automaticamente quanto você edita qualquer conjunto de dados ligados a ela. O comando CommitRetaining não abre uma nova transação, mas permite que a transação atual permaneça aberta.

§ Componentes Ibx: IbSQL: executa instruções SQL que não retornam um conjunto de dados (instruções DDL ou instruções update e delete); IbDataBaseInfo: consultar estrutura e status do banco de dados; IbSqlMonitor: depurador do sistema (o SQL monitor do Delphi é específico para o BDE); IbEvents: recebe eventos enviados pelo servidor.


· Midas (Middle-tier Distributed Applications Services):
§ Serviços de aplicativos distribuídos de camada intermediária.

§ Vide DataSnap.


· WebBroker:
§ Permite a geração páginas HTML com relatórios dinâmicos, a partir de bancos de dados, incluindo contadores de acesso, pesquisas interativas, etc.

· WebSnap:
§ Complementa a base fornecida pelo WebBroker. A diferença básica é que, em vez de ter um único módulo de dados com múltiplas ações eventualmente conectadas aos componentes produtores, o WebSnap tem múltiplos módulos de dados, cada um corresondente a uma ação e tendo um componente produtor com um arquivo HTML anexado.

§ Um aplicativo WebSnap é técnicamente um programa CGI, um módulo ISAPI ou Apache.

§ As vantagens em relação ao WebBroker: permite que cada um de vários módulos Web corresponda a uma página, a integração de script no lado servidor, a XLS (Extensible Stylesheet Language – linguagem de folhas de estilo extensível) e a tecnologia Internet Express. Além disso, existem muitos outros componentes prontos para manipular tarefas comuns, como login de usuários, gerenciamento de sessões, permissões, etc.

§ Oferece um bom suporte à manipulação de conjuntos de dados: o DataSetAdapter conecta-se a um conjunto de dados, através de um ClientDataSet e exibe seus valores em um formulário ou tabela, por meio do editor visual do componente AdapterPageProducer.

§ Além de visualização, permite edição dos dados de formulários.

§ Permite relacionamentos mestre/detalhe.


· ActiveX:
§ Evolução da tecnologia VBX (16 Bits, Delphi 1): componentes da Microsoft para Visual Basic, quando passou a se chamar OLE, ou OCX (que é a extensão usada).

§ Os controles típicos Windows usam uma interface baseada em mensagens, enquanto os objetos de Automação e os controles ActiveX usam propriedades, métodos e eventos (como os objetos do Delphi).

§ Mesmos componentes ActiveX podem ser usados em vários ambientes de desenvolvimento, como Delphi, Borland C++ Builder, etc.


· dbExpress (DBX):
§ Tecnologia de Acesso a Banco de Dados, sem depender do BDE.

§ É chamada camada ‘magra’ de acesso a banco de dados, substituindo o BDE.

§ Baseia-se no componente ClientDataSet (paleta Data Access), o qual tem a capacidade de salvar tabelas em arquivos locais – algo que a Borland tenta vender com o nome de MyBase.

§ Disponível para as plataformas Windows e Linux.

§ Basicamente não exigem nenhuma configuração nas máquinas dos usuários finais.

§ Limitada em termos de recursos: pode acessar apenas servidores SQL (nada de arquivos locais, só se salvá-los localmente); não tem recursos de cache e oferece apenas acesso unidirecional (só para consultas, não inclui, altera, exclui, etc.)

§ Indicada para produção de relatórios em HTML (só consultas).

§ Para uso numa interface de edição de dados, deve ser usado juntamente com um componente Provider (cache e queries), que pode importar dados. É útil para arquiteturas cliente/servidor ou de múltiplas camadas.

§ Acessa muitos mecanismos de bancos de dados diferentes: Interbase, Oracle, MySql (Linux), Informix, Db2, Ms SQL Server, mas enfrenta alguns problemas de diferenças de dialeto SQL.


· ADO (ActiveX Data Objects):
§ Interface de alto nível da Microsoft para acesso a banco de dados.

§ Implementado na tecnologia de acesso a dados OLE DB da Microsoft.

§ Acessa banco de dados relacionais, não relacionais, sistemas de arquivos, e-mail e objetos corporativos personalizados.

§ Independe de servidor de banco de dados, com suporte a servidores locais e SQL.

§ Mecanismo pesado e configuração simplificada. O tamanho da instalação do MDAC (Microsoft Data Access Components) atualiza grandes partes do sistema operacional.

§ Compatibilidade limitada entre versões: obriga o usuário a atualizar os computadores para a mesma versão que utilizou para desenvolver o programa.

§ Apresenta vantagens para quem usa Access ou SQL Server, oferecendo melhor qualidade de drivers que os dos provedores de OLE DB normais.

§ Não serve para desenvolvimento independente de plataforma: não disponível no Linux ou em outros sistemas operacionais.

§ O pacote ADO foi denominado pela Borland de dbGo, e seus componentes principais são: ADOConnection (para conexão ao banco de dados), ADOCommand (para execução de comandos SQL) e ADODataSet (para execução de requisições que retornam um conjunto de resultados). Além desses, existem 3 componetes de compatibilidade: ADOTable, ADOQuery e ADOStoredProc, que podem ser usados para portar aplicativos baseados no BDE. E ainda há o componente RDSConnection, que permite acessar dados em aplicativos multicamadas (multitier) remotos.

§ A Microsoft está substituindo o ADO pela sua versão .NET, a qual se baseia nos mesmos conceitos básicos. Assim, o uso do ADO pode fornecer uma boa preparação para quem caminha na direção de aplicativos .NET nativos (embora a Borland também planeje portar o dbExpress para aquela plataforma).


· ADO .NET:
§ Evolução significativa da ADO, para a arquitetura .NET, voltada a desenvolvimento para a Web.

§ Supre as falhas do COM, que é a base da ADO como por exemplo:

a) o COM é inaceitável como mecanismo de transporte;

b) o COM só roda em ambiente Windows;

c) o COM não penetra firewalls corporativos.

§ A solução para os problemas da ADO veio com o uso de XML.


· ASP .NET:
§ Adoção da arquitetura .NET, voltada a desenvolvimento para a Web.

· MyBase (vide dbExpress):
§ Apropriado para aplicativo de banco de dados monousuário local.

§ Para executar qualquer aplicativo que use ClientDataSet, você precisa implementar a biblioteca midas.dll, (vide Midas) que pode apresentar conflitos de versões.

§ A partir do Delphi 6, a midas.dll pode ser ligada diretamente ao executável pela unidade MidasLib (vide Midas).

§ O componente ClientDataSet suporta os formatos CDS (padrão) e XML (Extended Markup Language).


· MDAC (Microsoft Data Access Components): componentes de acesso a dados da Microsoft
§ É um guarda-chuva para as tecnologias de bancos de dados da Microsoft e inclui ADO, OLE DB, ODBC e RDS (Remote Data Services – serviços de dados remotos).

§ O MDAC é lançado independentemente e disponível para download gratuito e distribuição praticamente gratuita.

§ O Delphi 7 vem com o MDAC 2.6.

§ O MDAC SDK faz parte do Platform SDK do Windows, que pode ser baixado gratuitamente.

§ Estão inclusos no MDAC os seguintes provedores: Drivers ODBC, Jet 3.5 (Access 97), Jet 4.0 (Access e outros DB), SQL Server, Oracle, Serviços OLAP (Online Analytical Processing – processamento analítico on-line), CSV e Texto Simples.


· XML (Extensible Markup Language – Linguagem de Marcação Extensível):
§ É uma versão simplificada da SGML.

§ É extensível porque permite marcas (tags) livres, em contraste com HTML, que tem tags prédefinidas.

§ Existem duas técnicas normais para gerenciar documentos XML em programas Delphi:
a) DOM (Document Object Model – modelo de objetos documento): carrega o documento inteiro em uma árvore hierárquica de nós, permitindo leitura e manipulação.

b) SAX (Simple API for XML – API simples para XML): analisa o ocumento, chamando um evento para cada elemento desse, sem construir qualquer estrutura na memória.


· BDE (Borland Database Engine):
§ Acesso a bancos de dados locais: Paradox, dBase e servidores SQL, bem como tudo o que possa ser acessado por meio de drivers ODBC.

§ A Borland a considera obsoleta, tende a sair do ambiente Delphi.

§ A paleta BDE do Delphi 7 ainda mantém os componentes Table, Query, StoredProc e outros do BDE.


· CORBA (Common Objects Request Broken Architecture): arquitetura de agente de requisições de objetos comuns.
§ Até o Delphi 6, era um mecanismo de transporte para os aplicativos DataSnap. Devido a questões de compatibilidade com as versões mais recentes da solução CORBA da Visibroker da Borland, esse recurso foi descontinuado no Delphi 7.

§ Essa arquitetura foi redirecionada através da transformação de pacotes de dados em XML e entrega dos mesmos a um navegador Web (cria-se uma camada extra: o servidor Web recebe os dados da camada intermediária e os distribui para o cliente). É a arquitetura Internet Express.


· Internet Express: é parte da plataforma WebSnap.
§ Contém um componente-cliente chamado XMLBroker, que pode ser usado em lugar de um conjunto de dados-cliente para recuperar dados de um programa DataSnap de camada intermediária e torná-los disponíveis para um tipo específico de produtor de página, denominado InetPageProducer.

§ É uma arquitetura de quatro camadas: servidor SQL, servidor de aplicativos (o servidor DataSnap), servidor Web com um aplicativo personalizado e o navegador Web.

§ É uma tecnologia para a construção de clientes baseados em navegador, a qual permite enviar o conjunto de dados inteiro para o computador cliente, com o código HTML e algum código JavaScript para manipular o arquivo XML e exibí-lo na interface com o usuário definida pelo código HTML. É o código JavaScript que permite ao navegador exibir os dados e manipulá-los.


· CGI (Common Gateway Interface):
§ Protocolo para a programação de servidores Web, permitindo a geração de páginas HTML dinâmicas.

§ É independente de plataforma, permitindo ao navegador enviar e requisitar dados. Quando o servidor detecta uma requisição de página do aplicativo CGI, ele lança o aplicativo, passa dados de linha de comando da requisição de página para o aplicativo e, em seguida, envia a saída-padrão do aplicativo de volta para o computador-cliente.

§ Os aplicativos CGI podem ser gerados através de várias ferramentas e linguagens, inclusive o Delphi.

§ É limitado aos sistemas baseados no processador Intel.


· APIs:
§ Alternativas ao CGI são o uso das APIs de servidor Web: ISAPI (Internet Server API, da Microsoft); NSAPI (Netscape Server API) ou API Apache. Essas APIs permitem escrever uma biblioteca que o servidor carrega em seu próprio espaço de endereçamento e mantém na memória. Após carregar a DLL, o servidor API pode executar requisições individuais por meios de linhas de execução dentro do processo principal, em vez de iniciar um novo arquivo EXE para cada requisição, como no caso de aplicativos CGI, sendo ainda mais rápidas que estes.

§ No Delphi, essas tecnologias são implementadas através do WebBroker.



Creio que esta síntese possa facilitar aos usuários do Delphi na tomada de decisões, no momento do planejamento de sistemas, auxiliando na escolha das tecnologias apropriadas para os objetivos dos softwares, assim como poderá auxiliar na adequação das aplicações aos recursos de hardware e software disponibilizados pelos clientes. Não tive a pretensão de alcançar toda a abrangência do ambiente Delphi, mas somente fornecer um ponto de partida para orientar a seleção do ferramental, considerando algumas circunstâncias atuais e tendências futuras do mundo do software.

O diagrama a seguir mostra visualmente as relações entre as tecnologias, pacotes de componentes Delphi, linguagens e protocolos de comunicação.

Um pouco sobre Uberaba - MG


Definição
Uberaba
é um município brasileiro do estado de Minas Gerais, na região do Triângulo Mineiro. Sua população, segundo estimativa do IBGE em 2009, é de 296.261 habitantes. A cidade conta com um dos maiores polos industriais do Brasil e o 3° maior de Minas Gerais, está em 8° lugar nas cidades mais populosas de Minas Gerais e a 3° maior em extensão. É uma das cidades que mais crescem no Brasil, contando com mais de 135 bairros. Segundo alguns autores, o topônimo "Uberaba", nome de um rio do município, origina-se do termo tupi "Y-berab" que quer dizer "água clara" ou "rio brilhante".

IDH (indicadores de desenvolvimento humano)

O Índice de Desenvolvimento Humano Municipal - IDH, medido pelo Programa das Nações Unidas para o Desenvolvimento, indica que Uberaba saltou da 9ª para a 4ª colocação em Minas Gerais, num período de 10 anos. Entre os anos de 1991 e 2000, a renda per capita mensal na cidade foi elevada de R$274,75 (duzentos e setenta e quatro reais e setenta e cinco centavos) para R$400,40 (quatrocentos reais e quarenta centavos), analistas mostram que hoje a renda per capita mensal está próxima de R$1.300,00. O PIB per capita em 2009 é de R$ 18.800,00. Sua mortalidade infantil é de 7,06 por mil nascidos e a expectativa de vida da população é de 73,9 anos. A taxa de alfabetização equivale a 95% da população, com dados do Censo 2001.


Fonte: Wikipédia

Falar muito e não dizer nada


Olha só copiei essa, e postei aqui, achei interessante, e se vocês observarem vão notar que muita gente acaba fazendo isso mesmo.

A tabela abaixo permite a composição de mil sentenças: basta combinar, em seqüência, uma frase da primeira coluna, com uma da segunda, da terceira e da quarta (seguindo a mesma linha, ou ‘pulando’ de uma para outra).
O resultado sempre será uma sentença correta, mas sem nenhum conteúdo.
Experimente na próxima reunião e impressione o seu chefe!!!

Programa como falar em público: ‘TECHNICAL EMBROMATION’ !!!





segunda-feira, 23 de agosto de 2010

Backup de seus arquivos!!!

Já estava para escrever sobre esse assunto faz algum tempo e hoje, depois de assistir a uma apresentação em que o tema foi mencionado, decidi investir um tempo... você faz backup dos seus dados pessoais? Tem copias de suas fotos digitais, de seus filmes, das suas músicas, enfim, dos seus preciosos arquivos...? Discos apresentam problemas. Por mais que a indústria tenha melhorado as taxas de confiabilidade destes dispositivos, um dia eles podem sim apresentar um problema e você pode perder todos seus dados.


Claro, você tem backup. Backup em CDs, em DVDs ou em Discos externos. Discos enormes, de 1 Terabyte ou mais, onde você pode colocar todos seus arquivos. Isso resolve sua vida, não? Ok... e com que frequência você atualiza esse "backup"? O processo de backup não se limita ao primeiro lote. É preciso atualizar o backup periodicamente, da mesma forma que você , eventualmente, modifica seus arquivos.

Se você faz isso periodicamente, seguindo uma metodologia que pode até mesmo ser simples, ótimo. Se segue a metodologia de um dos inúmeros softwares que vem junto com esses discos externos, excelente. O problema é que muitas pessoas não fazem isso. Apostaria que a maioria se enquadra nesta categoria.

Para estas pessoas já existem alternativas bem interessantes e de baixo custo. Uma das mais populares chama-se Mozy (www.mozy.com). Para usuários domésticos eles disponibilizam sem custos um espaço de até 2 GigaBytes. É um bom espaço para armazenar aquivos texto e apresentações, por exemplo, mas não é praticamente nada se você tem um bom número de fotos e filmes digitais que podem ocupar facilmente mais de 100 GBs (no meu caso já são 130). Caso você precise de mais espaço, ainda se classificando como usuário doméstico, pode pagar menos de 5 dólares por mês e ter espaço ilimitado.

O mais interessante é que ela é mais uma representante de toda uma nova linha de soluções baseadas em Web 2.0... seus dados são guardados em um local qualquer que você nem conhece, na Web, na grande "nuvem".

Cuidado, se você não tem backup, busque uma alternativa. E lembre-se sempre "quem tem uma cópia não tem nenhuma".

quarta-feira, 11 de agosto de 2010

História do Delphi

Mas afinal! O que é Delphi?

Ao contrário do que se fala, o Delphi NÃO é uma linguagem de programação, mas sim uma ferramenta de desenvolvimento da ultima geração do Object Pascal. Na verdade, o Delphi nada mais é do que uma evolução natural do "Borland Turbo Pascal for Windows" que marcou época na sua época.

As origens do DELPHI (Ferramenta)

Em 1990 o sucesso marcante do Turbo Pascal (tanto para Dos como para Windows). que era a ferramenta de desenvolvimento e carro chefe da Borland, começava a dar sinais de que já não estava mais com esta bola toda. As causas? O Turbo Pascal for Windows não era uma ferramenta RAD e sim apenas um IDE de escrita de linguagem limitadíssimo e com alguns recursos extras, que se comparados aos IDE's atuais, seria visto como um mero bloco de notas incrementado, de tão pouco o que ele oferecia ao desenvolvedor. Há, e antes que eu me esqueça, tudo era codificado na mão. não existia VCL e elaboração de Forms era no estilo do Visual C ou do Borland C++ For Windows, através de arquivos .rc. Além do mais, não chegou a existir a versão 32 bits do Turbo pascal for windows. Ele só compilava projetos para o Windows 3.11 ou para MS-Dos.

Além do mais, muitos dos programadores do TP for Windows, preferiam mesmo continuar trabalhando no ambiente Dos para desenvolver aplicativos para Windows (Estranho não?), e pra complicar mais ainda a Micro$oft, do nosso eterno colega Bill, lançava o Visual Basic for Windows (Antes existia o Visual Basic p/Dos) uma verdadeira ferramenta RAD com um IDE super incrementado e que permitia que um desenvolvedor criasse um projeto na metade do tempo previsto, se ele usasse o TP, e no conceito do "Arrastar-e-soltar". Além do mais, o Turbo Pascal era focado mais no segmento Científico/Acadêmico do que comercial ao passo que o VB foi concebido justamente para o segmento comercial. Pra sorte da Borland, o VB era limitado em recursos e interpretado e a maioria dos desenvolvedores tem um grande preconceito de "linguagens interpretadas". Outra deficiência que o VB tinha, e que a Borland explorou para tentar derrubá-lo, era o fato do proprio VB não explorar por completo a API do Windows (Nesta o Bill pagou um mico daqueles. Como pode uma ferramenta Micro$oft não interagir 100% com outra ferramenta Micro$oft???)

Bom, como toda ação provoca uma reação, começou-se nos bastidores da borland, uma revolução/ release/desenvolvimento no Turbo Pascal de forma que ele se transformasse em uma nova ferramenta aos olhos dos leigos, mas que fosse um upgrade aos olhos dos analistas/desenvolvedores. Algo que fosse a "Bala na agulha" e que pudesse afrontar, pau-a-pau, o VB for Windows. Nesta época, o Delphi estava sendo fecundado.

Em 1993, começou o desenvolvimento desta nova ferramenta baseada na linguagem Object Pascal e, portanto, orientada a objetos. A ferramenta, no entando, seguiria ainda algumas trilhas instituídas pelo VB for Windows. Mas havia muita coisa a ser feita já que o Turbo pascal estava anos luz distante de seu concorrente, e, pelo que foi analisado pela equipe de desenvolvimento da Borland, muito pouca coisa dele poderia ser aproveitada em termos de IDE já que a linguagem e o compilador atendiam perfeitamente à nova proposta de upgrade. Além do mais, eles tinham que agir rápido porque se o VB for Windows emplacasse e caisse no gosto dos desenvolvedores, o Turbo Pascal que ainda ia levando, iria pro saco de vez e seu sucessor não iria sequer decolar!

O nome escolhido, Delphi, era, originalmente, o nome do Projeto deste upgrade, e tinha um significado oculto, ligado ao fato de solução estar sendo desenvolvida para integração com servidores Oracle. Quando se quer falar com o "Oráculo" (Oracle em português) para onde se vai? Delphi (referência à localização do famoso oráculo da Grécia Antiga)! o nome oficial previsto deveria ser APPBuilder, mas todos concordavam que este nome não era nada inspirador. A Sorte foi que a Novell lançou, pouco tempo antes, o Visual AppBuilder, o que forçou a Borland repensar o nome da nova ferramenta.

Outra razão pela troca de seu nome, foi devido a fatores mercadológicos pois o nome "Turbo" já não era muito compatível com as modernas regras de marketing usadas pelas empresas atuais e além disto, não queriam que o nome Pascal criasse algum tipo de resistência por parte de gerentes de sistemas corporativos que, na maioria das vezes, são pessoas que não tem conhecimentos técnicos abrangentes sobre projeto e desenvolvimento de sistemas, nem tampouco conhecem as diversas ferramentas existentes e tendem sempre a adotarem ferramentas Micro$oft por achar que são as "melhores" que existem no mercado. Além do mais, o pascal não era uma linguagem comercial e sim uma linguagem de meio acadêmico sendo muito usada por universidades e escolas técnicas, para os alunos aprenderem técnicas e conceitos de lógica de programação. Mas ela era uma linguagem de programação extremamente poderosa, abrangente e quase que ilimitada, o que permitia o programador fazer qualquer tipo de aplicativo comercial ou científico.

Em busca deste novo nome, propôs uma mesclagem do nome da ferramenta anterior: Borland Turbo Pascal AppBuilder que não agradou também, a solução então foi manter o nome do projeto (Situação semelhante à do Kylix) e, em meados de 1995, foi lançado no mercado a nova aposta da Borland para peitar o Visual Basic for Windows e ver no que que daria: DELPHI!

A sorte estava lançada....

Atualmente, na sua versão 7, o Delphi dispõe de recursos para integração com diversos bancos de dados relacionais (Paradox, XBase, ACCESS), DBMS (Oracle, Sybase, Interbase, Informix, SQL Server, MYSQL) de forma ágil e extremamente fácil, recursos para desenvolvimento de aplicativos para internet, suporte a tecnologias CORBA, ActiveX, OLE, XML e agora as mais recentes: SOAP e .NET. Seu raio de ação vai desde um simples aplicativo comercial até científicos ou que façam uso de pesadas rotinas em assembler que podem ser implementadas em seu proprio código fonte. O Produto deu tão certo que lhe valeu uma versão para o ambiente Linux, que ainda que apesar de ainda estar engatinhando, demonstra evolução e aos poucos ganha o seu espaço no mercado.

PS: Não confunda "Turbo Pascal" com "Object Pascal". O Object Pascal é A LINGUAGEM DE PROGRAMAÇÃO em Pascal ORIENTADA A OBJETOS, ao passo que o turbo Pascal É UMA FERRAMENTA DE DESENVOLVIMENTO que usa o Object Pascal da mesma forma que o Delphi é. Portanto se lhe perguntarem o que o Turbo Pascal tem haver com o Delphi, você vai dizer que ambos são duas ferramentas de desenvolvimento baseadas no pascal.

terça-feira, 10 de agosto de 2010

Instalar o BDE no Windows 7

Instalar o BDE no Windows 7

Se você ainda usa o BDE, não conseguirá executa-lo no Windows 7 com a instalação padrão, por que o BDE não conseguirá gravar o arquivo C:\PDOXUSRS.NET.
Para fazer isto, faça login como administrador e execute o BDE com direitos administrativos:


Então, configure o NET DIR para outra localização que um usuário comum tenha permissão para alterar arquivos, o local recomendado é “C:\Users\Public\Documents\RAD Studio“, conforme a imagem a seguir:
image

O Executável que vai fazer uso do BDE, deve ser marcado para executar como administrador, para evitar erros.

quarta-feira, 7 de julho de 2010

Mala Direta (includepicture) word

Resolvi postar sobre como inserir imagens no word através de uma mala direta, pois encontrei pouca informação na internet e a maioria delas não resolvel o meu problema.

Segue abaixo:

1. Abra o excel e digite uma lista tipo:
nome da coluna "foto" e abaixo os dados em cada linha tipo a.jpg que na verdade deve ser o nome das imagens que você quer inserir.

2. Em seguida salve o arquivo e feche, apos isto, abra o word, e siga os procedimentos para criar uma nova mala direta.

3. Após vincular o arquivo do excel, no word pressione a tecla ctrl + f9, isso fara com que abra dois cochetes para que você possa digitar os comandos.

4. Entre os {} digite {Include Picture "c:\\fotos\\"} (considero que as imagens estão na pasta fotos em "c").
Obs.: é necessário a utilização de duas barras invertidas para cada diretório.

5. apos isso insira o campo que contém o nome do arquivo e clique em mesclar, depois disso ficará assim {IncludePicture "c:\\fotos\\{MERGEFIELD "foto"}"}

6. No arquivo mesclado pressionte ctrl + t, para selecionar todo documento, em seguida pressione a tecla F9, pronto ele irá mostrar as imagens.

Qualquer dúvida, envie e-mail para rogerio9999@gmail.com que irei tentar ajudar.

quarta-feira, 30 de junho de 2010

Quanto ganha um programador em Uberaba

Analista programador Delphi recebe em média entre 2.500,00 a 5.500,00 em São Paulo, já aqui em Uberaba varia entre 750,00 à 3.100,oo.

Seu salário está alinhado com a média do mercado? Se você trabalha na grande São Paulo, já é possível ter uma ideia de quanto ganham os profissionais da área em diversos cargos e níveis da carreira.

Confira a tabela de salários de TI para São Paulo

De acordo com um levantamento realizado pela Desix, empresa focada em recrutamento e seleção de profissionais de TI, os maiores salários são de executivos de contas e os menores dos analistas de suporte de vendas.

Em um nível salarial intermediário, encontram-se cargos como consultor de TI funcional, que ganha de R$5.7080 a R$8.561, e analista programador Java, com salário entre R$ 2.500 e R$ 6.500.

A tabelada Desix foi composta a partir de uma média simples entre os clientes da empresa e reflete valores pagos apenas na grande São Paulo.

FONTE: INFO

domingo, 13 de junho de 2010

Desenvolvimento de Sistemas

:::DESENVOLVIMENTO DE SOFTWARE:::

Disponibilizamos de um excelente corpo técnico de programadores para desenvolvimentos em Mysql, Firebird, Oracle e Interbase, utilizando de ferramentas Java, Delphi e PHP. Desenvolvemos aplicativos conforme as necessidades de nossos clientes. Os aplicativos são gerados para utilização via Web ou em Sistemas Desktop. Aliado a isso, a ferramenta permite um controle de versões do sistema, gerenciando equipes de programadores e analistas envolvidos em um mesmo projeto. Possuímos também sistemas já desenvolvidos que podem ser adquiridos e adaptados para as necessidades específicas do cliente.

Para maiores informações acesse mivirosolutions.blogspot.com e www.miviro.com.br