quinta-feira, 29 de julho de 2010
Busca  
Porta 80 Web Hosting
 :: Acessibilidade
Ir para conteúdo principal: ALT + 1
 :: Participe
Seja um autor de CD/DVD de Treinamento
Publique um artigo
Publique uma oportunidade
Publique uma notícia
Publique um curso
Publique uma dica
Publique um código
 :: Informativo
Receba nossos informativos por e-mail.
E-mail:   
 
Digite a palavra abaixo:  
 
 
 :: Oportunidades
Cadastrar oportunidades
Gerenciar suas oportunidades
Cadastrar nova empresa
 :: Especiais
Básico de C++
C++ Builder
Curso ASP.NET 3.5 em VB.NET e C#
Guia Prático de HTML
Testes com Visual Studio Team System 2008
 :: Desenvolvimento
ActionScript
ADO.NET
ASP
ASP.NET
Automação Comercial
C#
C/C++
Coldfusion
CSS
Delphi
Disp. Móveis
HTML
Java
Javascript
LSL (Second Life)
Modelagem
PHP
Python
Sharepoint
Silverlight
SQL
VBA (Office)
Visual Basic
Visual Basic .NET
Visual Fox Pro
WCF/WPF
Web Services
XML
 :: Infra
BizTalk Server
CRM
Exchange Server
ForeFront / Antigen / IAG
Interoperabilidade
ISA Server
Linux
MOF
MS Dynamics CRM
Network
OCS / LCS
Outlook
Powershell e Scripts
Redes
Segurança
System Center e Gerenciamento
Virtualização
Windows
Windows Server
 :: Banco de Dados
Access
Caché
Firebird
Interbase
MySQL
Oracle
SQL Server
Sybase
 :: Gerência
Arquitetura
Ciclo de Vida de Desenvolvimento
Controle de Versão
Estimativas
Metodologias
MOF
Qualidade e Testes
 :: Design
Corel
Flash
Photopaint
Photoshop
 :: Livros
Análise Sistemas
Aplicativos
Banco de Dados
Certificação
Design e CAD
Gerência
Hardware
Internet
Programação
Programação Web
Rede
Segurança
Servidores
Sistemas Operacionais
 :: CDs/DVDs
Desenvolvimento
Infra
Design
 :: E-Books
.NET 2.0 (VS 2005)
.NET 1.1 (VS 2003)
SQL Server
Excel 2007
Excel 2003
Access 2003
ASP 3.0
Delphi
Java
Artigos
Como Armazenar Imagens no Banco de Dados
Por: Stan Schultes
Feed de artigos.
Feed de artigos deste autor.
Gere seu feed personalizado  
Como Armazenar Imagens no Banco de Dados
Publicado em: 14/11/2002

Seja quais forem seus planos (incluir gráficos no programa, criar formulários de entrada de dados ou projetar um banco de dados para o seu site Web), a criação de um método fácil para modificar e adicionar imagens em um banco de dados dará maior flexibilidade e portabilidade aos seus aplicativos. No entanto, você precisa escolher com cuidado o método mais apropriado para o seu aplicativo. Nesta coluna, abordaremos as diferentes maneiras de manipular imagens como objetos ou ponteiros de arquivos no banco de dados do aplicativo.

Os clientes estão sempre pedindo dicas sobre como exibir o logotipo da empresa e outras imagens em diferentes locais no aplicativo. Da mesma forma, os projetos Web geralmente requerem que cada registro possua uma imagem associada aos dados. As imagens oferecem uma maneira fácil de associar visualmente um item aos dados do registro. O problema é que essas imagens mudam constantemente, e os clientes estão sempre adicionando imagens novas. O seu aplicativo deve ser capaz de dar aos clientes a flexibilidade de que necessitam.

O Visual Basic oferece várias maneiras de armazenar imagens (como, por exemplo, usar o controle ImageList), porém esses métodos requerem a recompilação do aplicativo e geralmente são restritos a um número limitado de imagens. A melhor maneira de armazenar imagens é incluí-las em um banco de dados. É possível fazer isso de duas maneiras: armazenando a imagem como um BLOB (Binary Large Object) em um campo do banco de dados ou armazenando um indicador, ou “ponteiro”, para a localização do arquivo no disco. Cada um desses métodos oferece vantagens e desvantagens.

Por exemplo, armazenar imagens como um BLOB pode aumentar muito o tamanho do banco de dados, embora as imagens fiquem armazenadas em uma localização central, única. Já o armazenamento de imagens como um ponteiro de arquivo permite diminuir consideravelmente o tamanho do banco de dados, mas por outro lado, faz com que qualquer arquivo inválido ou ausente cause problemas mais tarde.

