Dica: extrair dados com Regular Expression

Somente uma dica, pra quem acha que Regular Expression só serve para validar dados, exitem vários usos para elas, tais como extrair dados, validar e substituir dados.

Extrair dados

Extrair Dados
  1. string texto = @”Nome: Rodolfo Fadino”;
  2. Match m = Regex.Match(texto, @”Nome: (.*$)”);
  3. Console.WriteLine(m.Groups[1]);
  4. Console.ReadKey();

//Rodolfo Fadino

Reporting Services 2008 – 1ª parte

Olá, nesta série de posts irei abordar todo o ciclo de desenvolvimento de um relatório utilizando a ferramenta chamada Reporting Services 2008, a ordem de assuntos será:

  1. Relatório Tabulares básicos com Reporting Services
  2. Relatório Matrix com Reporting Services
  3. Relatórios com sub-relatórios e dados de consulta
  4. Deploy dos relatórios

Começando

Primeiro passo que devemos é termos instalado o Visual Studio 2008 e o SQL Server Business Intelligence Development Studio, a partir disso podemos ir para nosso primeiro passo:

1º Criando o Projeto

Primeiro passo é criar um projeto no Vs2008 do tipo Report Server Project

2º Adicionar um novo Data Source

Como vocês podem ver o template do projeto do tipo Reporting Services Project jpa cria automáticamente duas pastas, uma chamada Shared Data Source e outra chamada Reports.

O que iremos faer é adicionar um Data Source para nosso relatório

Após isso irá abrir um wizard para que seja adicionada as propriedades da conexão com o banco de dados, nesse exemplo irei utilizar SQL Server 2008 com autenticação do windows e um banco de dados chamado Northwind

3º Adicionando o Relatório

Clicando sobre o diretório de Reports nos aparece uma opção de adicionar um novo relatório

O primeiro passo para adicionar um relatório é escolher um Data Source para ele

Agora vamos fazer a seguinte consulta no conhecido Northwind

Select
p.ProductName as Produto,
p.UnitPrice as ‘Preço unitário’,
p.QuantityPerUnit as ‘Quantidade por unidade’,
c.CategoryName as ‘Categoria’,
c.CategoryID as ‘Codigo Categoria’,
s.CompanyName as ‘Fornecedor’,
s.ContactName as ‘Contato’

from
[dbo].Products as p
inner join [dbo].Categories as c on p.CategoryID = c.CategoryID
inner join [dbo].Suppliers as s on p.SupplierID = s.SupplierID

Adicionamos a consulta ao relatório, claro que para facilitar também podemos utilizar Procedures para gerar o relatório

Agora teremos que optar pela estrutura do relatório, neste exemplo optaremos por uma estrutura tabular

O próximo passo será dispormos os dados como queremos no relatório, eu optei por agrupar os Produtos pelas suas Categorias, como detalhes estou selecionando as propriedades dos produtos e de seu fornecedor

O layout da tabela também será opcional,”em passos” ou em “blocos”, com a opcão drilldown (detalhamento) habilitada

Agora podemos selecionar o estilo do relatório

Finalmente no ultimo passo aparece um resumo de todo seu relatório e a opção de você alterar o nome do relatório

Agora nos é apresentado o relatório em modo design onde muita coisa pode ser customizada e alterada

E também já é possivel ter um preview do relatatório

Bom espero que seja útil este post, qualquer dúvida ou sugestão estou a disposição.

Obrigado

Rodolfo

C# 4.0 Parâmetros Opcionais e Nomeados

Olá, acabei de instalar a ultima versão do Visual Studio Ultimate 2010 Beta2, começando a explorar as novidades do ASP.NET 4 e do C# 4.0 me deparei com uma nova funcionalidade do C# muito util. Os parâmetros opcionais e nomeados.

Antes do C#4.0

Quando queriamos escrever um método que possuisse algum parâmetro como opcional precisariamos sobrecarregar o mesmo e reescrever seu codigo:

Class Foto.cs
  1. public class Foto
  2. {
  3. public int id { get; set; }
  4. public string nome{ get; set; }
  5. public string descricao { get; set; }
  6. public string _extensao { get; set; }
  7. public string GetUrlFoto()
  8. {
  9. string path = ConfigurationManager.AppSettings["dirImagens"].ToString();
  10. string url = path + “/” + nome + TamanhoFoto.medio.ToString() + _extensao;
  11. return url;
  12. }
  13. public string GetUrlFoto( TamanhoFoto tamanho )
  14. {
  15. string path = ConfigurationManager.AppSettings["dirImagens"].ToString();
  16. string url = path + “/” + nome + tamanho.ToString() + _extensao;
  17. return url;
  18. }
  19. }
