Модераторы: Akina
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Access: как программно сжать и восстановить базу, для обнуления счетчика 
:(
    Опции темы
Chyslyvchyk
  Дата 19.10.2004, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 9.5.2004

Репутация: нет
Всего: 5



Есть таблица:
1) Из нее удаляются данные
2) В нее загружаются данные из другой таблицы
Проблема в том, что в этой таблице есть поле "Счетчик", который, зараза, при внесении новых данных считает не сначала, а от последнего значения, что было до удаления данных из таблицы.
Лечиться: пункт меню в Access "Сервис -> Служебные программы -> Сжать и восстановить базу данных".
Нужно программно сделать действие аналогичное пункту меню в Access "Сервис -> Служебные программы -> Сжать и восстановить базу данных".
smile=help


--------------------
Простота - сестра таланта!
PM MAIL   Вверх
Pakshin A. S.
Дата 19.10.2004, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Если работаешь с Delphi, то поможет статейка
http://forum.vingrad.ru/index.php?showtopi...ead=1&hl=access

Предпоследний пост, от Pegas'а...
PM   Вверх
Chyslyvchyk
Дата 19.10.2004, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 9.5.2004

Репутация: нет
Всего: 5



Цитата(Pakshin @ 19.10.2004, 17:26)
Если работаешь с Delphi, то поможет статейка
http://forum.vingrad.ru/index.php?showtopi...ead=1&hl=access

Предпоследний пост, от Pegas'а...

Если б с Делфями - в разделе Дельфей была бы тема опубликована. :D

Microsoft Visual Basic


--------------------
Простота - сестра таланта!
PM MAIL   Вверх
boevik
Дата 19.10.2004, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: нет
Всего: 35



Chyslyvchyk, что используешь DAO или ADO?


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Chyslyvchyk
Дата 19.10.2004, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 9.5.2004

Репутация: нет
Всего: 5



Цитата(boevik @ 19.10.2004, 17:36)
Chyslyvchyk, что используешь DAO или ADO?

Да я в самом Access копошусь, в редакторе Visual Basic.
Вот тута инфы немного, только не знаю, как ее использовать: Сжатие и восстановление


--------------------
Простота - сестра таланта!
PM MAIL   Вверх
boevik
Дата 19.10.2004, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: нет
Всего: 35



Chyslyvchyk, можно воспользоваться командой CompactDatabase, НО ты не сможешь сжать открытую базу т.е. самого себя.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Chyslyvchyk
Дата 20.10.2004, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 9.5.2004

Репутация: нет
Всего: 5



Помогите модифицировать:

CompactDatabase Method Example
This example uses the CompactDatabase method to change the collating order of a database. You cannot use this code in a module belonging to Northwind.mdb.
Код
Sub CompactDatabaseX()
 Dim dbsNorthwind As Database
 Set dbsNorthwind = OpenDatabase("Northwind.mdb")
 ' Show the properties of the original database.
 With dbsNorthwind
    Debug.Print .Name & ", version " & .Version
    Debug.Print "  CollatingOrder = " & .CollatingOrder
    .Close
 End With
 ' Make sure there isn't already a file with the
 ' name of the compacted database.
 If Dir("NwindKorean.mdb") <> "" Then _
    Kill "NwindKorean.mdb"
 ' This statement creates a compact version of the
 ' Northwind database that uses a Korean language
 ' collating order.
 DBEngine.CompactDatabase "Northwind.mdb", _
    "NwindKorean.mdb", dbLangKorean
 Set dbsNorthwind = OpenDatabase("NwindKorean.mdb")
 ' Show the properties of the compacted database.
 With dbsNorthwind
    Debug.Print .Name & ", version " & .Version
    Debug.Print "  CollatingOrder = " & .CollatingOrder
    .Close
 End With
End Sub



--------------------
Простота - сестра таланта!
PM MAIL   Вверх
Chyslyvchyk
Дата 20.10.2004, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 9.5.2004

Репутация: нет
Всего: 5