Dependendo de sua preferência, você precisará pesar esses dois fatores (tamanho e eficiência) para decidir qual método será o mais indicado para um aplicativo específico. Descreveremos ambos os métodos usando ADO (Microsoft ActiveX Data Objects) para salvar e recuperar imagens em um banco de dados do Access 97. O código será idêntico se você quiser usar um banco de dados do Access 97, mas nesse caso será necessário fazer o download e a instalação do último pacote MDAC (Microsoft Data Access Components).

Como Criar Banco de Dados

Você criará um aplicativo simples para armazenar uma biblioteca de imagens elementar. Antes de iniciar o projeto VB, crie o banco de dados em que irá armazenar os dados. Inicie o Access e crie uma nova tabela, denominada ImageLibrary. Adicione os campos e propriedades necessários (consulte a Tabela 1).

Tabela 1: Criação da tabela ImageLibrary. Configure sua tabela no Access 97 ou 2000 com esses campos. Defina o campo ID como a chave primária (PrimaryKey).

Depois de criar o banco de dados, inicie o VB, escolha Project | References e selecione Microsoft ActiveX Data Objects 2.1 Library (ou use a biblioteca ADO 2.5, se estiver instalada). Nomeie o formulário padrão do projeto frmMain. Projete seu formulário de forma a atender a suas necessidades de armazenamento de imagens. O projeto da tabela ImageLibrary foi configurado para permitir que você selecione como desejará armazenar as imagens no banco de dados (consulte a Figura 1).

Figura 1: Aprimore sua imagem. Decidir como salvar as imagens no banco de dados é uma etapa importante. O exemplo de projeto permite que você teste ambos os métodos para decidir qual é o melhor para o seu aplicativo.

Você precisa adicionar as variáveis que fazem referência ao recordset e à conexão do banco de dados. Posteriormente, você usará essas variáveis para navegar no banco de dados e também para adicionar e editar registros. Adicione essas variáveis à seção Declaration do frmMain:

Private Conn As ADODB.Connection
Private rs As ADODB.Recordset

Em seguida, você precisará estabelecer a conexão com o banco de dados e recordset. Certifique-se de que o arquivo ImageLib.mdb esteja no caminho do aplicativo e adicione esse código ao evento frmMain_Load:

'Estabeleça a conexão.
Set Conn = New ADODB.Connection
Conn.ConnectionString = _
	"Provider=Microsoft.Jet.OLEDB" & _
	".3.51;Data Source=" & App.Path & _
	"\ImageLib.mdb"
	Conn.Open
	
'Abra o recordset
Set rs = New ADODB.Recordset
rs.Open "ImageLibrary", Conn, _
	adOpenKeyset, adLockPessimistic, adCmdTable

Com o recordset aberto, é hora de começar a visualizar e modificar os dados no registro. O primeiro passo será aprender a salvar e recuperar a imagem real no banco de dados usando os métodos GetChunk e AppendChunk. Esses dois métodos podem ser usados para exibir um campo BLOB armazenado no banco de dados. No primeiro método, bastará apenas especificar as propriedades DataSource e DataField do controle Image para o campo BLOB e para o recordset já aberto:

Set imgDBImage.DataSource = rs
imgDBImage.DataField = "ImageBLOB"

Seguir esse método é geralmente a maneira mais fácil de começar a exibir as imagens armazenadas no banco de dados. No entanto, os arquivos maiores poderão pesar na memória do sistema quando o controle Image tentar carregar no banco de dados. Se espaço na memória for um problema para seu aplicativo devido a arquivos de imagens muito grandes, use o segundo método – o método GetChunk – para recuperar objetos binários do banco de dados. Esse método permite especificar o número de bytes (blocos) a serem recuperados do campo BLOB. Você poderá carregar o objeto armazenado nesses blocos menores (no caso das imagens maiores) ou em um único bloco:

strData = rs("ImageBLOB"). _
	GetChunk(rs("ImageBLOB").ActualSize)

A desvantagem do método GetChunk: como a propriedade de figura do controle Image não pode ler o vetor de bytes carregado do banco de dados, você precisará antes salvar um arquivo temporário do campo de dados e, em seguida, ler esse arquivo com o método LoadPicture. Apesar dessa falha, o método GetChunk é na verdade mais rápido do que definir as propriedades de dados do controle Image.