Chamada
  1. Foto foto = new Foto();
  2. string url = foto.GetUrlFoto();
  3. string url2 =foto.GetUrlFoto(TamanhoFoto.grande);

Antes do C# 4.0 quando queriamos criar um método que pode ser chamados com várias chamadas diferentes era preciso sobrecarregar o método.

Entretanto isso pode ocasionar muita repetição de codigo e difícil manutenção.

Com o C#4.0

Agora com o C# 4.0 podemos criar um unico método sem sobrecargas com um parametro nomeado com valor padrão

Foto.cs
  1. public class Foto
  2. {
  3. public int id { get; set; }
  4. public string nome { get; set; }
  5. public string descricao { get; set; }
  6. public string _extensao { get; set; }
  7. public string GetUrlFoto(TamanhoFoto tamanho = TamanhoFoto.medio)
  8. {
  9. string path = ConfigurationManager.AppSettings["dirImagens"].ToString();
  10. string url = path + “/” + nome + tamanho.ToString() + _extensao;
  11. return url;
  12. }
  13. }
Chamada
  1. Foto foto = new Foto();
  2. string url = foto.GetUrlFoto();
  3. string url2 = foto.GetUrlFoto(tamanho: TamanhoFoto.grande);

Bem é isso, ficamos todos no aguardo do lançamento do Visual Studio 2010, e em breve mais posts sobre as principais novidades do C# 4.0 e do ASP.NET 4

Obrigado

Rodolfo

ColorPicker jQuery plugin, em 5 passos

Olá, nesse post tentarei demonstrar uma das opções de ferramenta para a seleção de cores dentro de uma pagina web.

Com o aumento das páginas com itens dinâmicos, que podem ser customizados pelos usuários, como fontes, bordas, textos, e, principalmente cores, Surge a necessidade de uma maneira do usuário selecionar a cor para uma determinada propriedade sem inserir ela diretamente em hexadecimal ou  em rgb

O plugin que vamos utilizar do jQuery se chama ColorPicker, pode ser baixado em http://www.eyecon.ro/colorpicker/#download

Passo 1

Adicione os arquivos baixados ao projeto, os principais são:

  • images
  • colorpicker.js
  • colorpiker.css

Lembrando que o jQuery é necessário

Passo 2

Chame os arquivos javascript e a folha de estilo no Header da página

Passo 2
  1. <asp:Content ID=”HeaderContent” runat=”server” ContentPlaceHolderID=”HeadContent”>
  2. <script src=”Scripts/jquery-1.3.2.js” type=”text/javascript”></script>
  3. <script src=”Scripts/colorpicker.js” type=”text/javascript”></script>
  4. <link href=”Styles/colorpicker.css” rel=”stylesheet” type=”text/css”></link>
  5. </asp:Content>
Code Snippet
  1. <asp:Content ID=”HeaderContent” runat=”server” ContentPlaceHolderID=”HeadContent”>
  2. <script src=”Scripts/jquery-1.3.2.js” type=”text/javascript”></script>
  3. <script src=”Scripts/colorpicker.js” type=”text/javascript”></script>
  4. <link href=”Styles/colorpicker.css” rel=”stylesheet” type=”text/css”></link>
  5. </asp:Content>

Passo 3

Insira um TextBox que utilizará como objeto para retornar a cor selecionada pelo Color Picker

Passo 3
  1. Selecione a cor:
  2. <asp:TextBox ID=”txtCor” runat=”server”></asp:TextBox>

Passo 4

Agora precisaremos inicializar o Color Picker selecionado o TextBox via jQuery e passando alguns atributos

Passo4
  1. <script type=”text/javascript”>
  2. $(‘#MainContent_txtCor’).ColorPicker({
  3. onSubmit: function(hsb, hex, rgb, el) {
  4. $(el).val(hex);
  5. $(el).ColorPickerHide();
  6. },
  7. onBeforeShow: function() {
  8. $(this).ColorPickerSetColor(this.value);
  9. }
  10. });
  11. </script>

Nesse código nós estamos definindo dois eventos:

  • onBeforeShow, antes de exibir o componente ele pega a cor que está escrita no TextBox e seta no controle
  • onSubmit, atribui a cor selecionada ao TextBox

E precisamos considerar qual será o ClientID do controle ASP.NET (MainContent_txtCor)

Passo5

Agora podemos trabalhar como quisermos em ambos os lados, Client e Server. Como exemplo vou manipular o valor no Server.

.aspx
  1. <p>
  2. A cor selecionada foi:
  3. <asp:Label ID=”lblCor” runat=”server”>        </asp:Label>
  4. </p>
  5. <asp:Button ID=”btnSalvar” runat=”server” Text=”Salvar” OnClick=”btnSalvar_Click” />
