Nesse código mostro de forma simples como gerar um relatório em pdf utilizando CrystalReports.
Primeiramente você deve criar um DataSet Tipado e colocar a sua consulta para gerar os campos.
Após feito isso você vai entrar no relatório e arrastar do canto esquerdo as colunas que você vai utilizar para dentro do relatório.
Dica : Para ganhar performance utilize o dataSet tipado apenas para definir os campos, utilize datasets simples com filtros definidos nas querys.
MemoryStream memoria = new MemoryStream(); DataSet ds = new DataSet(); //Função que cria o dataset utilizado para consulta do Relatório. ds = CriarDataSet(); CrystalReport1 crt = new CrystalReport1(); crt.Load("CrystalReport1.rpt");//Nome do arquivo de relatorio do CrystalReports crt.SetDataSource(ds.Tables[0]); memoria = (MemoryStream)crt.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); crt.Close(); Response.ClearContent(); Response.ClearHeaders(); Response.ContentType = "application/pdf"; Response.AddHeader("Content-Disposition", "inline; filename=CrystalReport1.pdf"); Response.BinaryWrite(memoria.ToArray()); Response.Flush(); memoria.Close(); Response.End();