Обнуление счетчика решилось другим способом:
1) удалить из таблицы все данные
2) выполнить код:
Код
Private Sub Zeroing()
Dim Recs As DAO.Recordset
Set Recs = CurrentDb.OpenRecordset("Имя таблицы", dbOpenDynaset)
With Recs
.AddNew
'поле счетчика
!ID = 0
!Поле1 = "0"
!Поле2 = "0"
!Поле3 = "0"
.Update
.Close
End With
End Sub

3) Опять удалить все из таблицы
Теперь если добавлять данные в таблицу, счетчик начинает считать с 1. Что и требовалось сделать. Ура.


--------------------
Простота - сестра таланта!
PM MAIL   Вверх
Akina
Дата 20.10.2004, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20580
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Chyslyvchyk
Что-то у тебя с базой неладно. Поле уникальный ключ типа счетчик при правильном построении базы должно использоваться только в одном месте - в JOIN для связывания таблиц. Все, более нигде. А для тех целей, которые ты озвучиваешь, правильное решение - введение в БД дополнительного поля и программное его заполнение нужными значениями.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Golden Hands
Дата 23.1.2005, 04:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Золотой
****


Профиль
Группа: Участник Клуба
Сообщений: 2023
Регистрация: 23.1.2005
Где: Екатеринбург

Репутация: нет
Всего: 83



Да че вы мучаетесь с обнулением счетчика?
Копируйте таблицу (выделяете, Копировать - Вставить), удаляете предыдущую, переименовываете (имя как у старой). И - счетчик обнулен.


--------------------
Мы обречены... но только на победу!
Настанет день, и мы построим новый дом.
Внесем в него тепло, что сохранить сумели,
И воскресим все то, что в нас когда-то умерло... © Тень Света
PM MAIL ICQ   Вверх
Chyslyvchyk
Дата 1.3.2005, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 9.5.2004

Репутация: нет
Всего: 5



Цитата(Golden @ 23.1.2005, 04:25)
Да че вы мучаетесь с обнулением счетчика?
Копируйте таблицу (выделяете, Копировать - Вставить), удаляете предыдущую, переименовываете (имя как у старой). И - счетчик обнулен.

Это нужно было сделать программно.


--------------------
Простота - сестра таланта!
PM MAIL   Вверх
Golden Hands
Дата 2.3.2005, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Золотой
****


Профиль
Группа: Участник Клуба
Сообщений: 2023
Регистрация: 23.1.2005
Где: Екатеринбург

Репутация: нет
Всего: 83



Цитата
Это нужно было сделать программно.

Хм, а разве программно нельзя копировать таблицу, переименовать, удалить старую? Потыкаюсь.


--------------------
Мы обречены... но только на победу!
Настанет день, и мы построим новый дом.
Внесем в него тепло, что сохранить сумели,
И воскресим все то, что в нас когда-то умерло... © Тень Света
PM MAIL ICQ   Вверх
Chyslyvchyk
Дата 2.3.2005, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 9.5.2004

Репутация: нет
Всего: 5



Цитата(Golden @ 2.3.2005, 00:32)
Цитата
Это нужно было сделать программно.

Хм, а разве программно нельзя копировать таблицу, переименовать, удалить старую? Потыкаюсь.

Проблема в том, что эта таблица имела связные поля с другой таблицей. И при ее удаление терялась связь. В то время единственный выход, который был найден - очистить и перезаписать.

Это сообщение отредактировал(а) Chyslyvchyk - 2.3.2005, 13:49


--------------------
Простота - сестра таланта!
PM MAIL   Вверх
Golden Hands
Дата 7.3.2005, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Золотой
****


Профиль
Группа: Участник Клуба
Сообщений: 2023
Регистрация: 23.1.2005
Где: Екатеринбург

Репутация: нет
Всего: 83



Да, связи таблицы теряются. smile


--------------------
Мы обречены... но только на победу!
Настанет день, и мы построим новый дом.
Внесем в него тепло, что сохранить сумели,
И воскресим все то, что в нас когда-то умерло... © Тень Света
PM MAIL ICQ   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0843 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.