Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991

Как найти дефектные объекты в БД аксесс 2003?

04.11.2015, 14:42. Показов 2874. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Форумчане, доброго всем здоровья!

есть подозрение, что в БД (или только в интерфейсе) есть дефектные объекты ( формы, запросы и т.п.)
Как их обнаружить?
если последовательно удалять объекты и делать "Сжатие-восстановление"- по изменению времени данной операции( уменьшению) можно выявить дефектный объект ?
Каким либо образом еще?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.11.2015, 14:42
Ответы с готовыми решениями:

Защита БД Аксесс 2003 от несанкционированного доступа
Доброго времени суток!!! Нужен совет!!!! Структура БД следующая: База Base находится на сервере в папке (директории) А. Эталонный...

Кодировка текста в таблицах Аксесс 2003
Форумчане, доброго времени суток! Проверяю, в какой кодировку хранятся текстовые данные в таблице Аксесс 2003 (Декодером онлайн студии...

Автоматизация переименование объектов Аксесс 2003
Форумчане, доброго времени суток! Надумал переименовать наименование объектов: (таблиц, форм, запросов,отчетов), полей в таблицах с...

40
 Аватар для VinniPuh
9147 / 6179 / 594
Регистрация: 27.03.2013
Сообщений: 20,049
04.11.2015, 19:22
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от mobile Посмотреть сообщение
...а логику программиста конечно никак не проверить....
Спасибо, именно это я и хотел уточнить, а то мало ли чЁ, может пока я спал. техникаа и до этого тоже уже дошла?
0
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991
04.11.2015, 23:55  [ТС]
mobile,
Цитата Сообщение от mobile Посмотреть сообщение
Надо удалять индексы.
Все индексы во всех таблицах? (в каждой таблице , как минимум 1 индексируемое поле- счетчик.Есть еще в таблицах простые индексы и есть немного составных)
Или убрать индексы ( Составные (и простые ?)) в подозрительных таблицах, и потом, соответственно, их заново воссоздать в новом проекте? Посмотреть что получится?
0
 Аватар для Волшебник 307
1396 / 331 / 45
Регистрация: 16.04.2013
Сообщений: 786
Записей в блоге: 2
05.11.2015, 06:23
ankan,
Наверно есть ещё незакрытые объекты,
или такие команды присутствуют
-Казнить нельзя помиловать-

И Акс виснет, не зная что предпринять,
Ведь запятая в команде отсутствует.
-----------------------------------------
1
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
05.11.2015, 10:41
Цитата Сообщение от mobile Посмотреть сообщение
Выполните процедуру SaveLoadTxt. Но конечно, сначала сделав копию БД. LoadFromText может удалить испорченную форму или отчет
Не вполне поняла, как работает это колдунство, но после него ощущение такое, что и база летает, и формы в режиме конструктора намного быстрее сохраняются.
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
05.11.2015, 11:16
texnik-san, в формах после многочисленных редакций скапливается много мусора замедляющего работу. И иногда даже задающего ошибочные действия или сведения. Метод SaveAsText считывает только актуальные значения свойств и методов, проверяет их валидность и записывает в тестовый файл. Метод LoadFromText считывает из текстового файла и заново создает форму уже по правильным значениям и без мусора. SaveAsText и LoadFromText совершают примерно те же действия, что и импорт всего в новую чистую БД. Но, как мне кажется, хотя это и не проверено, SaveAsText и LoadFromText работают надежнее чем импорт в новую.

Имеет смысл время от времени запускать эти методы и очищать формы/отчеты. Но, конечно, создав сначала копию боевой базы, поскольку при некоторых ошибках LoadFromText может удалить испорченную форму, не сделав новую вместо нее.
0
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991
05.11.2015, 13:11  [ТС]
mobile, Прогонял процедуру
Цитата Сообщение от texnik-san Посмотреть сообщение
Выполните процедуру SaveLoadTxt. Но конечно, сначала сделав копию БД. LoadFromText может удалить испорченную форму или отчет
1. на Глючном интерфейсе (размер115 МВ)- процесс не завершился, завис, закрыл проект диспетчером задач.
2.На здоровом? интерфейсе (импортированном в новый проект-размер 83МВ)- процесс пошел, ошибок не выявлено. Что интересно - объем после 2 прогонов сократился примерно на 2,5 МВ т.е
Цитата Сообщение от mobile Посмотреть сообщение
Но, как мне кажется, хотя это и не проверено, SaveAsText и LoadFromText работают надежнее чем импорт в новую.
- наверно, правда.
Интерфейс работает пошустрее, но при попытке сжать и восстановить ( после изменения связей)- завис.
Буду экспериментировать с индексами таблиц.
0
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991
05.11.2015, 13:51  [ТС]
shanemac51, прогнал через архиватор таблицы, с акцентом на индексы- в некоторых таблицах есть странная абракадабра. Возможно это и есть дефекты таблиц?

Во вложении- результат архивации таблицы (ее я подозреваю в вероломстве!) - файл .rtf
И в файле .mdb сама эта таблица
Вложения
Тип файла: rar Индексы.rar (252.5 Кб, 7 просмотров)
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12511 / 5085 / 814
Регистрация: 07.08.2010
Сообщений: 14,961
Записей в блоге: 4
05.11.2015, 14:11
больше всего мне не понравились строчки
{4989CA6C-CBA0-49F2-86EF- 1
Код_tblСпособ_Изделия_Зак По возрастанию

{A3F7AA1B-F1EE-43ED-822E- 1
Код_tblГруппа_Сложности_Р По возрастанию

обрезыши какие-то
---------
и в отчете дюжина индексов, а в таблице только 2 ---или вы удалили остальные
1
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991
05.11.2015, 14:23  [ТС]
shanemac51, Наименования полей длинные, просто не поместились в отчете архивариуса и, соответственно, в файле .rtf
По поводу индексов- таблица и отчет во вложении ( предыдущего поста) что есть -то есть. Как получилось?
Пробовал пересобирать поле таблицы (в отчете архивариуса которого абракадабра)- абракадабра уходит.
Прикладываю скрин с настройками (параметрами) архивариуса- может что не так настроил?
Миниатюры
Как найти дефектные объекты в БД аксесс 2003?  
0
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991
05.11.2015, 14:40  [ТС]
Уточнение- эти отчеты были с глючной БД( таблиц)
Из Здоровой ? БД ( импортированной в новый файл) этой ерунды нет- индексы, как и положено-в 2 полях.
Великое дело импорт!

Добавлено через 6 минут
После импорта в новый проект все лишние или странные записи в индексах таблиц ушли (во всех таблицах).
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12511 / 5085 / 814
Регистрация: 07.08.2010
Сообщений: 14,961
Записей в блоге: 4
05.11.2015, 14:41
у вас же первый индекс дал нормальное имя, не обрезал
обрезаны 2-3 имена

---------параметры нормально
это в 2007-10 архивариус врет --обрезает мемо-поля у запросов
в 2003 он кажется работал нормально(не замечала по крайней мере)
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
05.11.2015, 15:00
ankan, нельзя столько индексов в одной таблице. Не говоря уже о том, что это просто опасно - индексы от частого тасования могут запортиться, будет ужасное замедление в работе. Запрос будет дольше обрабатывать индексы, чем собственно данные. Даже 5 индексов в одной таблице уже немало, а у Вас их 18 !!!. Оставьте только те по которым Вы часто накладываете условия в запросах. Остальные надо удалять.
1
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991
05.11.2015, 15:11  [ТС]
mobile, 18 индексов в глючной БД, в экспортированной в новый проект (Здоровой) индексов, как правило 1 ( поле счетчик) -максимум 2-3 в таблице.+ иногда - составные индексы.
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
05.11.2015, 15:15
Вы можете проверить какие записи исчезли или изменились с помощью процедуры. Запишите код в общий модуль и запустите процедуру (поместить курсор в в любое место внутри процедуры и нажать F5). В процессе создается новая таблица tblErr и сравнивается с исходной. Ошибочные записи по идее не должны пройти в tblErr (?)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Sub tblto()
    Dim s, i, j, k, r, p, d
    Dim db As DAO.Database, rst As DAO.Recordset, rNew As DAO.Recordset
    Dim fld As Field, fNew As Field
    Set db = CurrentDb
    
    On Error Resume Next
        db.Execute "drop table tblErr"
    On Error GoTo 0
    db.Execute "SELECT tblТОиР.* into tblErr FROM tblТОиР"
    
    Set rst = db.OpenRecordset("select * from tblТОиР ")
    Set rNew = db.OpenRecordset("select * from tblErr")
    Do Until rst.EOF
        r = rst!Код_tblТОиР
        rNew.FindFirst "Код_tblТОиР=" & r
        If rNew.NoMatch Then
            Debug.Print "Не найдена запись с Код_tblТОиР = " & r
        Else
            For Each fld In rst.Fields
                j = fld.Name
                p = Nz(rst(j), "###")
                d = Nz(rNew(j), "###")
                If p <> d Then
                    Debug.Print "В записи с кодом " & r & " в поле [" & j & "] разница:", p, d
                End If
            Next
        End If
        rst.MoveNext
    Loop
    MsgBox "Проверка закончена"
End Sub
1
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991
05.11.2015, 15:35  [ТС]
mobile, взял Здоровую? БД, запустил процедуру
Кликните здесь для просмотра всего текста
Цитата Сообщение от mobile Посмотреть сообщение
Visual Basic
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Sub tblto()
 Dim s, i, j, k, r, p, d
 Dim db As DAO.Database, rst As DAO.Recordset, rNew As DAO.Recordset
 Dim fld As Field, fNew As Field
 Set db = CurrentDb
On Error Resume Next
 db.Execute "drop table tblErr"
 On Error GoTo 0
 db.Execute "SELECT tblТОиР.* into tblErr FROM tblТОиР"
Set rst = db.OpenRecordset("select * from tblТОиР ")
 Set rNew = db.OpenRecordset("select * from tblErr")
 Do Until rst.EOF
 r = rst!Код_tblТОиР
 rNew.FindFirst "Код_tblТОиР=" & r
 If rNew.NoMatch Then
 Debug.Print "Не найдена запись с Код_tblТОиР = " & r
 Else
 For Each fld In rst.Fields
 j = fld.Name
 p = Nz(rst(j), "###")
 d = Nz(rNew(j), "###")
 If p <> d Then
 Debug.Print "В записи с кодом " & r & " в поле [" & j & "] разница:", p, d
 End If
 Next
 End If
 rst.MoveNext
 Loop
 MsgBox "Проверка закончена"
End Sub


посмотрел таблицу tblErr - в нее вошли ВСЕ записи таблицы tblТОиР.
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
05.11.2015, 15:56
Цитата Сообщение от ankan Посмотреть сообщение
взял Здоровую? БД, запустил процедуру. посмотрел таблицу tblErr - в нее вошли ВСЕ записи таблицы tblТОиР.
ankan, разговор НЕ о "здоровой! А именно о "больной! Вполне возможно, что при удалении индексов и импорте в чистую базу запорченной таблицы, какие-то записи могли потеряться. Сравнивать надо именно с "больной"
1
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991
05.11.2015, 16:20  [ТС]
mobile, Проверил на Больной БД- количество записей tblErr совпало с количеством записей tblErr Здоровой
0
46 / 31 / 1
Регистрация: 28.09.2012
Сообщений: 991
07.11.2015, 00:18  [ТС]
mobile, хочу посоветоваться по способу создания таблиц.
При создании новой таблицы я копирую поля ( всю строку из таблицы целиком, о всеми свойствами и полями подстановки) или несколько полей разу и вставляю в создаваемую таблицу.
Нет ли здесь причины в дальнейших зависаниях БД, странных индексах (при обработке таблицы архивариусом- описание некоторых полей ( индексов) выглядит как непонятный набор символов) - пример в предыдущих постах.
?????
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
07.11.2015, 00:48
Цитата Сообщение от ankan Посмотреть сообщение
При создании новой таблицы я копирую поля ( всю строку из таблицы целиком, о всеми свойствами и полями подстановки) или несколько полей разу и вставляю в создаваемую таблицу.
Сама идея многократного создания таблиц мне непонятна. И даже чужда. В правильно спроектированной БД практически не должно быть создания таблиц. Ну кроме временных, вспомогательных. Зачем эти таблицы? Какая в них надобность?

Цитата Сообщение от ankan Посмотреть сообщение
при обработке таблицы архивариусом- описание некоторых полей ( индексов) выглядит как непонятный набор символов
Здесь ничего странного. Это ГУИДы, специальный номер который по уверениям Microsoft никогда не повторяется. Но в принципе, конечно можно самому зайти в конструктор и переименовать индекс. По крайне мере хуже не будет. Будет понятней. Но я еще раз призываю Вас не делать такое огромное количество индексов. Вот именно это вполне может быть источником ошибок и медленной работы.
1
 Аватар для VinniPuh
9147 / 6179 / 594
Регистрация: 27.03.2013
Сообщений: 20,049
07.11.2015, 01:19
Цитата Сообщение от mobile Посмотреть сообщение
...Сама идея многократного создания таблиц мне непонятна. И даже чужда....
АБББсолютно согласен, они ведь, типа - таблицы типа только образно по типу только должны разниться. а не по названию.
Единственно чего допускаю (Юридические и Физические лица по количеству полей могут различаться), да и то наверное есть что то в процедурах, типа изменения - Надписи в форме или даже скрытию или отображению полей?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.11.2015, 01:19

Восстановление корректной работы БД Аксесс-2003
Форумчане! БД стала работать некорректно? т.е подвисать при сохранении изменений в режиме конструктора, при попытке напечатать отчет -...

Формирование ШТРИХКОДОВ в БД Аксесс 2003 при выпуске изделия
Форумчане, доброго времени суток! Нужна Ваша помощь!!!! Возникла необходимость генерировать штрихкод изделия в базе данных. ...

Открытие через Аксесс 2003 программы в ее родном приложении
Фрумчане, доброго времени суток! Возник вопрос по открытию программы из Аксесс. Поискал по форуму в теме...

Уменьшение межсточных интервалов текстового поля в отчете Аксесс-2003
Форумчане, доброго времени суток! Возник вопрос: Как уменьшить междустрочный интервал одного текстового поля в отчете Аксесс-2003 ?...

Открытие файла по сылке через Аксесс 2003 , таблицы -в mySQL
Форумчане, доброго времени суток! Перенес таблицы с Аксесс 2003 на MySQL. Гиперссылки перестали работать. Вновь введенные гиперссылки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru