用CB创建ACCESS数据库后MSysObjects的权限问题
现在用CB动态创建一个ACCESS数据库并对新建的数据库用程序添加表
在后期的应用中要对MSysObjects访问获得表名
- C/C++ code
SELECT NAME FROM MSysObjects WHERE TYPE=1
现在发现用CB创建出来的ACCESS数据库中ADMIN用户对MSysObjects表没有权限,导致无法访问,每次只能手工到ACCESS库中对管理员用户设置MSysObjects所有权限,这样对最终用户来说非常不方便
创建数据库的代码如下:
- C/C++ code
OleInitialize(NULL); Variant vCreateAccess; Procedure PCreateAccess("Create"); PCreateAccess << "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DBName + ".mdb"; vCreateAccess = CreateOleObject("ADOX.Catalog"); vCreateAccess.Exec(PCreateAccess ); OleUninitialize()
请教有经验的朋友,如果解决创建后的ACCESS数据库对MSysObjects权限问题
[解决办法]
这样试试:
- C/C++ code
vCreateAccess.Exec(PCreateAccess);vCreateAccess.OlePropertyGet("Users", "Admin").OleFunction("SetPermissions", "MSysObjects ", 1, // adPermObjTable, 2, // adAccessSet, 0x10000000L );OleUninitialize();