Como Determinar o Melhor Método

Criamos uma tabela com 100 registros e fizemos um pequeno teste para determinar qual método era mais rápido. Cada registro continha dados binários de aproximadamente 50 K. Efetuamos um loop em todos os registros na tabela e visualizamos os dados armazenados em um controle Image. O método DataField foi concluído em 58 segundos, enquanto o método GetChunk levou apenas 27 segundos (com um tamanho de bloco de 100 bytes). Como essas imagens específicas não eram muito grandes, recuperamos o objeto todo em um único bloco. Esse método resultou no tempo mais rápido: 18 segundos. Ou seja, você precisa descobrir qual o melhor método a ser usado em seus aplicativos. Para acompanhar este artigo, use o método GetChunk com um tamanho de bloco de 100 bytes (consulte a Listagem 1).

Listagem 1: Recupere um registro do banco de dados e propague os campos no formulário. Se o caminho da imagem estiver vazio, o programa deduzirá que a imagem foi armazenada como um BLOB. O procedimento presumirá que você abriu o recordset (rs) e posicionou-o no registro correto.

Assim como acontece no processo de recuperação de imagens armazenadas, salvar uma imagem no banco de dados também requer antes a conversão de imagem em um vetor de bytes. Uma vez feito isso, você poderá usar o método AppendChunk para gravar os bytes no campo do banco de dados. No código, grave os dados no campo em uma única etapa, atribuindo ao bloco o mesmo tamanho atribuído ao arquivo de imagem (consulte a Listagem 2).

Listagem 2: Salve o registro no banco de dados. Dependendo do botão de opção selecionado, você salvará a imagem no banco de dados como um arquivo de ponteiro ou como um BLOB. O procedimento presumirá que você posicionou o recordset (rs) em um novo registro ou que está editando o registro atual (rs.Edit).he current record (rs.Edit).

No exemplo de projeto, apenas o primeiro caminho será armazenado no banco de dados se você escolher salvar a imagem como um ponteiro de arquivo, o que reduz o tamanho do banco de dados e aumenta a velocidade do aplicativo. O procedimento FillFields na Listagem 1 determina primeiro se o campo ImagePath contém um valor. Se você salvou um caminho com o registro, a imagem será armazenada como um ponteiro de arquivo. Caso contrário, a imagem será armazenada como um BLOB (consulte o método GetChunk descrito anteriormente). O ponteiro armazenado pode ser facilmente exibido usando-se o método LoadPicture do controle Image.

A vantagem de armazenar imagens como um arquivo de ponteiro é que apenas o caminho do arquivo é salvo. Isto significa que o banco de dados não crescerá tanto como cresceria se a imagem fosse armazenada em um campo BLOB. No exemplo descrito anteriormente, com 100 registros de imagens de 50 K armazenados em campos BLOB, o banco de dados alcançou 4 MB. O mesmo banco de dados, quando utilizou ponteiros de arquivo, não chegou a 100 K. Do ponto de vista da velocidade, o método de ponteiro de arquivo venceu, completando o teste em cinco segundos. Essas vantagens geralmente justificam a preferência pelo método de ponteiros de arquivos quando se fala em salvamento de imagens.

A principal desvantagem do método de ponteiro de arquivo é o fato de que, se houver alguma mudança nas localizações do arquivo, o seu aplicativo não poderá carregar a imagem. Outra desvantagem é a pouca portabilidade do aplicativo. Se você mover o aplicativo para outro local, precisará mover o banco de dados e todos os arquivos de imagem para os quais ele aponta. Uma maneira de amenizar esses problemas é salvar a UNC (Universal Naming Convention) do arquivo, em vez de sua localização real no disco (por exemplo, \\andyr\images\test.jpg em vez de c:\images\test\jpg). Evidentemente, se precisar enviar o aplicativo para clientes externos, estes provavelmente não terão acesso aos mesmos recursos que você (a não ser que você salve o ponteiro de arquivo como uma imagem na Internet, como em www.yoursite.com/images/test.jpg). Provavelmente, essa é a única situação em que seria recomendado salvar a imagem no banco de dados como um objeto binário. Ou seja, os ganhos em relação a velocidade e tamanho do arquivo só compensarão se você souber com antecedência que as mudanças na localização dos arquivos prejudicarão o aplicativo.

