none
Problema com código RRS feed

  • Pergunta

  • Pessoal, boa tarde!

    Estou tentando fazer o código abaixo funcionar, mas como faz muito tempo que não programo e como não estou muito familiarizado como c# estou tendo muita dificuldade. Espero que alguém possa me ajudar!

     

    Segue alguns pontos que não consegui resolver.

    1)       Preciso armazenar uma quantidade x de valores do tipo datetime em um array, mas não sei como declarar esse tipo de variável e nem como armazenar valores dentro dessa variável. A procedure ConcatenaData, que é chamada no método RetornaHora() , irá retornar um valor do Tipo DateTime para cada linha do DataSetPorcentagem

    2)       Não sei resolver a mensagem de erro que o VS2008 esta retornando. O erro é: Error 1 O método deve ter um tipo de retorno.

    Por enquanto é isso.

    Grato desde já

    Gustavo

     

    using System.Data.SqlClient;
    using CrystalDecisions.CrystalReports.Engine;
    using CrystalDecisions.Shared;
    using System.Web.Configuration;
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using CrystalDecisions.CrystalReports;
    using System.IO;
    using System.Drawing;
     
    public partial class CrystalReports_wfmPrintPreview : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            ListaApontamentoAgrupadoPDF();
     
        }
     
        protected void ListaApontamentoAgrupadoPDF()
        {
            ReportDocument crReportDocument = new ReportDocument();
     
            DateTime hora;
     
            string strConexao = WebConfigurationManager.ConnectionStrings["ExtratoConnectionString"].ConnectionString;
            SqlConnection conn = new SqlConnection(strConexao);
           
         
     
            SqlCommand strSQL = new SqlCommand("SET DATEFORMAT DMY SELECT TbApontamento.Sequencia, TbApontamento.Data, TbApontamento.Atividade, TbApontamento.Categoria, TbApontamento.Motivo, TbApontamento.CodTbProjeto, TbApontamento.CodTbColaborador, TbApontamento.Num3SI, TbApontamento.HoraIni, TbApontamento.HoraFinal, TbApontamento.TempoTotal, TbApontamento.CodTbApontamento, TbApontamento.Porcentagem, TbCategoria.CodTbCategoria, TbCategoria.NomeCategoria, TbColaborador.CodTbColaborador  AS Expr1, TbColaborador.NomeColaborador, TbColaborador.loginsistema, TbMotivo.CodTbMotivo, TbMotivo.NomeMotivo, TbProjeto.CodTbProjeto AS Expr2, TbProjeto.NomeProjeto, TbProjeto.CodTbProjetoOld FROM TbApontamento INNER JOIN TbCategoria ON TbApontamento.Categoria = TbCategoria.CodTbCategoria INNER JOIN TbColaborador ON TbApontamento.CodTbColaborador = TbColaborador.CodTbColaborador INNER JOIN TbMotivo ON TbApontamento.Motivo = TbMotivo.CodTbMotivo LEFT  JOIN TbProjeto ON TbApontamento.CodTbProjeto = TbProjeto.CodTbProjeto where TbApontamento.CodTbColaborador ='" + Request.QueryString["CodColaborador"] + "' and   TbApontamento.Data >= '" + Request.QueryString["dataIni"] + "' and    TbApontamento.Data <='" + Request.QueryString["dataFim"] + "'", conn);
     
     
            DSApont oDataSet = new DSApont();
     
            try
            {
     
                strSQL.CommandType = CommandType.Text;
     
                conn.Open();
     
     
     
                SqlDataAdapter oDA = new SqlDataAdapter(strSQL);
     
                oDA.Fill(oDataSet, "TbApontamento");
     
     
                RetornaHora(); 
     
                //aqui eu gostaria de manipular os valores que o método RetornaHora irá mandar de volta dentro de um array
     
                //
     
     
                string strPathreport = Server.MapPath("ExtratoMensalGerencialHoraColaboradorGrafico.rpt");
     
                crReportDocument.Load(strPathreport);
     
                crReportDocument.SetDataSource(oDataSet);
     
     
     
                    ExportOptions crExportOptions;
                    DiskFileDestinationOptions crDiskFileDestinationOptions = null;
                    string strPDFTmp = (((Server.MapPath("~\\tmp") + "\\") + Session.SessionID.ToString()) + ".pdf");
     
                    crDiskFileDestinationOptions = new DiskFileDestinationOptions();
                    crDiskFileDestinationOptions.DiskFileName = strPDFTmp;
                    crExportOptions = crReportDocument.ExportOptions;
                    // With...
                    crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
                    crExportOptions.DestinationOptions = crDiskFileDestinationOptions;
                    crExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
                    crReportDocument.Export();
                    // escrevendo o pdf para o browser do cliente
                    Response.ClearContent();
                    Response.ClearHeaders();
                    Response.ContentType = "application/pdf";
                    Response.AddHeader("content-disposition", "inline; filename=ReportName.pdf");
                    Response.WriteFile(strPDFTmp);
                    Response.Flush();
                    Response.Close();
                    // Removendo o pdf do servidor
                    System.IO.File.Delete(strPDFTmp);
     
     
     
     
                    crPrintPreview.DisplayGroupTree = false;
     
                    crPrintPreview.HasCrystalLogo = false;
     
                    crPrintPreview.ReportSource = crReportDocument;
     
                    crPrintPreview.RefreshReport();
                }
     
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.Message);
                }
     
                finally
                {
     
     
                    conn.Dispose();
     
                    oDataSet.Dispose();
     
                    conn = null;
     
                    oDataSet = null;
                }
     
            }
        
     
        protected void CrystalReports_wfmPrintPreview_UnLoad(object sender, EventArgs e)
        {
            crPrintPreview.Dispose();
     
        }
         public static RetornaHora (DateTime hora)
         {
           // DateTime array;
     
            string strConexao = WebConfigurationManager.ConnectionStrings["ExtratoConnectionString"].ConnectionString;
            SqlConnection conn = new SqlConnection(strConexao);
            SqlConnection connporcentagem = new SqlConnection(strConexao);
            int i;
     
            SqlCommand strSQLPorcentagem = new SqlCommand("select CodTbColaborador,convert(char(10),data,103) as data, convert(char(8), (DATEADD(hh, hor,(DATEADD(mi, min,(DATEADD(ss, sec, '00:00:00')))))),108) as horastotais from  ( select CodTbColaborador, Data, sum(hor) as hor,sum([min]) as [min] ,sum(sec) as sec from  (SELECT TbColaborador.CodTbColaborador,Data, cast(substring(TempoTotal,1,2) as int) as hor, cast(substring(TempoTotal,4,2) as int) as min, cast(substring(TempoTotal,7,2) as int) as sec FROM TbApontamento  INNER JOIN  TbColaborador ON TbApontamento.CodTbColaborador = TbColaborador.CodTbColaborador ) TbApontamento where  CodTbColaborador  = '" + Request.QueryString["CodColaborador"] + "' and data >= '" + Request.QueryString["dataIni"] + "' and data <= '" + Request.QueryString["dataFim"] + "' group by CodTbColaborador,Data) as TbApontamento order by CodTbColaborador, Data", connporcentagem);
            DSApont oDataSetPorcentagem = new DSApont();
     
               
            strSQLPorcentagem.CommandType = CommandType.Text;
     
            connporcentagem.Open();
            SqlDataAdapter oDAPorcentagem = new SqlDataAdapter(strSQLPorcentagem);
     
            oDAPorcentagem.Fill(oDataSetPorcentagem, "TbApontamento");
     
            connporcentagem.Close();
     
            for (i = 0; i <= oDataSetPorcentagem.Tables[0].Rows.Count - 1; i++)
            {
     
                SqlCommand cmd = new SqlCommand("ConcatenaData", connporcentagem);
                cmd.CommandType = CommandType.StoredProcedure;
                ///initilize parameters
                cmd.Parameters.Add("@data", (DateTime)oDataSetPorcentagem.Tables[0].Rows[0][1]);
                cmd.Parameters.Add("@hora", (string)oDataSetPorcentagem.Tables[0].Rows[0][2]);
     
                RetornaHora result = null;
     
                using (connporcentagem)
                {
                     connporcentagem.Open();
                     SqlDataReader reader = cmd.ExecuteReader();
     
                     if (reader.Read())
                     {
                        result = new RetornaHora(reader);
     
                     }
                            
                     connporcentagem.Close();
                     
                    
                    // Aqui eu gostaria de armazenar os valores dentro do array, por exemplo array[i] = resultado do concatenadata
                }
     
            }
            //return(array);
         }
     
    }
                

    Analista Programador
    terça-feira, 29 de setembro de 2009 17:25

Todas as Respostas

  • Olá,

    O problema está nesse método:
    public static RetornaHora
    Ele não tem tipo de retorno.

    O correto seria: public static DateTime RetornaHora (DateTime hora)

    Todo método tem que ter um retorno nem que seja void.



    Roberto Santos http://blog.robertoosantos.com
    • Sugerido como Resposta Gustavo Luna quarta-feira, 30 de setembro de 2009 19:36
    quarta-feira, 30 de setembro de 2009 13:17