读书人

关于SQL取Ecexl 根据日期过滤的有关问

发布时间: 2012-05-10 16:02:39 作者: rapoo

关于SQL取Ecexl 根据日期过滤的问题
using (OleDbConnection OleConn = new OleDbConnection(sConnectionString))
{
OleConn.Open();
string sql = "SELECT * FROM [总$] WHERE F1>='2011/1/1' AND F1<='2011/1/2'";
OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
dtt.TableName = reportName;
OleDaExcel.Fill(dtt);
OleConn.Close();
OleConn.Dispose();
}
取出的dtt 的值
2011/1/1
2011/1/2
2011/1/10
2011/1/11
......
2011/1/19

各位大拿 这是什么原因了 怎么修改才好

[解决办法]
string sql = "SELECT * FROM [总$] WHERE F1>='2011/1/1' AND F1<='2011/1/2'";
这句话有问题 你的 2011/1/2加单引号不成字符串了吗?一个时间格式,一个字符串格式,当然查询错误了
[解决办法]

C# code
using (OleDbConnection OleConn = new OleDbConnection(sConnectionString))  {  OleConn.Open();  string sql = "SELECT * FROM [总$] ";  OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);  dtt.TableName = reportName;  OleDaExcel.Fill(dtt);  OleConn.Close();  OleConn.Dispose();  }   datarow[] dr dtt.select("F1>='2011/1/1' AND F1<='2011/1/2'");DataTable newDt = new DataTable();Foreach(DataRow dr in drs[]){newDt.ImportRow(dr);}
[解决办法]
貌似excel中的排序有点小问题,大概是这样的 1,11,12,13,14,15,16,17,18,19,2,20,21,22 他的2会排在19后面20前面,貌似是格式的问题,还要在确认一下
[解决办法]
using (OleDbConnection OleConn = new OleDbConnection(sConnectionString))
{
OleConn.Open();
string sql = "SELECT * FROM [总$] ";
OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
dtt.TableName = reportName;
OleDaExcel.Fill(dtt);
OleConn.Close();
OleConn.Dispose();
}

datarow[] dr dtt.select("F1>='2011/1/1' AND F1<='2011/1/2'");


DataTable newDt = new DataTable();

Foreach(DataRow dr in drs[])
{
newDt.ImportRow(dr);
}


然后把 你的datatable中的时间格式改了不就ok了

读书人网 >C#

热点推荐