Por fim, você deve estar se perguntando se poderá usar esses métodos para armazenar imagens em bancos de dados SQL Server. Embora os métodos AppendChunk e GetChunk também funcionem nesses bancos de dados, a Microsoft desaconselha seu uso porque as colunas de BLOB nas tabelas SQL prejudicam o desempenho do servidor. No caso de tabelas SQL, a Microsoft recomenda armazenar um ponteiro para a localização do arquivo.

No início, você levará algum tempo até armazenar as imagens de todos os seus aplicativos no banco de dados, mas os resultados aparecerão rapidamente. Agora, você pode criar um formulário de entrada de dados para atualizar as imagens de seu site. Além disso, não precisará mais recompilar o aplicativo para alterar suas imagens gráficas. Tente usar um banco de dados de imagens em seu próximo projeto. Você verá a melhoria na portabilidade e na flexibilidade de seus usuários.

Sobre o Autor

Stan Schultes é gerente de projetos e desenvolve aplicativos para empresas de Web e VB em Sarasota, Fla. Stan é MCP em VB e fez uma palestra sobre desenvolvimento de VB na conferência DevDays na Microsoft.

Download do código referente a este artigo
Clique aqui para fazer o download.





MS TechEd 2010



 

Inclua um comentário sobre o artigo Topo
Elogios e críticas são muito bem vindos, porém o comentário deve ter referência ao artigo em pauta.
O portal e o autor agradecem.
Nome:    
E-mail:      
Comentários:    
Digite a palavra abaixo:  
Para dúvidas técnicas, NÃO UTILIZE ESTE ESPAÇO, utilize nosso fórum de discussão.
http://linhadecodigo.com.br/cs2/forum
 
Comentários sobre o artigo Ver Todos comentários
Tenho armazenado em meu servidor uma grande quantidade de fotos dos produtos da empresa (São muitas fotos) em um banco de dados SQL Server 7. Estou tentando transferir essas imagens para um outro banco de dados no meu notebook e não consigo. Aparece sempre uma mensagem de time out ou quando copiei direto do banco apareceu o seguinte:
Copy Data from FotoPro to [DbCompras].[FotoPro] Step.
Error at destination for Row number 43482. Error encounted so far in this task: 1.
Could not allocate space for object 'FotoPro' in database 'DbCompras' because the 'PRIMARY' filegrup is full.
Quem enviou: Germano
Postado em: 25/3/2009 0:00:00
Simplesmente perfeito.
Quem enviou: Valter Rodrigues
Postado em: 6/12/2007 0:00:00
tem uma matéria sobre gravação e leitura de binários em banco de dados em http://www.50minutos.com.br/?p=70 que funcionou, segundo um aluno, para sql server e oracle
Quem enviou: AGNALDO
Postado em: 26/6/2007 0:00:00
Queria saber se consigo visualizar arquivos do autocad no access.
Quem enviou: Sandro Felipe
Postado em: 27/1/2007 0:00:00
Como gravar imagens grandes em Banco de dados, exemplo uma imagem de 1GB sem da "Out of memory" ?
Quem enviou: Imagens grandes
Postado em: 23/1/2007 0:00:00
Gostaria da sua ajuda para criar um banco de dados, com o mesmo objetivo esplicado acima(armazenar imagens), so que gostaria de crialo no Firebird, ou MYSQL....se poder me indicar onde encontrarei mais detalhes de armazenamento de imagens em qualquer um dos dois.......bom a lógica acredito que seja a mesma , tanto em armazenamento em BLOB, quanto em ponteiros.......mas linguagem utilizada os metodos serão diferentes............


Desde já agradeço
Quem enviou: Huds Sousa Costa
Postado em: 31/10/2006 0:00:00
Eu sou estudante de programação em delphi.
Li seu artigo mais tenho uma duvida que ainda nao consegui encontrar resposta.
Gostaria de saber se existe alguma maneira de incluir fotos no banco de dados em access com o Delphi sem o blob?
Tenho um sistema imobiliario e sempre funcionou muito bem, tive que atualiza-lo incluir alguns 5 campos memos e 8 campos de imagens no banco.
apos esta mudança o delphi e o BDE apresentam um erro de "Non-blob column in table required to perform operation"
Este e um erro do BDE tentei fazer um refresh na tabela mas nao adiantou.
mudeio os campos memos para String no access funcionou com a restrinção de so poder incluir as fotos apos o cadastro.
Existe alguma solução para viabilizar este problema?
E tenho como incluir arquivos *JPG ou *.JPEG no access???
Quem enviou: JOMARIO FIGUEIREDO
Postado em: 7/8/2006 0:00:00
NO MEU CASO PRECISO INSERIR ARQUIVOS DWG OU O QUE ESTÁ SENDO VISUALIZADO NO LAYOUT, NUM FORMULARIO DO ACCESS. TEM COMO FAZER COLOCANDO APENAS O CAMINHO DESTES ARQUIVOS E ACESSANDO ATRAVÉS DE UMA FUNÇÃO?
Quem enviou: MARLI AUGUSTO
Postado em: 21/7/2006 0:00:00
Boa tarde, não sei se vcs podem me ajudar mas vou explicar qual é meu problema.Eu comecei a trabalhar na area de informatica a uma semana e ja me passaram o seguinte, eu teria que fazer um sisteminha muito basico de controle de ligações eu até consegui faze esse sistema mas esse sistema tem que ter um icone opcional para salvar as ligações, e elas devem ser salvas em um banco de dados access.eu tive fuçando um pouco o access mas na verdade não faço ideia como eu faço isso.
Aqui ta oq eu consegui faze

