首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

ado之recordset添加记录时如何避免自增字段和时间字段

2012-03-24 
ado之recordset添加记录时如何处理自增字段和时间字段现有access表test(XID,XName,Xtime),XID用的自增字段

ado之recordset添加记录时如何处理自增字段和时间字段
现有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有招吗?




[解决办法]
自增字段不用putcollect也不能用putcollect
有默认值和允许空值得字段可以不用putcollect
//(_bstr_t( "insert into test(XName,Xtime) values( 'zhangsan ', '2000-1-1 00:00:00 ')
ADO,把字段全写上,肯定成功,具体原因等待高手解释
[解决办法]
自增字段:
insert into test(XName,Xtime) values( 'zhangsan ',now)
把这句放在access的查询里面运行以下,如果可以运行,问题就在你的VC代码中

热点排行