Crystal report
Amigos,
Esotu usando crystal report de forma visual. Até ai tudo bem.
Porem, gostaria de monta-lo a partir de programacao para ter maior controle. Por exemplo: Quero montar o report, depois montar o dataset e depois ligar uma coisa a outra. Ai, precisarei ficar passando variaveis e atualizando o relatorio. Vcs podem me dar uma luz sobre Crystal report? Abraços...
Cleber Filho
Curtidas 0
Respostas
[devmedia .net]
09/02/2009
Opa, blz Cléber ?
Seguinte, para montar o relatório não tem com fugir da parte visual,
pois é onde você vai definir os campos e o layout.
Para ligar um CR a um dataset é da mesma maneira que se liga um datatable,
colocando no DataSoure do objeto a referência do dataset,
o relatório irá se encarregar de pegar os campos da tabela que estão no dataset e popular.
Exemplo (O relatório obviamente deve estar criado):
public class WebForm1 : System.Web.UI.Page
{
protected CrystalDecisions.Web.CrystalReportViewer CrystalReportViewer1;
public Customer oRpt = null;
private void Page_Load(object sender, System.EventArgs e)
{
oRpt = new Customer(); //NOME DO RELATÓRIO
}
protected void GerarReport() { SqlConnection sqlConn = new SqlConnection("Server=localhost;uid=sa;password=;initial catalog=Northwind;"); SqlCommand comd; comd = new SqlCommand(); comd.Connection = sqlConn; comd.CommandType = CommandType.StoredProcedure; comd.CommandText = "up_GetAllCustomer"; comd.Parameters.Add("@Companyname",SqlDbType.VarChar,50); if(TextBox1.Text.Trim()!="") comd.Parameters[0].Value=TextBox1.Text; else comd.Parameters[0].Value=DBNull.Value; SqlDataAdapter sqlAdapter = new SqlDataAdapter(); sqlAdapter.SelectCommand = comd; Dataset1 ds = new Dataset1(); sqlAdapter.Fill(ds, "Customers"); oRpt.SetDataSource (ds); CrystalReportViewer1.Visible=true; CrystalReportViewer1.ReportSource = oRpt; } }
Aguardo seu retorno para saber se deu tudo certo, Abraços Carlos Jr
protected void GerarReport() { SqlConnection sqlConn = new SqlConnection("Server=localhost;uid=sa;password=;initial catalog=Northwind;"); SqlCommand comd; comd = new SqlCommand(); comd.Connection = sqlConn; comd.CommandType = CommandType.StoredProcedure; comd.CommandText = "up_GetAllCustomer"; comd.Parameters.Add("@Companyname",SqlDbType.VarChar,50); if(TextBox1.Text.Trim()!="") comd.Parameters[0].Value=TextBox1.Text; else comd.Parameters[0].Value=DBNull.Value; SqlDataAdapter sqlAdapter = new SqlDataAdapter(); sqlAdapter.SelectCommand = comd; Dataset1 ds = new Dataset1(); sqlAdapter.Fill(ds, "Customers"); oRpt.SetDataSource (ds); CrystalReportViewer1.Visible=true; CrystalReportViewer1.ReportSource = oRpt; } }
Aguardo seu retorno para saber se deu tudo certo, Abraços Carlos Jr
GOSTEI 0
Cleber Filho
09/02/2009
Salve Carlos,
valeu mais uma vez. Pelo que entendi então basicamente preciso declarar inicialmente o report como nulo no carregamento da aplicacao e como ja teria definido o layout do relatorio, basta ligar o datasete ao reportsource deste CR viewer. Maravilha, pois assim, posso tratar os parametros antes de gerar o Dataset e o resultado do dataset eu monto o relatorio. maravilha!!!!!!! vou te pedir um favor. Vc pode transformar para mim em VB? Estou guardando suas dicas em VB e quando fui converter este ai no site C to VB deu um erro. No mais, forte abraço obrigado. Cleber.
GOSTEI 0
[devmedia .net]
09/02/2009
Opa Cléber.. Segue aí !!
Protected CrystalReportViewer1 As CrystalDecisions.Web.CrystalReportViewer
Public oRpt As Customer = Nothing
Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
oRpt = New Customer() 'NOME DO RELATÓRIO
End Sub
Protected Sub GerarReport()
Dim sqlConn As New SqlConnection("Server=localhost;uid=sa;password=;initial catalog = Northwind")
comd = New SqlCommand()
comd.Connection = sqlConn
comd.CommandType = CommandType.StoredProcedure
comd.CommandText = "up_GetAllCustomer"
comd.Parameters.Add("@Companyname", SqlDbType.VarChar, 50)
If TextBox1.Text.Trim() <> "" Then
comd.Parameters(0).Value = TextBox1.Text
Else
comd.Parameters(0).Value = DBNull.Value
End If
Dim sqlAdapter As New SqlDataAdapter()
sqlAdapter.SelectCommand = comd
Dim ds As New Dataset1()
sqlAdapter.Fill(ds, "Customers")
oRpt.SetDataSource(ds)
CrystalReportViewer1.Visible = True
CrystalReportViewer1.ReportSource = oRpt
End Sub Abraços Carlos Jr
Protected CrystalReportViewer1 As CrystalDecisions.Web.CrystalReportViewer
Public oRpt As Customer = Nothing
Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
oRpt = New Customer() 'NOME DO RELATÓRIO
End Sub
Protected Sub GerarReport()
Dim sqlConn As New SqlConnection("Server=localhost;uid=sa;password=;initial catalog = Northwind")
comd = New SqlCommand()
comd.Connection = sqlConn
comd.CommandType = CommandType.StoredProcedure
comd.CommandText = "up_GetAllCustomer"
comd.Parameters.Add("@Companyname", SqlDbType.VarChar, 50)
If TextBox1.Text.Trim() <> "" Then
comd.Parameters(0).Value = TextBox1.Text
Else
comd.Parameters(0).Value = DBNull.Value
End If
Dim sqlAdapter As New SqlDataAdapter()
sqlAdapter.SelectCommand = comd
Dim ds As New Dataset1()
sqlAdapter.Fill(ds, "Customers")
oRpt.SetDataSource(ds)
CrystalReportViewer1.Visible = True
CrystalReportViewer1.ReportSource = oRpt
End Sub Abraços Carlos Jr
GOSTEI 0
Cleber Filho
09/02/2009
Super Carlos, mais uma vez muito obrigado!!!!!!!!
GOSTEI 0