Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Разглючивание базы / 25 сообщений из 33, страница 1 из 2
15.08.2003, 14:39
    #32237681
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
Есть база. В определенный момент при определенных условиях она выдает не то, что надо. Необходимо отыскать ошибку. Код чужой. Комментариев нет.
Какие бы варианты (последовательность действий) Вы бы посоветовали?
...
Рейтинг: 0 / 0
15.08.2003, 14:49
    #32237693
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
Сам то понял че написал?!
Либо пиши, в какой ситуации что выдает, либо ищи автора...
...
Рейтинг: 0 / 0
15.08.2003, 14:51
    #32237696
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
Она выдаёт не то что надо при каком событии? Нажатии кнопки для вывода результата в другой форме, формировании отчёта и т.п? Если да, то ставим брейкпойнт в начале кода и по шагам, смотрим, когда что-то пошло не так....

Другой способ мне не ведом, ну за исключением привлечения разработчика данной БД:)
...
Рейтинг: 0 / 0
15.08.2003, 14:53
    #32237701
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
2Hummer
у меня эта мысль по короче вышла
...
Рейтинг: 0 / 0
15.08.2003, 16:07
    #32237841
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
Задача этого глючного модуля - получить на основании одних данных таблицу с другими данными. При определенных условиях часть строк, которая должна быть в результирующей таблице, там отсутствует. То есть алгоритм при определенных условиях работает неправильно. Прооцедура полученя результирующей таблицы (без учета хранимых запросов) занимает 20 страниц кода и смотреть ее под отладчиком неудобно, к тому же приходится прыгать в хранимые зпросы, которые нашпигованы друг на друга, и пытаться понять, что и как там делается...
Мне хочется, чтобы кто-то подсказал идею, как на основе этих тестовых строчек, не вошедших в результирующую таблицу, попытаться нащупать то место, где алгоритм сбоит, без подробного разбора всего модуля (на разбор может уйти несколько дней).
...
Рейтинг: 0 / 0
15.08.2003, 16:15
    #32237851
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
Проверить тип данных во всех полях результирующей таблицы и в этих строчках, проверить наличие NULL, разрешение на наличиее NULL в результирующей таблице. Это первое, что в голову пришло....

Вообще странно - куча запросов + 20(!) страниц кода на преобразование одних данных к другим, может, конечно, структура такая навороченная и много действий над данными происходит....

Запросы смотреть всё равно придётся, как мне кажется:)
...
Рейтинг: 0 / 0
15.08.2003, 16:21
    #32237859
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
Hummer, просто писал один талантливый "извращенец" в спешке. Проще, вообще говоря, переписать заново, но нет гарантии, что не посадишь глюк похлеще этого. К тому же есть заплатка, которая "лечит" таблицу (правильно считает), но она работет очень долго...
...
Рейтинг: 0 / 0
15.08.2003, 16:26
    #32237862
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
По-моему проще и быстрее будет сделать свою результирующую таблицу, опираясь на имеющуюся.
Т.к. с чужим кодом (к тому же таких размеров) работать и вдальнейшем будет сложно. А ошибок найтись может сколько угодно (исходя из размеров), и каждый раз перелопачивать весь код, руковдствуясь посоветованной на форуме последовательностью действий было бы тупо...

зы: ты либо не в тот код залез (20 страниц), либо он составлен далеко не оптимальным способом... Вышли мне, если хочешь, посмотреть на это чудо...
...
Рейтинг: 0 / 0
15.08.2003, 16:40
    #32237886
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
Vsevolod V, не могу, коммерческая тайна. Естественно, его (код) надо оптимизировать.
Я вовсе не собирался тут получить конкретные советы как найти конкретную ошибку в конкретном куске. Мне интересно, у кого какая последовательность отлова глюков. В данном случае, поскольку глюк сидит где-то на стыке "запросы-код", да еще и проявляется не всегда, отловить его не просто. В отладчике его задолбаешься ловить. Может эти тестовые данные как-то использовать?
...
Рейтинг: 0 / 0
15.08.2003, 16:47
    #32237900
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
1) Насчет коммерческой тайны я что-то не понял... Коммерческая тайна - есть финансовые документы. Конечно возможно то, что твой проект создается в коммерческих целях (тобиш для продажи). Однако я не уверен, что с серьезным делом начальство решило бы так играть (то один делает, то другой...). Отсюда вывод - проект некоммерческий. И где ж тут тайна??? Тем более, что ты с острова Комодо, о котором я доселе не слашал ничего.

2)Твой вопрос - это типа пойди туда не знаю куда, принеси то, не знаю что.