.aspx.cs
  1. protected void btnSalvar_Click(object sender, EventArgs e)
  2. {
  3. lblCor.Text = txtCor.Text;
  4. lblCor.ForeColor = ColorTranslator.FromHtml(“#” + txtCor.Text);
  5. }

Como exemplo desses passos teremos:

Obrigado,

Rodolfo

Linq to JSON C#

Como trabalhar de forma simples com objetos JSON no server side?

Procurando uma resposta para esta pergunta encontrei um projeto que tem como fruto uma biblioteca em .NET que manipula de forma simples dados em formato de JSON,

o projeto se chama Json.NET e pode ser baixado em http://www.codeplex.com/Json.

Suas principais caracteristicas são um serializador JSON flexível para converter rapidamente. NET para JSON e de volta, e LINQ to JSON para leitura e escrita JSON.

Para isso primeiramente devemos adicionar referência a dll do projeto, então podemos partir para alguns exemplos:

Serializando

Serializando um objeto
  1. Pessoa pessoa = new Pessoa { Nome = “Rodolfo”,Sobrenome= “Fadino” ,Idade = 20 };
  2. string jsonpessoa = JsonConvert.SerializeObject(pessoa, Formatting.Indented);

O resultado exibido será uma string:

{ “Nome”: “Rodolfo”, “Sobrenome”: “Fadino”, “Idade”: 20 }

Serializando um List
  1. List<Pessoa> pessoas = new List<Pessoa>();
  2. Pessoa rodolfo = new Pessoa { Nome = “Rodolfo”,Idade = 20 };
  3. Pessoa alexandre = new Pessoa { Nome = “Alexandre”, Idade = 21 };
  4. Pessoa eduardo = new Pessoa { Nome = “Eduardo”,  Idade = 22 };
  5. Pessoa taura = new Pessoa { Nome = “Taurã”,  Idade = 23 };
  6. pessoas.Add(rodolfo);
  7. pessoas.Add(alexandre);
  8. pessoas.Add(eduardo);
  9. pessoas.Add(taura);
  10. string jsonpessoas = JsonConvert.SerializeObject(pessoas, Formatting.Indented);
Code Snippet
  1. Pessoa pessoa = new Pessoa { Nome = “Rodolfo”,Sobrenome= “Fadino” ,Idade = 20 };
  2. string jsonpessoa = JsonConvert.SerializeObject(pessoa, Formatting.Indented);
  3. lblJson.Text = jsonpessoa;

O resuldao exibido será uma string:

[ { "Nome": "Rodolfo", "Idade": 20 }, { "Nome": "Alexandre", "Idade": 21 }, { "Nome": "Eduardo", "Idade": 22 }, { "Nome": "Taurã", "Idade": 23 } ]

Agora podemos passar para o processo inverso, através de uma string no formato de um JSON iremos utilizar Linq to JSON

Linq to JSON

Linq to JSON
  1. string json = @”{
  2. “”Nome”": “”Rodolfo”",
  3. “”Idade”": 20,
  4. “”Certificacoes”": [
  5. ""MCP"",
  6. ""MCTS"",
  7. ""MCPD""
  8. ]
  9. }”;
  10. JObject objRodolfo = JObject.Parse(json);
  11. string Nome = (string)objRodolfo["Nome"];
  12. //Rodolfo
  13. JArray certificacoes = (JArray)objRodolfo["Certificacoes"];
  14. //[ "MCP", "MCTS", "MCPD" ]
  15. string certificacao1 = (string)certificacoes[1];
  16. //MCTS

Outra coisa que podemos fazer são consultas Linq

Code Snippet
  1. JObject objPessoas = JObject.Parse(@”{
  2. “”Pessoas”" :[
  3. {""Nome"":""Nome1"",
  4. ""Idade"":20,
  5. ""Profissao"":""Desenvolvedor""},
  6. {""Nome"":""Nome2"",
  7. ""Idade"":20,
  8. ""Profissao"":""Desenvolvedor""},
  9. {""Nome"":""Nome3"",
  10. ""Idade"":20,
  11. ""Profissao"":""Desenvolvedor""},
  12. {""Nome"":""Nome4"",
  13. ""Idade"":20,
  14. ""Profissao"":""Desenvolvedor""}
  15. ]}”);
  16. IList<string> pessoas = objPessoas["Pessoas"].Select(p => (string)p["Nome"]).ToList();
  17. lblJson.Text = pessoas.First();
  18. //Nome1

Obrigado

qualquer duvida estou a disposição.

Rodolfo

Twitter