收录日期:2018/08/15 02:05:43 时间:2016/05/22 08:21:50 标签:Access
我用ODBC来实现VC对一个Access小数据库的操作,这个小数据库里面有一张表叫MyTable,表中有两个字段ID,Time,其中Time表示时间,是有年月日小时分钟的那种比较长的时间就像这种2003-10-29 19:44:57。我用ClassWizard产生一个派生于CRecordset的类,名字叫CMyRecordset,通过ClassWizard可以自动在CMyRecordset中产生两个成员变量m_ID,m_Time,这两个变量与表中的两个字段相对应。我可以使用这两个变量来修改、添加、删除表的操作,已经成功。

我对CMyRecordset产生一个对象就叫myRecordset,因为myRecordset已经与表MyTable连上了,那么myRecordset的成员m_ID,m_Time就可以访问表了,事实上我通过这两个成员变量已经成功对表进行添加删除了,比如
myRecordse.AddNew();
myRecordse. m_ID=5;
myRecordse.m_Time=某时间;
myRecordse.Update();//这样就成功了

但,我想在VC中使用一些简单的SQL语句来实现一些特定的操作,我用CTime来获得系统时间叫MyCurTime。我人为给定一个ID值,希望能在表中查找符合这样条件的记录,这个记录的ID字段值与我给的一样,同时这个记录的Time字段与系统时间MyCurTime在同一天上,只要找到符合一条记录就可以,没有必要找到所有符合条件的。该如何做?
现在我可以这样:
int n;
CString str;
n=5;//这个5是自己给定的
str.Format("ID=%d",n);
myRecordse. m_strFilter=str;
myRecordse. Requery();//这样是可以查到一条记录
但,关于由CTime得到的当前时间MyCurTime,与数据库中的Time字段的值比较,就不会写了。我想要的是MyCurTime与数据库中的Time只要在同一天就可以了。比如对于ID我可以str.Format("ID=%d",n);对于时间该如何写?
你可以使用jet sql+ ODBC标量函数解决,具体的内容不在ACCESS 讨论范围,你可以去查一下ODBC的资料

我提供给你几个函数

MONTH 、YEAR 、DAYOFYEAR