3)Делай свой код
...
Рейтинг: 0 / 0
15.08.2003, 17:03
    #32237924
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
Vsevolod V,
С п.2 я не согласен. Например, вопрос можно задать так "Какие существуют методы отладки?". Что тут неконкретного? Это что, неактуальный вопрос? Скорее, ответы неконкретные. - Посмотри в отладчике...В какой последовательности, на каких данных...Неужели нет готовых технологий?
...
Рейтинг: 0 / 0
15.08.2003, 17:42
    #32237970
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
1. Надеюсь, что программа работает при одинаковых условиях одинаково. То есть при известных исходных данных всегда воспроизводится одинаковый результат. Если так, то переходим к п.2, иначе выходим.

2. Надеюсь, что хотя бы в общих чертах, без деталей, известен путь, по которому программа получает этот результат. Хотя бы какие-нибудь ключевые точки по дороге, хотя бы какие-нибудь промежуточные запросы или таблицы, содержимое которых можно проверить. Если так, то переходим к п.3, иначе выходим.

3. Предлагаю метод дихотомии, он же метод половинного деления, он же метод льва в пустыне. (Как поймать льва в пустыне? Делим пустыню пополам. Лев окажется только в одной из половин. Делим эту половину опять пополам. И т.д., пока размер участка, где находится лев, не окажется равен нескольким квадратным метрам. Тогда надо будет только подогнать туда машину с клеткой.) Берем какую-нибудь точку примерно в середине пути, описанного в п.2. Проверяем данные: правильные или неправильные. Если правильные, то дальше занимаемся только той половиной пути, которая после этой точки, а если нет, то той, которая перед. Делим опять пополам, и т.д. В конце концов баг будет найден.

При этом, конечно, придется некоторые участки этих 20 страниц кода изучить более детально, однако при описанном подходе изучать придется только самый минимум.
...
Рейтинг: 0 / 0
15.08.2003, 20:42
    #32238087
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
еще метод
1 сохрани данные (файл mdb) сделай его копию . работающего варианта.
2 дождись момента когда начнет глючить - сохрани данные (файл mdb) сделай его копию . не работающего варианта.

3 сравни таблицы двух вариантов - наличие полей с NULL, наличие или отсутствие столбцов, типы данных.

4 сделай выводы

5 придумай решение.
...
Рейтинг: 0 / 0
18.08.2003, 11:14
    #32238705
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
Владимир Саныч,
1. Глюк с данными не связан
2. Код я почти наизусть помню
3. Разделяй и властвуй? Надо попробовать, раз нельзя узнать, на какие куски делить, делить пополам...
вадя,
Как раз на глючной копии данных (данные, после некорректной отработки процедуры) и смотрю...
...
Рейтинг: 0 / 0
18.08.2003, 11:20
    #32238717
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
> 1. Глюк с данными не связан

А мог бы сударь после столь длительного обсуждения рассказать, что мы обсуждаем? Вот же сказано: При определенных условиях часть строк, которая должна быть в результирующей таблице, там отсутствует. Я плохо читаю?

2. Код я почти наизусть помню

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

3. Разделяй и властвуй? Надо попробовать, раз нельзя узнать, на какие куски делить, делить пополам...

Ну, я ведь предлагал только на тот случай, если сударь желает решить проблему...
...
Рейтинг: 0 / 0
18.08.2003, 11:44
    #32238756
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
Владимир Саныч,
"после столь длительного обсуждения"
что-то я никакого длительного обсуждения не видел
"При определенных условиях часть строк, которая должна быть в результирующей таблице, там отсутствует" говоря, что глюк не связан с данными я имел в виду, что, как мне кажется, он не провоцируется определенным видом входных данных, а вызван другими причинами.
Ну и какая мне польза от того, что я помню код (из- за того, что в отладчике его целый день гонял)? Глюк сидит, скорее всего, в какой-то мелочи, на которую я даже внимания не обратил...
...
Рейтинг: 0 / 0
18.08.2003, 11:48
    #32238767
incold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
Глюк сидит, скорее всего, в какой-то мелочи, на которую я даже внимания не обратил...

Вот это, имхо, наиболее близко к истине.
Выводы:
1. На время отложить данную задачу и заняться другой (не менее трудоемкой), после определенного времени вернуться.
2. Показать код другому специалисту, без своих комментариев. (если удасться такого найти )
...
Рейтинг: 0 / 0
18.08.2003, 11:55
    #32238787
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
Алгоритм уже написали, а если запомнили 20 страниц чужого кода наизусть, то наверняка уже в нём и разобрались и есть предположения, почему этот глюк появляется, иначе - какой смысл запоминать код наизусть и утверждать, что глюк с данными не связан?:) Вот с этих предположений и надо начинать.

