У меня есть файл JScript, который вызывается cscript
, и этот скрипт является доказательством концепции, которое создает новую базу данных Access 2007, импортирует набор модулей VBA в базу данных, а затем запускает подпрограмму из импортированных модулей.«Unspecified Error» 80004005 при создании новой базы данных Access, только на другой рабочей станции
Этот скрипт работает безупречно на моем собственном компьютере. У меня установлен 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
s без везения. Что может быть здесь проблемой?
У вас нет доступа для записи, где находится «basePath». –
Я тоже думал об этом. НО, мы копируем папку на свои рабочие столы и, когда папка скопирована, текущий пользователь становится владельцем папки и файлов внутри. Они могут изменять сценарии и создавать новые файлы с помощью параметра «Новый» в контекстном меню в скопированной папке, поэтому у нас есть доступ на запись к «basePath». –