Как передать параметр используя статическую переменную? - PullRequest
0 голосов
/ 10 января 2012

Мне действительно нужна помощь в отношении моего кодирования. В моем коде мне нужно использовать статические переменные для передачи значения между функциями, и я действительно не знаю, как это сделать. Действительно ценю, если кто-то может помочь мне в этом. Спасибо.

static String TypeOfReport;
static DateTime DateOfExecution;

static DateTime StartDate;
static DateTime EndDate;
static int SpokeCode;

static void Main(string[] args)
{
    DateTime start = System.DateTime.Now.AddMinutes(1);
    Schedule.PeriodicSchedules schedule = new Schedule.PeriodicSchedules(start, Schedule.PeriodicSchedules.Frequency.Minutely);
    schedule.Elapsed += new System.Timers.ElapsedEventHandler(GenerateReport);
    schedule.Enabled = true;

    Console.ReadLine();
}

static void GenerateReport(object sender, EventArgs e)
{
    if (TypeOfReport == "BillingReport")
    {
        Schedule.PeriodicSchedules s = new Schedule.PeriodicSchedules(DateOfExecution, Schedule.PeriodicSchedules.Frequency.Minutely);
        s.Elapsed += new System.Timers.ElapsedEventHandler(hell);

        crRpt.Load("C:\\rptBilling.rpt");
        ReportLogin(crRpt);

        crRpt.SetParameterValue("@CollectionStartDate", StartDate);
        crRpt.SetParameterValue("@CollectionEndDate", EndDate);
        crRpt.SetParameterValue("@SpokeCode", SpokeCode);
    }                
}            

static void ReportAccess()
{
    SqlConnection thisConnection = new SqlConnection("data source=s3rosteam;initial catalog=ReportDB; integrated security=True; Pooling=False;");
    SqlCommand thisCommand = null;

    try
    {
        String strSQL = "SELECT TypeO fReport,DateOfExecution,StartDate,EndDate,SpokeCode FROM dbo.Schedule WHERE TypeOfReport ='" + TypeOfReport + "', DateOfExecution = '" + DateOfExecution + "'";
        thisConnection.Open();
        thisCommand = new SqlCommand(strSQL);
        thisCommand.Connection = thisConnection;
        thisCommand.CommandType = CommandType.Text;

        using (SqlDataReader reader = thisCommand.ExecuteReader())
        {
            reader.Read();
            StartDate = Convert.ToDateTime(reader["StartDate"]);
            EndDate = Convert.ToDateTime(reader["EndDate"]);
            SpokeCode = Convert.ToInt16(reader["SpokeCode"]);  
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.ToString());
    }

    finally
    {
        thisCommand.Dispose();
        thisConnection.Close();
        thisCommand.Dispose();
    }
}

Ответы [ 2 ]

0 голосов
/ 13 января 2012

Спасибо за предложения.Мне удалось передать значение.Но я не использую статическую переменную.

static void GenerateReport()
{  
    string[] arrTypes = ReadReport().Split('~');

    foreach (string strReportType in arrTypes)
    {
        if (strReportType == "BillingReport")
        {
            while (ThisReader.Read())
            {
                crRpt.SetParameterValue("@CollectionStartDate", ThisReader["StartDate"]);
                crRpt.SetParameterValue("@CollectionEndDate", ThisReader["EndDate"]);
                crRpt.SetParameterValue("@SpokeCode", ThisReader["SpokeCode"]);
            }
        }           
    }
}

static string ReadReport()
{
    try
    {
        ………     
        using (SqlDataReader reader = thisCommand.ExecuteReader())
        {
            while (reader.Read())
            {
                strReturn += reader["TypeOfReport"].ToString() + "~";
            }
            reader.Close();
        }
        strReturn = strReturn.Remove(strReturn.Length - 1);                

    }
    catch (Exception ex)
    {  }

    finally
    {  }
    return strReturn;
}
0 голосов
/ 10 января 2012

Вам не нужно объявлять каждую функцию как статическую.Вместо этого вы можете сделать что-то вроде:

internal class MyReportGenerator
{
    // Private member variables
    private int someVar;

    // Public properties
    public string TypeOfReport { get; set; }

    // Constructor
    public MyReportGenerator(string s, int i)
    {
        // Here you can initialize your member variables
    }

    // Methods
    void GenerateReport(string otherParams)
    {
    }

    public static void Main(string[] args)
    {
        // Setup the report generator, scheduler, etc
        MyReportGenerator generator = new MyReportGenerator(...);
        generator.GenerateReport(...);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...