terça-feira, 27 de março de 2012

Como configurar logon e utilizar o Crystal Reports com ASP.net e C#

Como configurar logon e utilizar o Crystal Reports com ASP.net e C#

Geralmente os desenvolvedores fazem os relatórios direcionados para um banco de dados, mas ao publicar no servidor ou quando o IP do servidor é modificado percebe-se que o relatório necessita de logon para poder ser aberto, o que é bastante desagradável para o usuário, criando uma vulnerabilidade para a aplicação. Para resolver este problema podemos configurar o relatório e a conexão em tempo de execução, para isto basta utilizar os métodos de configuração do crystal reports. 
Ao me deparar com estes problemas relacionados e realizar consultas na web e no msdn, utilizei o código abaixo faz a conexão de logon do relatório.

Obs.: O relatório pode ser desenvolvido apontado para qualquer servidor, mas na hora de execução as configurações serão feitas antes da abertura do mesmo.
Como utilizar :
1)
Crie um relatório no crystal reports (Add - New Item - Crystal report).
Informe o nome que no exemplo é "relatorio.rpt" e salve.
Configure os campos que serão exibidos no relatório e salve.
2)
Crie uma página aspx (Add - New Item - web form).
Informe o nome que no exemplo é "RelRelatorio.aspx" e salve.
Insira o componente CrystalReportViewer no design da página.
informe a propriedade ID, que no exemplo é "csRelatorio".
-- código do reportviewer com a exibição de conexão falsa.
Obs.: não esqueça de por no início "<" e no final o ">"
//CR:CrystalReportViewer ID="csRelatorio" runat="server" AutoDataBind="true" //EnableDatabaseLogonPrompt="False" EnableParameterPrompt="False"


3)
No código fonte C# da página RelRelatorio.aspx utilize os dois métodos informados no exemplo abaixo(ConfiguraCrystalReports e SetDBLogonForReport), depois no método page load chame o método ConfiguraCrystalReports.
Pronto o relatório já esta configurado.
//  ====  Codigo fonte da pagina "Aspx" que chama o relatorio "RPT"  ====
// configuração do Crystal reports 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;




namespace AplicativoWeb.Relatorios
{
public partial class RelRelatorio : System.Web.UI.Page
{
// Load da pagina 
protected void Page_Load(object sender, EventArgs e)
{
   ConfiguraCrystalReports();
}
// configuração do Crystal reports 
private void ConfiguraCrystalReports()
{
 ReportDocument rpt = new ReportDocument();
 string reportPath = Server.MapPath("relatorio.rpt");
 rpt.Load(reportPath);
 ConnectionInfo myConnectionInfo = new ConnectionInfo(); 
 myConnectionInfo.ServerName = "servidor"; // Utilize o nome do servidor ou IP
 myConnectionInfo.DatabaseName = "Nome_Banco_de_Dados";
 myConnectionInfo.UserID = "usuario";
 myConnectionInfo.Password = "senha";
 SetDBLogonForReport(myConnectionInfo, rpt);
 csRelatorio.ReportSource = rpt;
}
// Conexao de logon do relatorio 
private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument ArquivoReport)
{
Tables tables = ArquivoReport.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
  TableLogOnInfo tableLogonInfo = table.LogOnInfo;
  tableLogonInfo.ConnectionInfo = connectionInfo;
  table.ApplyLogOnInfo(tableLogonInfo);
}
}
}
}
Espero ter auxiliado aos demais usuários Asp.NET e C# na utilização de relatórios com o Crystal Reports.

sexta-feira, 16 de março de 2012

Como zerar o campo autoincremento do Sql Server (Indentity Increment)?

Como zerar o campo autoincremento do Sql Server (Indentity Increment)?

Os campos de identificação automática (Indentity Increment) do SqlServer possuem um contador mantido nas tabelas do sistema, para alterar as mesmas deve-se utilizar o comando DBCC para auterar a mesma.
Um dos comando utilizado para realizar a limpeza da tabela e reiniciar o índice de auto incremento é o camando Truncate.

Truncate Table NomeDaTabela
Para zerar completamente o contador, iniciando do zero novamente:

DBCC CHECKIDENT ('NomeDaTabela', RESEED, 0)
Para colocar o ultimo numero utilizado:

DBCC CHECKIDENT ('NomeDaTabela', RESEED, (select max(nome_campo) from NomeDaTabela))

Outros comandos para INDENTITY

IDENT_CURRENT('table_name')

SELECT IDENT_CURRENT('table_name')

IDENT_INCR ( 'table_or_view' )

SELECT TABLE_NAME, IDENT_INCR(TABLE_NAME) AS IDENT_INCR
FROM INFORMATION_SCHEMA.TABLES
WHERE IDENT_INCR(TABLE_NAME) IS NOT NULL

IDENT_SEED ( 'table_or_view' )

SELECT TABLE_NAME, IDENT_SEED(TABLE_NAME) AS IDENT_SEED
FROM INFORMATION_SCHEMA.TABLES
WHERE IDENT_SEED(TABLE_NAME) IS NOT NULL


Fonte : MSDN e EvandroNet

Abraço a todos.

terça-feira, 13 de março de 2012

Como alterar o css atraves do código c#

Como alterar o css atraves do código c#.
Primeiramente em uma pagina aspx,temos o seguinte código css:

.mainCss
{
background-color:red;
}

.otherCss
{
background-color:Yellow;
}

No container da página definimos a seguinte estrutura:
Temos uma div com o ID=”divPrincipal” pertencente a classe mainCss, dentro da div há um botao e um evento,esse evento será acionado ao clique do botao.
Dentro desse evento há a alteração da classe:
protected void btnOk_Click(object sender, EventArgs e)
{
  divPrincipal.Attributes["class"] = "otherCss";
}
Fonte : C# Brasil