Os Microsoft Reports são ficheiros XML, com uma extensão diferente (*.rdlc), que guardam o esquema do relatório, imagens embebidas, código personalizado, etc. No entanto, e por serem ficheiros fáceis de editar (usando um simples editor XML ou mesmo através do Notepad), podem ser modificados, alterando com isso, e sem ser necessário compilar a aplicação, o resultado pretendido.
Isto trás algumas vantagens e, obviamente, algumas desvantagens.
Se por um lado conseguimos ver o conteúdo do ficheiro e analisar um eventual problema, não colocamos toda a aplicação num só ficheiro e não aumentamos o tamanho do executável, por outro lado, não garantimos a protecção do relatório. Estes são alguns pontos que devem ser considerados na escolha da opção a usar.
Para se utilizar um relatório embebido no executável, é necessário apenas seleccionar o relatório, na janela Soluction Explorer, e definir na propriedade Build Action como Embedded Resource.
Depois, utilizar uma função semelhante à seguinte, para extrair o relatório embebido para uma Stream.
''' <summary>
''' Extrai dos Resources da aplicação, o relatório para uma Stream
'''</summary>
''' <param name="reportName">Nome do relatório</param>
Private Function GetReport(ByVal reportName As String) As IO.Stream
' Recolhe a informação da Assembly
Dim currentAssembly As Reflection.Assembly = _
Reflection.Assembly.GetExecutingAssembly()
' Irá guarda o caminho + nome do ficheiro
Dim resource As String = String.Empty
' Verifica nos Resources se encontra o relatório pretendido
Dim arrResources As String() = _
currentAssembly.GetManifestResourceNames()
For Each resource In arrResources
If resource.Contains(reportName) Then Exit For
Next
' Coloca o relatório embebido na Stream
Dim resourceStream As IO.Stream = _
currentAssembly.GetManifestResourceStream(resource)
Return resourceStream
End Function
Finalmente, definir como nome do relatório, a Stream retornada pela função, através do método LoadReportDefinition().
Dim rptStream As IO.Stream = GetReport("rptProducts.rdlc")
Me.ReportViewer1.LocalReport.LoadReportDefinition(rptStream)
E já está … um método simples, prático, e que poderá proteger os relatório, caso seja pretendido.
PS: Como sempre, qualquer dúvida, comentário ou correcção ao artigo é sempre bem vinda!
Existem algumas formas de calcular expressões matemáticas, mas na maioria delas, é necessário efectuar uma série de validações, como propriedades distributivas, funções trigonométricas, etc., e a utilização de um grande número de linhas de código.
Uma forma simples de calcular uma expressão matemática, através de uma string, é usando o Microsoft Script Control, um controlo ActiveX normalmente disponível no sistema operativo, e já com alguns anos, mas que ainda pode ajudar bastante na simplificação do código.
Para utilizar este controlo, é apenas necessário adicionar uma referência ao Microsoft Script Control 1.0, no separador COM.
Depois no código é apenas necessário:
Dim ScriptEngine As New MSScriptControl.ScriptControl
ScriptEngine.Language = "VBScript"
Dim expression As String = "(10 + 154) * 300 / (40 - 4)^2"
Dim result As String = ScriptEngine.Eval(expression)
Debug.Writeline(result)
Isto irá mostrar o resultado da expressão, que neste caso é 37,962962962963
Mas podem-se usar expressões mais complexas, com funções trigonométricas incluídas. Como exemplo (expressão sem sentido):
Dim expression As String = "sin(30)*cos(9)/tan(4)*2"
Este controlo permite também efectuar outras operações, como por exemplo:
Dim msg As String = "Msgbox(""Isto é um teste ..."")"
ScriptEngine.ExecuteStatement(msg)
Mas para mais informação sobre elas, deixo aqui este link, entre muitos outros disponíveis: How To Call Functions Using the Script Control
PS: Como sempre, qualquer dúvida, comentário ou correcção ao artigo é sempre bem vinda!
Revista PROGRAMAR – Nº 20 Já está disponível o 20º número da revista PROGRAMAR, um projecto da comunidade Portugal-a-Programar, onde podem encontrar um artigo que explora o tema da metaprogramação e templates em C++, as continuações dos artigos acerca da linguagem AWK e do Google Web Toolkit, um novo artigo sobre o Arduino e uma breve apresentação do projecto DEI@Academy. Concurso de Projectos de Programação |  |
Está também a terminar o prazo de entrega dos trabalhos, até dia 17-06-2009, para o 3º Concurso de Projectos de Programação, na categoria de software livre.
Este concurso tem tido uma boa participação e tem servido para todos divulgarem e colocarem à prova os seus trabalhos.
Boa sorte para todos os participantes!
O msdev.com é um centro de formação gratuito da Microsoft com diversos cursos/apresentações, Virtual Labs e Web Seminars, de vários produtos Microsoft, para programadores e ISVs (independent software vendor)
Existem diversos recursos sobre Visual Studio, SQL, Office System/VSTO, Windows Mobile, Cloud Computing, BI, WPF, Silverlight, e muito mais.
Alguns dos meus destaques, e embora ainda não tenha visto tudo, vão para:
Preview of Visual Studio 2010 and .NET 4.0 in the Technology Community
SQL Server 2008 Developer Fundamentals
Microsoft Visual Studio 2008 for Office Web Seminar Series
Mas existem ainda muito mais recursos interessantes a não perder!