Разве MS не Получил бы доступ к (.mdb) размеру файла, уменьшают после удаления содержания базы данных?

Это просто очень распространенная проблема вызова «несвязанных» методов . Вы можете передать контекст в качестве опции Promise.promisify , чтобы связать его:

var getNotifications = Promise.promisify(adapter.getNotifications, {context: adapter});

. Кроме того, вам нужно будет .bind() использовать этот метод или вызвать новая функция getNotifications на adapter (используя .call()). Вы также можете использовать Promise.promisifyAll(adapater), а затем просто позвонить adapter.getNotificationsAsync(…).

Обратите внимание, что это все еще не работает. Вы не можете просто создавать обещания в цикле - вам нужно их явно ждать и возвращать обещание от обратного вызова then, иначе только возвращаемое вами значение undefined будет немедленно передано на следующий обратный вызов.

adapter.getUsers().then(function(users) {
    return Promise.all(users.rows.map(function(item){
        var dbUser = "sigalei/" + item.value.name;
        console.log(dbUser);
        return getNotifications(dbUser);
    }));
}).then(function(results) {
    for (var i=0; i

Вместо Promise.all(users.rows.map(…)), в Bluebird вы также можете использовать Promise.map(users.rows, …).

28
задан Fionnuala 11 October 2008 в 23:04
поделиться

4 ответа

Доступ MS не исправляет пространство для записей, пока Вы не уплотнили базу данных.

Это - что-то, что необходимо регулярно делать к базе данных доступа как часть Вашего обслуживание иначе, Вы закончите с некоторыми довольно болезненными проблемами.

можно уплотнить базу данных любой через Доступ MS, UI (Инструменты-> Утилиты Базы данных->
Компактный и База данных Восстановления) Вас может использовать использование командной строки:

msaccess.exe "target database.accdb" /compact 

N.B. Компактный переключатель / должен быть после целевой базы данных

39
ответ дан humanscar 14 October 2019 в 10:38
поделиться

Доступ MS не освобождает пространство, использованное записями даже после того, как они будут удалены. Можно освободить пространство вручную, когда Вы должны или автоматически каждый раз, когда Вы закрываете приложение.

, Чтобы сделать это вручную, используйте утилиту Compact и Repair:

  1. Резервное копирование Ваша база данных, как существует ошибка в Access 2007 , который может удалить Вашу базу данных во время процедуры уплотнения.

  2. при уплотнении многопользовательской (общей) базы данных, которая расположена на сервере или совместно используемой папке, удостоверьтесь, что ни у кого больше нет ее открытый.

  3. В меню Tools, укажите на Утилиты Базы данных, и затем нажмите Compact и Repair Database.

, Чтобы сделать это автоматически, когда Вы закрываете приложение:

  1. Открывают базу данных, что Вы хотите Доступ MS к компактному автоматически.

  2. В меню Tools, нажмите Options, и затем выберите вкладку "Общие".

  3. Выбор Компактное На поле Строгого контроля.

После удаления данных и уплотнения базы данных не удивлены, еще больше ли, чем 100 КБ. Существует определенное количество издержек, которые не могут быть удалены после добавления данных в первый раз.

кроме того, остерегайтесь того AutoNumber, значения полей ведут себя по-другому, чем рекламируемый после процедуры уплотнения: Согласно документации Access 2000 MS, если Вы удаляете записи из конца таблицы, которая имеет поле AutoNumber, уплотняя базу данных, сбрасывает Значение с автонумерацией. Таким образом, Значение с автонумерацией следующей записи, которую Вы добавляете, будет одним большим, чем Значение с автонумерацией последней восстановленной после удаления записи в таблице.

я имею не , нашел, что это имело место: Если Вы имеете 100 Автоматически пронумерованных записей и удаляете последние 50, следующая запись AutoNumber (согласно документации) должна быть пронумерована "51". Но по моему опыту это пронумеровано "101", вместо этого.

19
ответ дан flamingLogos 14 October 2019 в 10:38
поделиться

Первой остановкой, как уже упоминалось, должна быть попытка сжать / восстановить базу данных. Однако вы также можете немного сэкономить размер, создав новую базу данных и импортировав все объекты из старой. Кроме того, преобразование его в MDE должно дать вам больше волос. Как всегда, не играйте с производственной копией. Кроме того, если вы используете MDE, сначала убедитесь, что вы правильно разбили базу данных.

-2
ответ дан 28 November 2019 в 03:00
поделиться

Вы можете уплотнить базу данных из кода, используя JRO. См: http://support.microsoft.com/kb/230501

1
ответ дан 28 November 2019 в 03:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: