.Net Usando TryParse

Na versão 1.1 do .Net  não tinhamos uma maneira de checar se um valor era numerico do tipo Int , usando as classes de compatilibilidade do vb tinhamos a famosa função isnumeric , mas um isnumeric = true não significava isInt =true . A versão 2.0 do .Net trouxe o método Tryparse que recebe como parametro um valor e uma variavel  , se o valor for compativel ele retorna true e seta o valor da variavel , senão ele retorna false.
 
O código abaixo irá retornar  true para a variavel valor3 e 200 para variavel valor2:
 

Dim valor As String = "200"

Dim valor2 As Integer

Dim valor3 As Boolean

valor3 =

Integer.TryParse(valor, valor2)

Podemos utilizar esse método para validar data , assim como validar um endereço de IP. O código abaixo ira validar se  o valor é um ip válido.

 

Dim

ip1 As String = "200.200.1.2"

Dim valor4 As Boolean

Dim ip As System.Net.IPAddress

valor4 = System.Net.IPAddress.TryParse(ip1, ip)

 

Então agora na versão 2.0 não tem mais desculpa para utilizarmos a geração de exception para esses casos, o que deve ser sempre ser evitado…. pois como o nome mesmo diz exception  deve ser uma excessão …  … e não um fluxo nomal do seu código.

 

 
 
 

ASP.NET – Documentos do Office com OPENXML

Algum tempo já estou estudando sobre o assunto , tendo criando um sistema de geração de cartas que pretendo escrever um post especifico sobre isso…
 
Mas hoje só vou deixar alguns links que me ajudaram nessa caminhada …
 
O Openxml Developer foi a principal fonte de informações que encontrei e me ajudou muito me poupando um bom tempo e também com ótimos fontes.
 
Pessoal da Unicamp fez algumas coisas bem interessantes, pena que não evoluiu tanto depois de um começo promissor….
 
Esses descobri esse mês…
 
 

ASP.NET – Confirmação de Exclusão

É muito comum termos que exibir uma mensagem de confirmação quando o usuário tenta excluir um item , seja ele um pedido, produto, usuario, etc.
 
Em 99% das vezes temos que pedir a confirmação para evitar transtornos, como o usuário excluir algo que não deve porque clicou sem querer.
 
 
Como nos meus projetos coloco isso como padrão estava pensando em como fazer isso de algo automatico, para que eu ou outro desenvolvedor desatento ou num momento de saco cheio , não esqueça de coloca-lo.
 
Então nos meus pensamentos lembrei de um post  do Fernando Cerqueira sobre como corrigir um problema ao utilizar webparts com ajax http://thespoke.net/blogs/fcerqueira/default.aspx , esse grande conceito chama-se  tagMapping com esse cara você pode dizer pro .net , ao invés de utilizar
a classe System.Web.UI.WebControls.ImageButton para um image button usa a minha.
 
Então eu criei uma classe herdando de ImageButton e customizei o evento init para configurar o bendito confirm sempre que o ImageButton tiver a propriedade CommandName igual a DELETE
 
Assim todos os meus grids que possuem o controle ImageButton delete , possuem a confirmação automaticamente, a unica coisa que faço no gridview é converter a coluna com os botões de ações para template e mudo de linkbutton para imagebutton, essa parte eu ja fazia, pois tenho um skin com a imagem de cada botão. Veja abaixo como fica o webconfig.
<pages>
<tagMapping>
<
add tagType="System.Web.UI.WebControls.ImageButtonmappedTagType="AKAMAE_CONTROL.ImageButtonAkamae"  />
</
tagMapping>
</
pages>
 
 Esse recurso poderia ser utilizado para trocar todos os textbox para um componente de terceiro sem precisar entrar em cada página para fazer isso … Abaixo a gloriosa classe …
 

Public

Class ImageButtonAkamae

Inherits ImageButton

 

Private Sub ImageButtonAkamae_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init

If (Me.CommandName IsNot Nothing) AndAlso (Me.CommandName.ToUpper() = "DELETE") Then

Me.OnClientClick = "return (confirm(‘Confirma exclusão?’));"

End If

End Sub

End

Class

 

SQL Server – Truques com Tabelas Internas

O SQL Server 2005 trouxe um quantidade grande de tabelas que podemos utilizar no nosso dia a dia, como por exemplo as tabelas
sys.procedures e sys.tables.
 
 
Com essas duas tabelas podemos checar o que precisamos subir para o banco de produção usando a coluna modify_Date, com o comando abaixo eu listo as tabelas e procedures alteradas nos últimos 3 dias:
 

select * from sys.tables where modify_date > getdate() 3

select

* from sys.procedures where modify_date > getdate() 3

Poderia acrescentar a coluna create_date para pegar as tabelas e procedures criadas ou alteradas nos últimos 3 dias.

 
 

select

* from sys.tables where modify_date > getdate() 3 or create_Date > getdate() 3

select

* from sys.procedures where modify_date > getdate() 3 or create_Date > getdate() 3

Com essas consultas fica mais simples de preparar um pacote que contenham várias alterações na base de dados. 

SQL Server – Count utilizando tabelas internas

Em tabelas grandes o count costuma ser um pouco demorado, nesse caso podemos consultar a tabela sysindexes para pegar o numero de linhas de determinada tabela.
 
 
SELECT TOP 1  rows    FROM sysindexes         WHERE id = object_id(‘nometabela’) AND indid < 2
 
 
Outra boa  utilização para este select é quando estamos realizando carga de grande quantidade de dados e queremos saber o andamento do processo.
 
 
 
 

Compactando Arquivos JS

Com as várias opções de frameworks js , as vezes acabamos utilizando 2 frameworks no mesmo sistema , e fora isso podemos contar com nosso próprio JS com isso é grande a necessidade de conseguirmos compactar esses arquivos… esse site http://www.bananascript.com/ é fantastico arquivos js normais , ou seja, que possuem espaços,  quebras de linha , etc … foram compactados passando de 30kb para apenas 5 kb … o unico ponto negativo eh que os arquivos não ficam legiveis, não sendo possivel dar manutenção direto neles , nem efetuar debug.
 
Por isso será sempre necessário guardar os fontes "Normais" …

Permitir utilização do SQL Profiler aos Desenvolvedores

Para quem não conhece o SQL Profiler serve para capturar os comandos SQL que estão sendo executados,  todo DBA utiliza mas ele por permitir a rapida visualização do comandos sendo executados é muito util para desenvolvedores , desenvolver sem o sql profiler pra mim tem um impacto muito grande , principalmente quando estou debugando algum problema.
 
Até o SQL Server 2000 para utilizar o SQL Profiler os desenvolvedores precisavam de permissão de  SA , por isso mesmo muitos desenvolvedores nunca utilizaram essa excelente ferramenta. Pois os DBAs dificilmente dariam tal permissão mesmo no ambiente de desenvolvimento.
 
Agora no SQL Server 2005 é possivel dar a permissão especifica para executar o SQL Profiler basta executar o comando
GRANT ALTER TRACE TO ‘Usuário’