我做的是读取Excel中值的程序,用的ODBC方式,和读取数据库几乎一样!
可是对于'时间'字段的时间无法读取啊!代码如下
CDatabase database;
CString strDsn;
strDsn.Empty();
strDsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s", strDriver, this->m_strPath);
database.Open(NULL,false,false,strDsn);
CRecordset dataSet(&database);
CString strSql;
strSql.Empty();
strSql.Format("select * from [%s$A1:IV65536]",this->m_strSheetName);
dataSet.Open(CRecordset::forwardOnly, strSql, CRecordset::readOnly);
while(!dataSet.IsEOF())
{
    for(int j=0;j<nTotalCol;j++)//总共nTotal列
   {
      dataSet.GetFieldValue(strColArray.GetAt(j),strValue);strColArray.GetAt(j)是j列的列名
    }  
dataSet.MoveNext();
}
以上代码可以把'文本'格式的字段值准确读出来,但是对于那些'时间'格式的时间值读取的是空.
急问,对于'时间'格式的字段如何读取?
我认为我做的和数据库几乎一样,如何Access这样去读的话,时间字段如何读?谢谢

解决方案 »

  1.   

    不要用CString去取值啊用CDBVariant类型去取
      

  2.   

    怎么都用字符串读啊?不同类型的数据,用VARIANT变量指定不同的类型来读取。
      

  3.   

    首先感谢两位高人的指点是这样吗?
    CDBVariant variant;
    variant.Clear();
    dataSet.GetFieldValue(strColArray.GetAt(j),variant);
    可是我跟踪时发现读取时间字段时,variant变量没有什么变化啊好像.那该怎么搞啊?