Posts Categorizados ‘ASP.Net

02
mai
11

Imagens no banco de dados 4.1 – Relatórios em RDLC

Uma funcionalidade muito útil do Visual Studio é a criação de relatórios em RDLC (Report Definition Language Client-side).

Estes relatórios em RDLC podem ser utilizando tanto em aplicações Web ou Windows Forms.

O primeiro passo para criação de um relatório em RDLC é adicionar um item Report ao projeto:

Neste relatório, vamos adicionar uma imagem estática, que nos servirá de “logo”:

Neste caso, importaremos uma imagem do computador, com o botão “Import”:

Agora temos nosso relatório com uma logo simples:

Para recuperar informações do banco de dados, precisaremos definir a nossa fonte de dados criando um Dataset:

Configuramos o banco de dados a ser utilizado por este Dataset:

E as tabelas a serem utilizadas:

Por fim, temos nosso Dataset configurado:

Adicionamos uma tabela ao nosso relatório:

Tabela adicionada e ajustada no layout do relatório:

Definimos o Dataset utilizado pela tabela:

E adicionamos uma imagem na área “Data” da tabela:

Para esta imagem que será “dinâmica”, definimos que ela virá da fonte “Database”, utilizando a campo “Bytes”, que no caso é a coluna onde estão armazenados os bytes das imagens em nossa tabela:

Por fim, adicionamos o campo “Nome” da imagem à tabela do relatório:

E ajustamos mais um pouco o layout:

No caso de aplicações Web, adicionaremos uma página simples ao projeto:

E nesta página adicionamos um ReportViewer:

Selecionando o ReportViewer, clicamos sobre a flecha indicada:

Definimos qual o relatório a ser utilizado:

Neste passo, será automaticamente criado um ObjectDataSource e já ligado ao nosso Dataset.

Por fim, adicionamos um ScriptManager a esta página:

Então teremos a página configurada com o ScriptManager, e o ReportViewer já ligado a um componente de fonte de dados (ObjectDataSource):

Agora, executar o projeto e ver o relatório com imagens do banco de dados:

27
abr
11

Imagens no banco de dados 1 – ASP.NET Web Forms

Atendendo ao pedido do Luiz H. S. Pereira, vamos ver um pouco como trabalhar com aplicações e imagens/arquivos salvos em banco de dados.

Neste primeiro artigo, veremos como fazer isso com ASP.NET Web Forms.

O primeiro passo é a tabela onde serão armazenados os arquivos:

USE DemoApp
GO
CREATE TABLE Arquivos (
	ArquivoId	INT IDENTITY	PRIMARY KEY,
	Nome		VARCHAR(250)	NOT NULL,
	Bytes		VARBINARY(MAX)	NOT NULL,
	Extensao	CHAR(5)			NOT NULL,
	Tipo		VARCHAR(250)	NOT NULL
)

O segundo passo é criar uma página com o componente FileUpload (fupArquivo) e um Button (btnEnvio) para o envio:

Trataremos o evento do Button de envio, salvando os dados do arquivo no banco de dados:

using System;
using System.Data.SqlClient;
using System.IO;
using System.Web.UI;

namespace DemoApp.WebForms
{
    public partial class Default : Page
    {
        protected void btnEnviar_Click(object sender, EventArgs e)
        {
            string url;

            const string connString =
                @"Data Source=localhost\SQLEXPRESS;Initial Catalog=DemoApp;Integrated Security=True";

            using (var conn = new SqlConnection(connString))
            {
                conn.Open();

                using (var cmd = conn.CreateCommand())
                {
                    cmd.CommandText =
                        "INSERT INTO [Arquivos] VALUES (@Nome, @Bytes, @Extensao, @Tipo)"
                        + " SELECT SCOPE_IDENTITY()";

                    var file = new FileInfo(fupArquivo.FileName);
                    cmd.Parameters.AddWithValue("@Nome", file.Name);
                    cmd.Parameters.AddWithValue("@Bytes", fupArquivo.FileBytes);
                    cmd.Parameters.AddWithValue("@Extensao", file.Extension);
                    cmd.Parameters.AddWithValue("@Tipo", fupArquivo.PostedFile.ContentType);

                    var codigo = cmd.ExecuteScalar();

                    url = string.Format("ImageHandler.ashx?id={0}", codigo);
                }
            }

            Response.Redirect(url);
        }
    }
}

