在我的CSV文件里,有一列叫做period,这一列的数据格式如下:MM/dd/yyyy然后我写了一个winform去读取,
oleDbCon.ConnectionString = @"Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " + dataSource + "\\" + ";Extended Properties = 'Text;FMT=Delimited;HDR=YES;'";
oleDbCon.Open();
oleDbCom.Connection = oleDbCon; StringBuilder sbSQL = new StringBuilder();
sbSQL.Append("select [Description],[COA],[Dr],[Cr],[Currency],[period],[Voucher No],[Foreign Dr],[Foreign Cr],[Voucher Title],[Company] from [" + debtCreditModel.ReportSourceFileName + "] where 1 = 1");然后DataSet的table直接赋给了一个DataGridView,期间不做任何数据的操作。
现在的问题是:如果period的日期是这样的,比如9/3/2009,或者9/12/2009,或者9/1/2009,9/24/2009,9/30/2009。格式是MM/dd/yyyy
我把返回的DataSet的Table赋值给了一个DataGridView,然后直接显示出来。
Period的格式似乎是dd/MM/yyyy,那么很显然9/30/2009是不符合规范的,因为照它的理解,不可能有30月9号这个概念。
我怎么强制csv的格式是MM/dd/yyyy。
这不是SQL,SQL可以有函数convert(nvarchar(100),getdate(),101)来强制输出的是MM/dd/yyyy。
oledb不支持该函数,或者谁可以给我数据库正确的连接代码,我可以改一下DAL层。
oleDbCon.ConnectionString = @"Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " + dataSource + "\\" + ";Extended Properties = 'Text;FMT=Delimited;HDR=YES;'";
oleDbCon.Open();
oleDbCom.Connection = oleDbCon; StringBuilder sbSQL = new StringBuilder();
sbSQL.Append("select [Description],[COA],[Dr],[Cr],[Currency],[period],[Voucher No],[Foreign Dr],[Foreign Cr],[Voucher Title],[Company] from [" + debtCreditModel.ReportSourceFileName + "] where 1 = 1");然后DataSet的table直接赋给了一个DataGridView,期间不做任何数据的操作。
现在的问题是:如果period的日期是这样的,比如9/3/2009,或者9/12/2009,或者9/1/2009,9/24/2009,9/30/2009。格式是MM/dd/yyyy
我把返回的DataSet的Table赋值给了一个DataGridView,然后直接显示出来。
Period的格式似乎是dd/MM/yyyy,那么很显然9/30/2009是不符合规范的,因为照它的理解,不可能有30月9号这个概念。
我怎么强制csv的格式是MM/dd/yyyy。
这不是SQL,SQL可以有函数convert(nvarchar(100),getdate(),101)来强制输出的是MM/dd/yyyy。
oledb不支持该函数,或者谁可以给我数据库正确的连接代码,我可以改一下DAL层。
我不想google了,还要调试,没时间了~~~。
根据我的经验,建议你也别用;
你这种方式一方面是格式不好控制;另一方面是当数据很大,比如几十K甚至上兆的时候,速度会很慢的
我都一直用这种方式读写,有需要处理的格式,在读取的时候就处理了;
最后做成一个库,以后使用起来也方便很多
或者你自己定义一个函数,把这个时间格式转换过来,然后给绑定控件
但是它解析的时候似乎是按照dd/MM/yyyy来解析的,
那么自然9/30/2009这样的日期就无法识别了,或者说识别错误。
于是有些日期我就根本拿不出来的。是空白(不报错因为我自己抓到异常了。DateTime.Parse()的FormatException)。
或者你把日期那个字段定义为字符串格式,这样就肯定没事了,不要按照日期来处理,按照字符串来处理
还有排序啊,根据某个数字类型排序,可惜CSV全部认为是字符串类型的,所以1,2,3,4,5,6,10,11,21,23,31,33就顺序不对了。。
我在我的DataTable里面再排序,也还是不行。我的神啊。。
报表上有什么东西可以支持字符串转数字再排序伐~~~
非常感谢你的回复。