现有access表test(XID,XName,Xtime),XID用的自增字段
想通过ado - recordset来增加记录
m_pCommand->ActiveConnection = m_pConnection ;
m_pCommand->CommandText = _bstr_t("select * from test"); m_pRecordset->Open ((IDispatch *) m_pCommand, vtMissing, adOpenDynamic,adLockOptimistic,adCmdText );
m_pRecordset->AddNew();
m_pRecordset->put_Collect(_variant_t("XID"),???);
m_pRecordset->put_Collect(_variant_t("XName"),_variant_t("张三"));
COleDateTime date=COleDateTime::GetCurrentTime();
CString strTime =date.Format(_T("%Y-%m-%d %H:%M:%S")); m_pRecordset->put_Collect(_variant_t("Xtime"),_variant_t(strTime));
...
m_pRecordset->UpdateBatch(adAffectAll);
问题有:
1.自增字段XID是否需要putcollect赋值,如果不这样用当如何处理?我做过如下实验
m_pConnection->Execute(_bstr_t("insert into test(XName,Xtime) values('zhangsan','2000-1-1 00:00:00')"));不能取得成功,不知道是否我做错了,我意思是没有给XID赋值,才导致出错的。XID换成非自增字段,程序赋值是可以编译通过的。2.时间字段Xtime使用putcollect的确可以成功,但是在更新后显示时,用m_pRecordset->Fields->Item[2L]->Value取时间值时取到空值而出错;但是如果用m_pRecordset->Fields->Item[2L]->PutValue(_variant_t(strTime));来给时间字段赋值,则显示时可以成功取到值,为什么?3.如果是oracle数据库,采用序列seqence s_a 来给XID赋值,用putcollect有招吗?
想通过ado - recordset来增加记录
m_pCommand->ActiveConnection = m_pConnection ;
m_pCommand->CommandText = _bstr_t("select * from test"); m_pRecordset->Open ((IDispatch *) m_pCommand, vtMissing, adOpenDynamic,adLockOptimistic,adCmdText );
m_pRecordset->AddNew();
m_pRecordset->put_Collect(_variant_t("XID"),???);
m_pRecordset->put_Collect(_variant_t("XName"),_variant_t("张三"));
COleDateTime date=COleDateTime::GetCurrentTime();
CString strTime =date.Format(_T("%Y-%m-%d %H:%M:%S")); m_pRecordset->put_Collect(_variant_t("Xtime"),_variant_t(strTime));
...
m_pRecordset->UpdateBatch(adAffectAll);
问题有:
1.自增字段XID是否需要putcollect赋值,如果不这样用当如何处理?我做过如下实验
m_pConnection->Execute(_bstr_t("insert into test(XName,Xtime) values('zhangsan','2000-1-1 00:00:00')"));不能取得成功,不知道是否我做错了,我意思是没有给XID赋值,才导致出错的。XID换成非自增字段,程序赋值是可以编译通过的。2.时间字段Xtime使用putcollect的确可以成功,但是在更新后显示时,用m_pRecordset->Fields->Item[2L]->Value取时间值时取到空值而出错;但是如果用m_pRecordset->Fields->Item[2L]->PutValue(_variant_t(strTime));来给时间字段赋值,则显示时可以成功取到值,为什么?3.如果是oracle数据库,采用序列seqence s_a 来给XID赋值,用putcollect有招吗?
建表时指定了默认值,比如时间值为now(),用recordset新添记录时,需用putcollect
给值吗?用connection的execute方法 ,insert语句中需要写入 (,Xtime)
...Values(,now)吗?
有默认值和允许空值得字段可以不用putcollect
//(_bstr_t("insert into test(XName,Xtime) values('zhangsan','2000-1-1 00:00:00')
ADO,把字段全写上,肯定成功,具体原因等待高手解释
来作为唯一ID。
insert into test(XName,Xtime) values('zhangsan',now)
把这句放在access的查询里面运行以下,如果可以运行,问题就在你的VC代码中
"insert into test(XName,Xtime) values('zhangsan',covert(datetime,'2000-1-1 00:00:00'))"
试试