hi I have method for getting the values form database and representing those values in chart controls..
and this is the method…
public static void Hourlyattendence(System.DateTime startdate, System.DateTime enddate, string StartHour, string EndHour,
out string[] Hours, out int[] Accepted, out int[] Refused)
{
int hours = 1 + int.Parse(EndHour) - int.Parse(StartHour);
Hours = new string[hours];
Accepted = new int[hours];
Refused = new int[hours];
int result = 0;
for (int i = 0; i < hours; i++)
{
Accepted[i] = 0;
Refused[i] = 0;
Hours[i] = string.Format("{0:00}", int.Parse(StartHour) + i);
}
const string sql = @"SELECT COUNT('x') AS numVisits, visit_Status as Status, SUBSTRING(visit_Time,1,2) as visitHour
FROM visits
WHERE visit_Date BETWEEN @startdate AND @enddate
AND SUBSTRING(visit_Time,1,2) between @StartHour and @EndHour
GROUP BY SUBSTRING(visit_Time,1,2), visit_Status";
var hourstable = new DataTable();
using (var conn = new MySql.Data.MySqlClient.MySqlConnection(connectionstring))
{
conn.Open();
var cmd = new MySql.Data.MySqlClient.MySqlCommand(sql, conn);
var ds = new DataSet();
var parameter = new MySql.Data.MySqlClient.MySqlParameter("@startdate", MySql.Data.MySqlClient.MySqlDbType.DateTime);
parameter.Direction = ParameterDirection.Input;
parameter.Value = startdate;
cmd.Parameters.Add(parameter);
var parameter2 = new MySql.Data.MySqlClient.MySqlParameter("@enddate", MySql.Data.MySqlClient.MySqlDbType.DateTime);
parameter2.Direction = ParameterDirection.Input;
parameter2.Value = enddate;
cmd.Parameters.Add(parameter2);
var parameter3 = new MySql.Data.MySqlClient.MySqlParameter("@StartHour", MySql.Data.MySqlClient.MySqlDbType.DateTime);
parameter3.Direction = ParameterDirection.Input;
parameter3.Value = StartHour;
cmd.Parameters.Add(parameter3);
var parameter4 = new MySql.Data.MySqlClient.MySqlParameter("@EndHour", MySql.Data.MySqlClient.MySqlDbType.DateTime);
parameter4.Direction = ParameterDirection.Input;
parameter4.Value = EndHour;
cmd.Parameters.Add(parameter4);
var da = new MySql.Data.MySqlClient.MySqlDataAdapter(cmd);
da.Fill(ds);
try
{
hourstable = ds.Tables[0];
}
catch
{
hourstable = null;
}
}
if (hourstable != null)
{
for (int i = 0; i < hourstable.Rows.Count; i++)
{
if (int.TryParse(hourstable.Rows[i]["numVisits"].ToString(), out result) && int.TryParse(hourstable.Rows[i]["visitHour"].ToString(), out hours))
{
hours -= int.Parse(StartHour);
if (hourstable.Rows[i]["Status"].ToString().ToUpper() == "ACCEPTED")
{
Accepted[hours] = result;
}
else
{
Refused[hours] = result;
}
}
}
}
}
and i am calling above method in the below code …and this is where i am representing the data in chart controls….
private void KpiHourlAttendenceForm_Load(object sender, EventArgs e)
{
Drawkpihourlyattendence(dtpStartDate.Value, dtpEnddate.Value);
}
public void Drawkpihourlyattendence(DateTime startdate, DateTime enddate)
{
try
{
KpiHourlyattaendencechart.Series.Clear();
Series acceptedSeries = KpiHourlyattaendencechart.Series.Add("Accepted");
Series rejectedSeries = KpiHourlyattaendencechart.Series.Add("Refused");
string[] xValues;
int[] yValues;
int[] yValues2;
KpiData.Hourlyattendence(startdate, enddate, "06", "22", out xValues, out yValues, out yValues2);
//blah
//blah
///blah
}
catch(FormatException e)
{
Console.WriteLine(e.Message);
}
got the exception : format Exception String was not recognized as a valid DateTime.
would any one pls help on this…..
Many Thanks in advance…
I think you have to change the parameter type for
@StartHourand@EndHourbecause they are string.