Abdul Hade's profile.NETIANOS();PhotosBlogListsMore ![]() | Help |
.NETIANOS();O Mundo é dos .NET! |
|||||||||||||||||||||||||||||||||||||
|
June 13 Criando colunas dinâmicas no SQL Server 2005SQL Server 2005 Uma coisa talvez muito difícil de fazer se for apenas imaginar, e o que nos faz pensar nisso é a falta de vontade de pensar, a lógica é simplesmente básica. Você cria uma tabela temporária, e como é obrigatório criar colunas, crie uma coluna qualquer, por exemplo, uma coluna chamada “ID”, obtenha a lista de colunas que você quer criar dinamicamente. No meu caso, eu tinha uma tabela de valores, que são inseridas com data, e precisava obter os quatro últimos anos dentro dela. Continuando, crio uma estrutura de repetição para percorrer a lista de colunas, e executo a comando “ALTER TABLE” para criar as colunas dinamicamente. Quando me responderam isso no fórum, não desse jeito, mas já com o exemplo pronto, e vocês logo verão a seguir, fiquei indignado, e pensei por que eu não pensei nisso? É como sempre dizem: “Nunca enxergamos o que esta na nossa frente!”. Mas galera relaxa isso não faz da gente pessoas horríveis, apenas pouco preguiçosas. Mas vamos ao que interessa, segue o exemplo de criação colunas em tabelas: /* CRIA A ESTRUTURA PARA OBTER A VARIAÇÃO DOS VALORES * DOS ÚLTIMOS 4 ANOS. O QUE DEFINE UMA TABELA TEMPORÁRIA É O CARÁCTER # . */ CREATE TABLE #LastYears (id INT IDENTITY(1,1), ANO INT) --INSERE OS QUATRO ÚLTIMOS DENTRO DA TABELA TEMPORÁRIA INSERT INTO #LastYears SELECT DISTINCT TOP 4 YEAR(DATEADD(YEAR, -1, DATA)) AS DATA FROM dbo.tbValores ORDER BY DATA DESC --VARIAVEIS PARA FAZER O LOOP DECLARE @AnoInicial INT DECLARE @AnoFinal INT DECLARE @strCmd VARCHAR(300) /* OBTENHO O PRIMEIRO É O ÚLTIMO ANO */ SELECT @AnoInicial = MIN(ANO), @AnoFinal = MAX(ANO) FROM #LastYears /* EXECUTO O LOOP */ WHILE @AnoInicial <= @AnoFinal BEGIN --ADICIONA AS COLUNAS DINÂMICAMENTE SET @strCmd = 'Alter Table #LastYears Add [' + CONVERT(VARCHAR,@AnoInicial, 1) + '] INT ' EXEC(@strCmd) SET @AnoInicial = @AnoInicial + 1 END Não podemos nos esquecer de quando acabar de usar a tabela temporária, Validando um Arquivos‘Hoje, graças ao avanço da tecnologia, temos muitas facilidades para guardar nossos arquivos na Internet, como por exemplo, SkyDrive da Microsoft, que é um HD virtual de 25 Gigabytes , você pode guardar seus arquivos. A única dificuldade disso tudo é você ter que validar isso, os controles do Visual Studio 2005 e 2008, não contém parâmetros para você poder configurar limite de tamanho, tipos de arquivos e outras coisas que você tem fazer no código. E para ajudar vocês nisso, eu irei colocar alguns métodos que fazem várias validações. Irei começar falando sobre MimeType do arquivo, ou seja, o tipo dele. Primeiro, irei criar parâmetros que me ajudaram a validar isso. Criarei eles no Web.Config, na parte de AppSettings, por que lá conseguimos alterar seu valor, mesmo quando a aplicação já esta em produção, ou seja, caso queira mudar alguma especificação do arquivo, basta mudar. Segue os parâmetros:
Depois iremos criar os seguintes métodos: /// <summary> /// Valida o tipo do arquivo /// </summary> /// <param name="tipoM">recebe o tipo de arquivo</param> /// <returns>retorna se o tipo é valido de acordo a appSettings no web.config</returns> protected bool validaTipoArquivo(string tipo) { bool eValido = true; string[] arrayMimeType = ConfigurationManager.AppSettings["colecaoMimeType"].Split(';'); foreach (string mimeType in arrayMimeType) { if (tipoMime == mimeType) { eValido = false; break; } } return eValido; } /// <summary> /// Valida o tamanho da imagem /// </summary> /// <param name="tamanhoArquivo">recebe o tamanho da imagem</param> /// <returns>retorna se o tamanho é valido de acordo a appSettings no web.config</returns> protected bool validaTamanhoArquivo(int tamanhoArquivo) { bool eValido = false; int sizeLimit = int.Parse(ConfigurationManager.AppSettings["sizeFile"]); if (fileSize < sizeLimit) eValido = true; return eValido; } /// <summary> /// Substitui o caracteres especiais, por caracteres normais ou válidos. /// </summary> /// <param name="word">recebe o nome da imagem</param> /// <returns>retorna a imagem com os caracteres especiais substituidos</returns> public static string validaNomeArquivo(string nomeArquivo) { string forbidden = ConfigurationManager.AppSettings["NoChars"]; string allowed = ConfigurationManager.AppSettings["YesChars"]; //Substitui caracteres inválidos pelos válidos. for (int i = 0; i < forbidden.Length; i++) { word = word.Replace(forbidden[i].ToString(), allowed[i].ToString()).Trim(); } return word; } May 02 .NET Framework – Parte II: Entendendo um pouco maisJá vimos para o que é utilizada a ferramenta, como ela funciona e agora iremos ver o que é cada componente no artigo .NET Framework – Parte I.
Common Language Specification
Como tudo deve ter um padrão e regras a serem cumpridas, as linguagens suportadas pela ferramenta também tem, e por isso que, quando temos duas aplicações feitas em linguagens diferentes, não temos problemas em conseguir usar os recursos desenvolvidos em uma na outra. E esses padrões e regras são baseados no CTS (Common Type System). No CTS podemos encontrar regras de nomenclatura, definições para letras maiúsculas e minúsculas, palavra-chave, tipos, métodos, propriedades, eventos, interfaces, matrizes, Enumerações, genéricos e etc. Tipos de Soluções Windows Forms – São aplicações desenvolvidas para ambientes locais, ou seja, totalmente instaladas no computador do usuário, como por exemplo, aplicações Cliente/Servidor. Nesse tipo não há necessidade de requisições ao servidor, a não ser quando existe um servidor de base de dados, pelo qual o sistema acessa as informações para ser mostrada nos formulários, fora isso, toda execução é feita dentro do computador onde está instalado. Sua interface é baseada em controles prontos e pré-configurados. Esses controles, além de serem usados para visualização de informações trazidas de uma base de dados, podem servir como entrada de texto ou na necessidade de relacionamento entre qualquer outro controle, como por exemplo, os objetos DataGridView, utilizado para mostrar, consultar ou inserir/editar/excluir as informações, e ComboBox. Também temos as caixas de texto, caixa de multi seleção, caixa de opções, entre muitos outros objetos. Alguns desses controles servem apenas para melhorar a interface do aplicativo. Hoje, o Windows Forms nos trás muitas facilidades na hora de criar sua versão de instalação. Com apenas alguns cliques você consegue cria - lá, e ainda podemos publicar em algum lugar onde os usuários de uma rede possam acessar as futuras versões, por que a atualização é feita automaticamente antes ou depois da aplicação ser aberta. Web Forms – com certeza a evolução na interface de páginas de Web. Muito parecido com o Windows Forms, ele foi criado para o ASP .NET, e é formado por HTML estático e/ou controles ASP .NET. Da mesma forma que o Windows Forms, ele também separa o design (HTML da página) do código-fonte, e usa o arrastar e soltar, para criar os controles dentro das páginas, onde eles também já estão pré-configurados. Hoje, esse tipo de aplicação nos das inúmeras possibilidades, onde podemos desde poder arrastar controles na página em tempo de execução, mudar as cores da página de acordo com o gosto do usuário, até fazer requisições ao servidor da aplicação sem ter que recarregar a página inteira, tornando esse tipo de aplicação sem limites de recursos, mais rica, intuitiva e muito mais fácil de usar. Também nos trás muitas facilidades quando queremos trazer informações de alguma base de dados. E controles como, por exemplo, RadioButtonList, DataGrid, DataList, ListBox, podemos facilmente configurá-los, e às vezes somos obrigados a colocar algumas linhas de código, mas não se preocupe, por que o número será muito pouco. Web Services – se hoje nós podemos criar serviços onde qualquer aplicação codificada no .NET Framework pode acessar sem nenhuma restrição, é por causa dele – o Web Services. Sua idéia principal é justamente essa - serviços Web – nos possibilitando, as aplicações se comunicarem sem qualquer limite. E para tornar isso possível, a tecnologia trabalha com SOAP (Simple Object Access Protocol), autorizada pelo W3C, é ela que torna possível a comunicação entre esses serviços, utilizando o XML como meio de transporte das informações e o HTML para transferir os dados.
Tipos de acesso a dados E por sua causa que temos muitas facilidades e pouco tempo de desenvolvimento na hora de criarmos os objetos de acesso a dados. É ele quem torna possível a utilização de inúmeros tipos de base de dados como, por exemplo, banco de dados SQL Server, ORACLE entre outros, arquivos XML, texto ou planilhas do EXCEL, ou coleção de objetos. Mas as reais funcionalidades não são apenas acessar esses milhares tipos de base de dados, e sim é que podemos fazer as consultas, inserção, paginação, exclusão e alteração dos dados contidos nelas, com uma facilidade imensa, tornando mais ainda rápida a forma de programá-las, deixando sua mente focada nas regras de negócio mais importantes. Definindo melhor, podemos dizer que existem os controles de acesso a dados que fazem alguma ação para trazer essas informações. SQLDataSource, ObjectDataSource e XMLDataSource são os principais objetos de conexão a esses dados, um para apenas SQL, outro apenas para uma lista de objetos qualquer e a outra para utilizar com arquivos XML, respectivamente, como sua origem de dados. Já os controles DataList, DetailsView, DataGrid entre outros, são os responsáveis por fazer essa requisição e mostrar essas informações, independentemente do tipo da base de dados, e os quais utilizam os objetos de acesso para isso. Biblioteca de Classes Objetos na tela, meios de acesso a base de dados, validações em geral e/ou qualquer função ou tipo de objeto que você queira, faz parte dessa biblioteca. Na verdade, isso é a base do .NET Framework, ou seja, é por causa delas que podemos, tão rapidamente, desenvolver uma tela trazendo dados do banco, editar suas informações, fazer cálculos entre inúmeras outras coisas. Mais abaixo, iremos falar sobre as classes mais conhecidas e usadas do .NET Framework.
Enfim, são inúmeras as namespaces que formam .NET Framework. Hoje, ele nos da tantas funcionalidades, que talvez seja impossível nós desenvolvedores imaginar algo que ele não possa fazer. Common Language Runtime Sua função é de criar uma máquina virtual toda vez que uma aplicação é executada em desenvolvimento. Quando executamos uma aplicação, todo código escrito passa pelo compilador, que é transformado em a Assembly, ou seja, ele traduz em Common Intermediate Language (CIL), e o CRL transforma em código que o sistema operacional possa entender. Explicando de forma fácil, ele é quem traduz o código, seja ele escrito em qualquer linguagem de programação suportada pelo .NET Framework, para a linguagem de máquina. E também é responsável pela possibilidade das linguagens interagirem entre si, e isso acontece por que existe um padrão chamado CLS, o qual nós já vimos. Conclusão Espero que todos tenham entendido como funciona cada parte do .NET Framework, continuaremos com a história dele no próximo artigo. February 19 Dica - Tratando Data/Hora - SQL Server 2005Essa será bem rápida e para alguns bem besta!
Mas como eu, alguém vai ter dificuldade de fazer!
Você tentou de alguma forma remover a hora da variável DATETIME e colocar outra? Eu sim!
Vamos supor que você queira pesquisar algo que aconteceu durante o dia! Temos que zerar a hora da data inicial e colocar a última hora/minuto/segundo na data final.
SELECT CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE(),112) + ' 00:00:00')
SELECT CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE(),112) + ' 23:59:59')Explicando um pouco melhor os comandos acima. Primeiramente, eu removo a hora quando eu converto minha data para VARCHARe uso o código 112 (Saiba Mais). Depois, eu concateno com a hora desejada e converto para DATETIME. Até a próxima pessoal!! |
|
|||||||||||||||||||||||||||||||||||
|
|