"未指定的错误" 80004005创建新的Access数据库时,仅在另一个工作站上

时间:2015-06-13 18:12:59

标签: jscript office-automation wsh

我所拥有的是由cscript调用的JScript文件,此脚本是一个概念验证,它创建一个新的Access 2007格式数据库,将一组VBA模块导入数据库,以及然后从导入的模块中运行子程序。

这个脚本可以在我自己的计算机上完美运行。我安装了Office 2013。但是,我把这个剧本带到了一个同事的机器上让他尝试运行它。在他的机器上,我们得到的错误类似于createdb.js (22, 1): Unspecified error,错误代码是80004005.我的代码如下:

'use strict';

/**
 * AcNewDatabaseFormat Enumeration
 * Used with the NewCurrentDatabase method to specify the database format of the newly created database.
 */
var acModule = 5,
    dbText = 10,
    acNewDatabaseFormat = {
        UserDefault: 0,
        Access2000: 9,
        Access2002: 10,
        Access12: 12
    };

var fs = new ActiveXObject('Scripting.FileSystemObject');
var access = new ActiveXObject('Access.Application');
var basePath = fs.GetParentFolderName(WScript.ScriptFullName);
var db, prop, vcsFolder, fCur, module;

//Create DB and set up some superficial things.
access.NewCurrentDatabase(basePath + '\\ImportTest.accdb', acNewDatabaseFormat.Access12, null, "", "");
//access.OpenCurrentDatabase(basePath + '\\ImportTest.accdb');
db = access.CurrentDb();
prop = db.CreateProperty('AppTitle', dbText, 'My New Database');
db.Properties.Append(prop);
prop = db.CreateProperty('StartUpForm', dbText, 'Main Form');
db.Properties.Append(prop);
db.Properties('UseMDIMode') = 1;

//Add MSAccess-VCS modules
vcsFolder = fs.GetFolder(basePath + '\\MSAccess-VCS');
fCur = new Enumerator(vcsFolder.files);
for (; !fCur.atEnd(); fCur.moveNext()) {
    module = fCur.item().Name.replace('.bas', '');
    access.LoadFromText(acModule, module, fCur.item());
}

access.Run('ImportAllSource');
access.Quit();

第22行,第1个字符为access.NewCurrentDatabase(basePath + '\\ImportTest.accdb', acNewDatabaseFormat.Access12, null, "", "");。 Office(和Access!)2007安装在他的机器上。我们尝试了其他AcNewDatabaseFormat没有运气。这可能是什么问题?

1 个答案:

答案 0 :(得分:1)

由于您未使用任何可选参数,请将其关闭:

access.NewCurrentDatabase(basePath + '\\ImportTest.accdb', acNewDatabaseFormat.Access12);

如果您希望稍后在参数列表中使用其他参数,则只需为可选参数指定值。