<html>
<head>
<body>
<table border=0>
<tr><td><b>DATA</td><td><b>INICIO DA LIGAÇÃO</td><td><b>TÉRMINO DA LIGAÇÃO</td></tr>
<tr><td><input type="text" name="qdata"></td><td><input type="text" name="inicio"></td><td><input type="text" name="término"></td></tr>
<td><tr><b></td><td><b>QUEM LIGOU</td><td colspan="2"><b>MUNICIPIO</td></tr>
<td><b><input type="text" name="qligou"></td><td><input type="text" name="municipio"></td></tr>
<tr><td colspan="3"><b>SOLICITAÇÃO</td></tr>
<tr><td colspan="3"><b><input type="text" name="qsolic" size="90"></td></tr>
<tr><td colspan="3"><b>SOLUÇÃO</td></tr>
<tr><td colspan="3"><b><input type="text" name="solução" size="90"></td></tr>
<tr><td><b>STATUS
<tr><td><input type="radio" name="finalizado" value="FINALIZADO"><b>FINALIZADO</td><td><input type="radio" name="finalizado" value="PENDENTE"><b>PENDENTE</tr></td

Se vcs puderem me ajudar eu agradeço de coração obrigado.
Quem enviou: flavio
Postado em: 18/7/2006 0:00:00
Muito Legal a materia.

Quero fazer exatamente isso só que para abrir e gravar documentos do office (word e excel)
Quem enviou: Carlos
Postado em: 20/6/2006 0:00:00
Outros artigos do autor Topo
Envie e-mails a partir do VB
Artigos relacionados Topo
Sou programador, o mágico atende na sala ao lado
System Tray - O seu ícone ao lado do relógio do Windows
Criando Aplicações Limitadas a Uma Única Instância (Single Instance)
Criando um pacote de instalação com o INNO SETUP
Nota Fiscal Eletrônica: Construindo um "Servidor de Assinatura Digital" com o NFeExpress
Visual Basic 6 – Simulação de um GC
VB.NET: Entendendo Passagem por Valor e por Referência (Byval/ByRef)
VB: Usando XML para pequenas base de dados
VB: Abrir arquivos *.pls e *.m3u em um listbox
Utilizando o componente MSDXM.OCX (Windows Media Player) para fazer um player de música
Winforms - Uma Visão Geral
Você tem componentes COM e quer aproveitá-los em .NET?
VB: Protocolo FTP e Winsock
Legibilidade de Código - algumas regras
Visual Basic - Decompilação ???
Utilizando os objetos de Controle Vinculados da ADO
Tratamento de erros no Visual Basic
Aprendendo a trabalhar com o Timer no Visual Basic 6
Construa o núcleo de um projeto
Você Pode Usar Alguns Ponteiros
Dez outras maneiras de se preparar para o VB.NET
Simplifique a Extração de Dados
Como Implementar Classes no VB
Revendo a Recursão
Produtos relacionados Topo
Livro: Banco de Dados em MACINTOSH Utilizando REALbasic
Livro: Padrões de Programação: Para Fábricas de Software, Analistas e Programadores (Visual Basic 6, ASP, HTML, Javascript e Programação de Banco de Dados)
Livro: Instant ASP Scripts
© Copyright 2001-2010 Codeline Editora, Comércio e Tecnologia Ltda. | Política de privacidade e de uso | Anuncie | Fale conosco

» Site hospedado na Porta 80 Web Hosting «
Nossos números
Dicas: 1.314
Códigos/scripts: 279
Funções de VBScript : 90
Funções JScript : 05
Livros: 1.805
Notícias: 2.488
Artigos: 2.972
Cases: 14
Oportunidades: 4.546
Publicidade