Para exibição do arquivo salvo no banco de dados, criaremos um Generic Handler:

Com Handler criado:

Configuraremos o Handler para recuperar o arquivo do banco de dados:

using System.Data.SqlClient;
using System.Web;

namespace DemoApp.WebForms
{
    /// <summary>
    /// Summary description for ImageHandler
    /// </summary>
    public class ImageHandler : IHttpHandler
    {
        public bool IsReusable { get { return false; } }

        public void ProcessRequest(HttpContext context)
        {
            var codigo = context.Request.QueryString["id"];

            if (codigo == null) return;

            const string connString =
                @"Data Source=localhost\SQLEXPRESS;Initial Catalog=DemoApp;Integrated Security=True";

            using (var conn = new SqlConnection(connString))
            {
                conn.Open();

                using (var cmd = conn.CreateCommand())
                {
                    cmd.CommandText =
                        "SELECT Tipo, Bytes FROM [Arquivos] WHERE ArquivoId = @ArquivoId";

                    cmd.Parameters.AddWithValue("@ArquivoId", codigo);

                    var dr = cmd.ExecuteReader();

                    if (dr.Read())
                    {
                        context.Response.ContentType = dr.GetString(0);

                        context.Response.BinaryWrite((byte[])dr[1]);
                    }
                }
            }
        }
    }
}

Por fim, importamos o arquivo:

Se tudo der certo, o arquivo será exibido:

28
ago
09

Terceiro dia no Microsoft Tech-Ed Brasil 2009

Neste terceiro dia do Tech-Ed Brasil 2009, eu fiquei impressionado com a palestra de Gestão de TI do Rodrigo Dias e Adalberto Araujo, na qual eles sugeriram a forma de descomplicar a governança de TI com uma ferramenta de grande potencial chamada Excel, somada a uma boa comunicação com a equipe e muita organização pessoal, enquanto pensamos na implantação de softwares complexos, que sem uma visão clara do que o gestor deseja mensurar e controlar, se tornam somente um custo sem justificativa prática nas organizações.

As minhas duas palestras seguintes foram com o Amit Goyal. Posso dizer que fiquei boquiaberto com as novidades do SQL Server 2008 R2, principalmente pela flexibilidade que há para trabalhar com acesso aos dados de um SSAS (SQL Server Analysis Service) com o Excel 2010, gerando gráficos e tabelas dinâmicas de planilhas com mais de 100.000.000 de linhas, manipuladas pelo Excel de forma tão rápida e prática que não parecia existir uma massa de dados tão monstruosa.

Depois desta incrível demonstração, Amit Goyal publicou o dashboard desenvolvido em Excel no SharePoint Server 2010, contando com todos os recursos de user interface rica desta nova ferramenta. Conseguindo mostrar que com este grupo de ferramentas, se bem utilizadas, podem de criar um bom relacionamento entre os usuários que trabalham com Excel para tomar decisão e os profissionais de Banco de Dados, que agora podem gerir melhor os acessos e recursos utilizados pelos relatórios/dashboards, sem a insatisfação e o stress característico.


Eu, Amit Goyal e Thiago Zavaschi

Ferramentas como o uso de mapas no SQL Server 2008 R2 também foram demonstradas, novas características das ferramentas do SQL Server que permitem trabalhar com centenas de Terabytes em banco de dados SQL Server e gerenciar várias instancias do SQL Server de forma totalmente integrada e com ótimos dashboards.

Depois voltando à área de desenvolvimento, tive palestras com o Luciano Conde sobre as tecnologias de acesso a dados (basicamente ADO.Net, LINQ to SQL, Entity Framework e ADO.NET Data Service), para me preparar para a palestra sensacional de ASP.Net 4.0 com o Rogério.


MIC de BH e MIC Curitiba na Rodoviária de São Paulo-SP

Ganhei muitos brindes, mas o que realmente faz valer a pena o Tech-Ed é conhecer o pessoal de vários lugares e da própria Microsoft, trocar experiências, se divertir e saber dar novidades que estão chegando ao mercado.




Sobre o blog

Blog que há três anos trata de SQL Server, .NET Framework, PowerShell, soluções para problemas comuns e não tão comuns assim, informações sobre ferramentas diversas e o que vier na cabeça do MCT Paulo R. Pereira.

Twitter


Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 346 outros seguidores

%d bloggers like this: