有一个EXCEL表,记录着三个时间段的工作时间,
time1,time2,time3
把数据读到数据库后变成
time11,time12,time21,time22,time31,time32
现在计算前两个时间段的时间差然后相加,得出这两个时间段内的总工时,因为有的时间段的记录是空的,所以不能计算在内!
比如
time11是空的,那time12-time11就不能计算,只计算time22-time21的时间
我做出来可以算出时间了,可是有的时候time11,time12,time21,time22都是空的,他也是把上一天的时间记录下来,TimeSpan st1,ts2的值如果遇到第二天是空的,那总是保留上一天的时间。出来的时间就相同了。请问的的程序错在哪啦?麻烦帮忙下。
SqlConnection conn=new SqlConnection(cnString);
conn.Open();
string str1="select * from table1";
SqlDataAdapter myCommand = new SqlDataAdapter(str1,conn);
DataSet ds = new DataSet();
myCommand.Fill(ds, "table");
int max=ds.Tables["table"].Rows.Count;
if( max > 0 )
{
for(int i=0;i<max;i++)
{
if(ds.Tables["table"].Rows[i]["time12"].ToString().Trim()!="")
{
if(ds.Tables["table"].Rows[i]["time11"].ToString().Trim()!="")
{
ts1=Convert.ToDateTime(ds.Tables["table"].Rows[i]["time12"])-Convert.ToDateTime(ds.Tables["table"].Rows[i]["time11"]);
}
}
if(ds.Tables["table"].Rows[i]["time22"].ToString().Trim()!="")
{
if(ds.Tables["table"].Rows[i]["time21"].ToString().Trim()!="")
{
ts2=Convert.ToDateTime(ds.Tables["table"].Rows[i]["time22"])-Convert.ToDateTime(ds.Tables["table"].Rows[i]["time21"]);
}
}
string datatime="";
if(Convert.ToString(ts1).Trim()=="")
{
datatime=Convert.ToString(ts2);
}
else if(Convert.ToString(ts2).Trim()=="")
{
datatime=Convert.ToString(ts1);
}
else
{
datatime=Convert.ToString(ts1.Hours+ts2.Hours);
}
string str2="update table1 set datatime=@datatime where id="+ds.Tables["table"].Rows[i]["id"].ToString();
SqlCommand cmd=new SqlCommand(str2,conn);
cmd.Parameters.Add(new SqlParameter("@datatime",SqlDbType.Char,20));
cmd.Parameters["@datatime"].Value=datatime.Trim();
cmd.ExecuteNonQuery();
}
conn.Close();
}
else
{
MessageBox.Show("数据为空,请导入数据!");
}
time1,time2,time3
把数据读到数据库后变成
time11,time12,time21,time22,time31,time32
现在计算前两个时间段的时间差然后相加,得出这两个时间段内的总工时,因为有的时间段的记录是空的,所以不能计算在内!
比如
time11是空的,那time12-time11就不能计算,只计算time22-time21的时间
我做出来可以算出时间了,可是有的时候time11,time12,time21,time22都是空的,他也是把上一天的时间记录下来,TimeSpan st1,ts2的值如果遇到第二天是空的,那总是保留上一天的时间。出来的时间就相同了。请问的的程序错在哪啦?麻烦帮忙下。
SqlConnection conn=new SqlConnection(cnString);
conn.Open();
string str1="select * from table1";
SqlDataAdapter myCommand = new SqlDataAdapter(str1,conn);
DataSet ds = new DataSet();
myCommand.Fill(ds, "table");
int max=ds.Tables["table"].Rows.Count;
if( max > 0 )
{
for(int i=0;i<max;i++)
{
if(ds.Tables["table"].Rows[i]["time12"].ToString().Trim()!="")
{
if(ds.Tables["table"].Rows[i]["time11"].ToString().Trim()!="")
{
ts1=Convert.ToDateTime(ds.Tables["table"].Rows[i]["time12"])-Convert.ToDateTime(ds.Tables["table"].Rows[i]["time11"]);
}
}
if(ds.Tables["table"].Rows[i]["time22"].ToString().Trim()!="")
{
if(ds.Tables["table"].Rows[i]["time21"].ToString().Trim()!="")
{
ts2=Convert.ToDateTime(ds.Tables["table"].Rows[i]["time22"])-Convert.ToDateTime(ds.Tables["table"].Rows[i]["time21"]);
}
}
string datatime="";
if(Convert.ToString(ts1).Trim()=="")
{
datatime=Convert.ToString(ts2);
}
else if(Convert.ToString(ts2).Trim()=="")
{
datatime=Convert.ToString(ts1);
}
else
{
datatime=Convert.ToString(ts1.Hours+ts2.Hours);
}
string str2="update table1 set datatime=@datatime where id="+ds.Tables["table"].Rows[i]["id"].ToString();
SqlCommand cmd=new SqlCommand(str2,conn);
cmd.Parameters.Add(new SqlParameter("@datatime",SqlDbType.Char,20));
cmd.Parameters["@datatime"].Value=datatime.Trim();
cmd.ExecuteNonQuery();
}
conn.Close();
}
else
{
MessageBox.Show("数据为空,请导入数据!");
}
解决方案 »
- C#中,如何实现用户在textbox中输入数值格式为货币格式???
- 问一个小码农很伤心的问题
- 本人想从DataGrid里筛选数据
- C#怎样实现与数据库连接对登录的用户名和密码进行验证?
- 我现在想做一下这个项目但是有个问题不太明白?对于里面的3D场景怎么实现?我没有用过C#弄过图像问题?
- 把数据添加数据库时提示实例失败???求救!!!!
- 疑惑 既然C#支持多态 为什么还要有反射呢
- WindowsPhone7 不识别 using WindowsPhoneNavigation.Misc;
- 关于datagrid中显示数据的问题,菜鸟求解!
- 谁有 C#应用程序开发全程演练——从灵感到实现 源码?
- 求一个关于C#中数据批量更新的问题
- C#变量的生存周期问题
我是让他变成0,才成的!