Crystal report

09/02/2009

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

Cleber Filho

Curtidas 0

Respostas

[devmedia .net]

[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
GOSTEI 0
Cleber Filho

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]

[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
GOSTEI 0
Cleber Filho

Cleber Filho

09/02/2009

Super Carlos, mais uma vez muito obrigado!!!!!!!!
GOSTEI 0
POSTAR