Ещё просто песня:
К тому же есть заплатка, которая "лечит" таблицу (правильно считает), но она работет очень долго...

А заплатку посмотреть не пробовали????????? Код заплатки открыт, я надеюсь, раз открыт и начальный вариант кода...

Скорее, ответы неконкретные. - Посмотри в отладчике...В какой последовательности, на каких данных...Неужели нет готовых технологий?

Что значит готовые технологии? Написали - смотри на тип данных в этих 20 строчках и на тип данных в каждом поле в итоговой таблице, проверяем разрешение на Null, соответсвие типов. Смотрим запросы в обязательном порядке, а не как в чёрный ящик - что-то сделалось - нет глюка - дети хлопают в ладоши... Изучать надо материал, с которым работаем.

Мля, код показать не могу, запросы смотреть долго, но напишите в каком месте кода смотерть:) Что в итоге хотим получить - решение проблемы в теории - уже получили - если не понятны ответы - проблема их читавшего.
...
Рейтинг: 0 / 0
18.08.2003, 11:59
    #32238794
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
incold,
"На время отложить данную задачу и заняться другой (не менее трудоемкой), после определенного времени вернуться" - совет хороший, я так и сделал :-)
Тут фишка в том, что последний кусок кода содержит много запросов типа
currenddb.execute q1
currenddb.execute q2
currenddb.execute q3
, где q1, q2,q3 - хранимые запросы. Поскольку лазить в хранимые запросы неудобно (был бы код SQL прямо в VBA, как я последнее время практикую, было бы проще), я смутно представляю, что там творится, хоть и знаю, для чего это какой должен быть результат.
...
Рейтинг: 0 / 0
18.08.2003, 12:00
    #32238795
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
Господа, по-моему, продолжение этого топика не имеет смысла!!!

Потому что, как я говорил уже выше:

По-моему проще и быстрее будет сделать свою результирующую таблицу, опираясь на имеющуюся.
Т.к. с чужим кодом (к тому же таких размеров) работать и вдальнейшем будет сложно. А ошибок найтись может сколько угодно (исходя из размеров), и каждый раз перелопачивать весь код, руковдствуясь посоветованной на форуме последовательностью действий было бы тупо...
...
Рейтинг: 0 / 0
18.08.2003, 12:02
    #32238800
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
Hummer, я код специально не запомина, я ж не фокусник-мнемонист :-)
Заплатка работает на том же коде, только не с определенного места, а "с начала"
...
Рейтинг: 0 / 0
18.08.2003, 12:04
    #32238806
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
2Varan
Мне интересно твое мнение по поводу моего предпоследнего поста...
...
Рейтинг: 0 / 0
18.08.2003, 12:06
    #32238813
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
Vsevolod V,
Я благодарен Вам за совет, так и сделаю, если ничего не выйдет с отладкой. Но тут есть один тонкий момент. Вдруг в этом коде есть какие-то тонкости, связанные с бизнес-логикой или еще черт знает с чем, которые при переписывании заново будут упущены? Вдруг я чего-то недопонимаю. Постановки задачи-то нет...
...
Рейтинг: 0 / 0
18.08.2003, 12:08
    #32238820
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
Однако без понимания логики работы кода ты вряд ли сможешь что-либо исправить в нем... Это на точняк...
...
Рейтинг: 0 / 0
18.08.2003, 12:15
    #32238826
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разглючивание базы
Т.е. заплатка 100% не выдаёт эти пресловутые 20 строчек и фактически дублирует основную программу полностью? А основная сбоит периодически? Всё это находится и работает в одной БД?

БЫТЬ ТОГО НЕ МОЖЕТ. Ищите отличие в коде заплатки и программы.

2 Vsevolod V
Моё мнение по-поводу поста о создании своей таблички и переписывании кода - пример, маркетинговая компания - количественные исследования, расчет экономических показателей высокой сложности, исходные данные - несколько таблиц (зависит от специфики исследований). В итоге получаем несколько результирующих таблиц. В таком случае, необходимо достаточно большое количество времени только на освоение алгоритма расчёта показателей и ещё время, на создание своей структуры и написание своей методики расчёта. Зачастую, этого времени просто нет. Это всё к тому, что мне не ведомо, как получается результирующая табличка у автора топика.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Разглючивание базы / 25 сообщений из 33, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]