Conheça a loja do Linha de Código.

Microsoft indica Linha de Código.

Assine a Revista Mundo .NET
Portal de Vídeos .NET - os melhores vídeos .NET estão aqui
O que você fará com o Visual Studio 2010?
Revista Codificando .Net

Siga-nos no Twitter

Linha de Código no Orkut
Fórum de discussão do portal Linha de Código
Feeds
Oportunidades
Notícias
Artigos
Artigos personalizado
       (Por assunto)
Artigos personalizado
       (Por autor)
Portal Vídeos .NET
Portal Vídeos Delphi
LC Blog
       (Onde você faz a notícia)
Promoções
Promoção Mobile com entrega via download (válido somente para pagamento via boleto bancário)
Promoção Mobile com entrega via download (válido somente para pagamento via boleto bancário)
De: R$ 189,00
Por: R$ 126,00
Promoção Wordpress + Tabless (válido somente para pagamento via boleto bancário)
De: R$ 149,70
Por: R$ 99,80
Promoção C# Básico (válido somente para pagamento via boleto bancário)
De: R$ 185,90
Por: R$ 136,00
Promoção PHP + MYSQL Intelimax (válido somente para pagamento via boleto bancário)
De: R$ 308,00
Por: R$ 219,00
Promoção Especial Infra
De: R$ 175,95
Por: R$ 136,00
CDs/DVDs
DVD Desenvolvimento de Games - Programando Jogos com o 3D Game Studio
DVD Desenvolvimento de Games - Programando Jogos com o 3D Game Studio
Por: R$ 59,00
DVD Curso de CorelDraw X4
Por: R$ 79,90
DVD Curso de Fireworks CS4
Por: R$ 49,90
DVD Curso de Indesign CS4
Por: R$ 55,00
DVD Curso de Efeitos Digitais
Por: R$ 49,90
Livros
MSProject 2007 - Metodologia e Critérios de Qualidade para o Gerenciamento de Projetos
MSProject 2007 - Metodologia e Critérios de Qualidade para o Gerenciamento de Projetos
De: R$ 129,00
Por: R$ 77,40
Foundation FLASH CS3 para Designers
Ciência Moderna
De: R$ 139,00
Por: R$ 83,40
Recursos Visuais na Web com PHP
Ciência Moderna
De: R$ 49,00
Por: R$ 29,40
Crie um Sistema Web com PHP 5 e AJAX - Controle de Estoque
Erica
De: R$ 99,50
Por: R$ 84,50
Crie Projetos Gráficos com Adobe Photoshop CS4, CorelDRAW X4 e Adobe InDesign CS4 - em Português
Erica
De: R$ 77,50
Por: R$ 65,80
E-Books
Manual Completo de Estudos MCSE 70-270 - Instalando, Configurando e Administrando o Windows XP (506 páginas) - Entrega via download
Manual Completo de Estudos MCSE 70-270 - Instalando, Configurando e Administrando o Windows XP (506 páginas) - Entrega via download
Por: R$ 30,00
Manual de Estudos - Exame 70-291 - Windows Server 2003 (606 páginas) - entrega via download
Por: R$ 30,00
Dominando MS – Visio ® em 20 Passos - Melhores Práticas em Gestão de Projetos (entrega via download)
Por: R$ 30,00
MS-Project® 2007 - Melhores Práticas de Gestão de Projetos - Dominando MS – Project ® em 20 Passos (e-book com entrega via download)
Por: R$ 20,00
Banco de dados com C# e Visual Studio .Net 2005 (entrega via download)
Por: R$ 20,00
Os 10+ | Autores do dia
Israel Aéce
Júlio Cesar Fabris Battisti
Anderson Patricio
Alfred Reinold Baudisch
Luiz Felipe de Freitas
Robert Martim
Ramon Durães
Alessandro de Oliveira Faria
José Carlos Macoratti
Eric C M Oliveira
Os 10+ | Artigos do dia
HTML Básico
HTML Avançado
Criando aplicativos para o Orkut
Tutorial de Tabelas Dinâmicas no Excel – Parte 1
Excel: fórmulas matriciais
ASP.NET 2.0 - Explorando o GridView
Iniciando um projeto de Nota Fiscal Eletrônica - NFe
PL/SQL - Procedures e Funções
Excel: Comparando Listas
PHP: Formulários e upload de múltiplos arquivos e fotos