笔记:一些access操作,基于DAO

it2022-05-09  32

1.  获得所有的数据表的名称,并基于表名来进一步操作

if(!db.IsOpen()) db.Open(_T("hydata")); CDaoTableDefInfo tablename; CString name; short ncount = db.GetTableDefCount(); for (short i = 0; i < ncount; i++) { db.GetTableDefInfo(i,tablename,AFX_DAO_PRIMARY_INFO); if (tablename.m_strName.Left(2) == _T("00")) { m_strCodeArray_SZ.Add(tablename.m_strName); } else if(tablename.m_strName.Left(1) == _T("6")) m_strCodeArray_SH.Add(tablename.m_strName); }

2. 为数据表增加某些字段(field)

CDaoTableDef tabledef(&db); // CDaoTableDef 和 CDaoFieldInfo成对出现 CDaoFieldInfo fieldinfo; fieldinfo.m_strName = _T("increase"); fieldinfo.m_nType = dbLong; fieldinfo.m_lSize = dbLong; fieldinfo.m_lAttributes = dbUpdatableField; fieldinfo.m_bAllowZeroLength = FALSE; fieldinfo.m_bRequired = FALSE; fieldinfo.m_nOrdinalPosition = 23; // 添加的新field在第23列 tabledef.Open(_T("000016")); tabledef.CreateField(fieldinfo);//另外一种方式增加新field: 利用现有的field CDaoFieldInfo info; tabledef.GetFieldInfo(15,info,AFX_DAO_SECONDARY_INFO); info.m_nOrdinalPosition = 24;info.m_strName = _T("increase2"); tabledef.CreateField(info);

3.  判断某字段的一些记录是否为空,是则补充数据

CDaoRecordset ret(&db); CString sql = _T("SELECT * FROM 000016"); ret.Open(dbOpenDynaset,sql,0); COleVariant varMa,var; ret.MoveLast(); ret.GetFieldValue(17,varMa); while (varMa.vt == VT_NULL) { long tt = 2; var = COleVariant(tt,VT_I4); ret.Edit(); ret.SetFieldValue(17,var); ret.Update(); ret.MovePrev(); ret.GetFieldValue(17,varMa); }

4.  创建具有同样表结构的新表

db.Execute(_T("SELECT * INTO 新表 FROM 旧表 WHERE 1=2"));

5. 修改表名

CDaoTableDef def(&db); CDaoTableDefInfo definfo; short ncount = db.GetTableDefCount(); for (short i = 0; i < ncount; i++) { db.GetTableDefInfo(i,definfo,AFX_DAO_PRIMARY_INFO); if (definfo.m_strName.Left(1) == _T("0")) { CString strname; strname.Format(_T("sz%s"),definfo.m_strName); def.Open(definfo.m_strName); def.SetName(strname);def.Close(); } else if (definfo.m_strName.Left(1) == _T("6")) { CString strname; strname.Format(_T("sh%s"),definfo.m_strName); def.Open(definfo.m_strName); def.SetName(strname); def.Close(); } }

6. 判断表是否存在。否,则创建之

CDaoTableDef td( &db ); try { td.Open( "login1 " ); } catch( CDaoException* e ) { //如果不存在该表 ,下面添加创建表的代码段 e-> Delete( ); } td.Close( );

7. 待续...

转载于:https://www.cnblogs.com/tigeryth/archive/2011/07/11/2102863.html

相关资源:数据结构—成绩单生成器

最新回复(0)