|
|
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
Есть база. В определенный момент при определенных условиях она выдает не то, что надо. Необходимо отыскать ошибку. Код чужой. Комментариев нет. Какие бы варианты (последовательность действий) Вы бы посоветовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2003, 14:39 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
Сам то понял че написал?! Либо пиши, в какой ситуации что выдает, либо ищи автора... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2003, 14:49 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
Она выдаёт не то что надо при каком событии? Нажатии кнопки для вывода результата в другой форме, формировании отчёта и т.п? Если да, то ставим брейкпойнт в начале кода и по шагам, смотрим, когда что-то пошло не так.... Другой способ мне не ведом, ну за исключением привлечения разработчика данной БД:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2003, 14:51 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
2Hummer у меня эта мысль по короче вышла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2003, 14:53 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
Задача этого глючного модуля - получить на основании одних данных таблицу с другими данными. При определенных условиях часть строк, которая должна быть в результирующей таблице, там отсутствует. То есть алгоритм при определенных условиях работает неправильно. Прооцедура полученя результирующей таблицы (без учета хранимых запросов) занимает 20 страниц кода и смотреть ее под отладчиком неудобно, к тому же приходится прыгать в хранимые зпросы, которые нашпигованы друг на друга, и пытаться понять, что и как там делается... Мне хочется, чтобы кто-то подсказал идею, как на основе этих тестовых строчек, не вошедших в результирующую таблицу, попытаться нащупать то место, где алгоритм сбоит, без подробного разбора всего модуля (на разбор может уйти несколько дней). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2003, 16:07 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
Проверить тип данных во всех полях результирующей таблицы и в этих строчках, проверить наличие NULL, разрешение на наличиее NULL в результирующей таблице. Это первое, что в голову пришло.... Вообще странно - куча запросов + 20(!) страниц кода на преобразование одних данных к другим, может, конечно, структура такая навороченная и много действий над данными происходит.... Запросы смотреть всё равно придётся, как мне кажется:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2003, 16:15 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
Hummer, просто писал один талантливый "извращенец" в спешке. Проще, вообще говоря, переписать заново, но нет гарантии, что не посадишь глюк похлеще этого. К тому же есть заплатка, которая "лечит" таблицу (правильно считает), но она работет очень долго... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2003, 16:21 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
По-моему проще и быстрее будет сделать свою результирующую таблицу, опираясь на имеющуюся. Т.к. с чужим кодом (к тому же таких размеров) работать и вдальнейшем будет сложно. А ошибок найтись может сколько угодно (исходя из размеров), и каждый раз перелопачивать весь код, руковдствуясь посоветованной на форуме последовательностью действий было бы тупо... зы: ты либо не в тот код залез (20 страниц), либо он составлен далеко не оптимальным способом... Вышли мне, если хочешь, посмотреть на это чудо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2003, 16:26 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
Vsevolod V, не могу, коммерческая тайна. Естественно, его (код) надо оптимизировать. Я вовсе не собирался тут получить конкретные советы как найти конкретную ошибку в конкретном куске. Мне интересно, у кого какая последовательность отлова глюков. В данном случае, поскольку глюк сидит где-то на стыке "запросы-код", да еще и проявляется не всегда, отловить его не просто. В отладчике его задолбаешься ловить. Может эти тестовые данные как-то использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2003, 16:40 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
1) Насчет коммерческой тайны я что-то не понял... Коммерческая тайна - есть финансовые документы. Конечно возможно то, что твой проект создается в коммерческих целях (тобиш для продажи). Однако я не уверен, что с серьезным делом начальство решило бы так играть (то один делает, то другой...). Отсюда вывод - проект некоммерческий. И где ж тут тайна??? Тем более, что ты с острова Комодо, о котором я доселе не слашал ничего. 2)Твой вопрос - это типа пойди туда не знаю куда, принеси то, не знаю что. 3)Делай свой код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2003, 16:47 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
Vsevolod V, С п.2 я не согласен. Например, вопрос можно задать так "Какие существуют методы отладки?". Что тут неконкретного? Это что, неактуальный вопрос? Скорее, ответы неконкретные. - Посмотри в отладчике...В какой последовательности, на каких данных...Неужели нет готовых технологий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2003, 17:03 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
1. Надеюсь, что программа работает при одинаковых условиях одинаково. То есть при известных исходных данных всегда воспроизводится одинаковый результат. Если так, то переходим к п.2, иначе выходим. 2. Надеюсь, что хотя бы в общих чертах, без деталей, известен путь, по которому программа получает этот результат. Хотя бы какие-нибудь ключевые точки по дороге, хотя бы какие-нибудь промежуточные запросы или таблицы, содержимое которых можно проверить. Если так, то переходим к п.3, иначе выходим. 3. Предлагаю метод дихотомии, он же метод половинного деления, он же метод льва в пустыне. (Как поймать льва в пустыне? Делим пустыню пополам. Лев окажется только в одной из половин. Делим эту половину опять пополам. И т.д., пока размер участка, где находится лев, не окажется равен нескольким квадратным метрам. Тогда надо будет только подогнать туда машину с клеткой.) Берем какую-нибудь точку примерно в середине пути, описанного в п.2. Проверяем данные: правильные или неправильные. Если правильные, то дальше занимаемся только той половиной пути, которая после этой точки, а если нет, то той, которая перед. Делим опять пополам, и т.д. В конце концов баг будет найден. При этом, конечно, придется некоторые участки этих 20 страниц кода изучить более детально, однако при описанном подходе изучать придется только самый минимум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2003, 17:42 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
еще метод 1 сохрани данные (файл mdb) сделай его копию . работающего варианта. 2 дождись момента когда начнет глючить - сохрани данные (файл mdb) сделай его копию . не работающего варианта. 3 сравни таблицы двух вариантов - наличие полей с NULL, наличие или отсутствие столбцов, типы данных. 4 сделай выводы 5 придумай решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2003, 20:42 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
Владимир Саныч, 1. Глюк с данными не связан 2. Код я почти наизусть помню 3. Разделяй и властвуй? Надо попробовать, раз нельзя узнать, на какие куски делить, делить пополам... вадя, Как раз на глючной копии данных (данные, после некорректной отработки процедуры) и смотрю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 11:14 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
> 1. Глюк с данными не связан А мог бы сударь после столь длительного обсуждения рассказать, что мы обсуждаем? Вот же сказано: При определенных условиях часть строк, которая должна быть в результирующей таблице, там отсутствует. Я плохо читаю? 2. Код я почти наизусть помню Преклоняюсь перед человеком, который может запомнить 20 страниц чужого кода. А в чем тогда проблема? 3. Разделяй и властвуй? Надо попробовать, раз нельзя узнать, на какие куски делить, делить пополам... Ну, я ведь предлагал только на тот случай, если сударь желает решить проблему... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 11:20 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
Владимир Саныч, "после столь длительного обсуждения" что-то я никакого длительного обсуждения не видел "При определенных условиях часть строк, которая должна быть в результирующей таблице, там отсутствует" говоря, что глюк не связан с данными я имел в виду, что, как мне кажется, он не провоцируется определенным видом входных данных, а вызван другими причинами. Ну и какая мне польза от того, что я помню код (из- за того, что в отладчике его целый день гонял)? Глюк сидит, скорее всего, в какой-то мелочи, на которую я даже внимания не обратил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 11:44 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
Глюк сидит, скорее всего, в какой-то мелочи, на которую я даже внимания не обратил... Вот это, имхо, наиболее близко к истине. Выводы: 1. На время отложить данную задачу и заняться другой (не менее трудоемкой), после определенного времени вернуться. 2. Показать код другому специалисту, без своих комментариев. (если удасться такого найти ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 11:48 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
Алгоритм уже написали, а если запомнили 20 страниц чужого кода наизусть, то наверняка уже в нём и разобрались и есть предположения, почему этот глюк появляется, иначе - какой смысл запоминать код наизусть и утверждать, что глюк с данными не связан?:) Вот с этих предположений и надо начинать. Ещё просто песня: К тому же есть заплатка, которая "лечит" таблицу (правильно считает), но она работет очень долго... А заплатку посмотреть не пробовали????????? Код заплатки открыт, я надеюсь, раз открыт и начальный вариант кода... Скорее, ответы неконкретные. - Посмотри в отладчике...В какой последовательности, на каких данных...Неужели нет готовых технологий? Что значит готовые технологии? Написали - смотри на тип данных в этих 20 строчках и на тип данных в каждом поле в итоговой таблице, проверяем разрешение на Null, соответсвие типов. Смотрим запросы в обязательном порядке, а не как в чёрный ящик - что-то сделалось - нет глюка - дети хлопают в ладоши... Изучать надо материал, с которым работаем. Мля, код показать не могу, запросы смотреть долго, но напишите в каком месте кода смотерть:) Что в итоге хотим получить - решение проблемы в теории - уже получили - если не понятны ответы - проблема их читавшего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 11:55 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
incold, "На время отложить данную задачу и заняться другой (не менее трудоемкой), после определенного времени вернуться" - совет хороший, я так и сделал :-) Тут фишка в том, что последний кусок кода содержит много запросов типа currenddb.execute q1 currenddb.execute q2 currenddb.execute q3 , где q1, q2,q3 - хранимые запросы. Поскольку лазить в хранимые запросы неудобно (был бы код SQL прямо в VBA, как я последнее время практикую, было бы проще), я смутно представляю, что там творится, хоть и знаю, для чего это какой должен быть результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 11:59 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
Господа, по-моему, продолжение этого топика не имеет смысла!!! Потому что, как я говорил уже выше: По-моему проще и быстрее будет сделать свою результирующую таблицу, опираясь на имеющуюся. Т.к. с чужим кодом (к тому же таких размеров) работать и вдальнейшем будет сложно. А ошибок найтись может сколько угодно (исходя из размеров), и каждый раз перелопачивать весь код, руковдствуясь посоветованной на форуме последовательностью действий было бы тупо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 12:00 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
Hummer, я код специально не запомина, я ж не фокусник-мнемонист :-) Заплатка работает на том же коде, только не с определенного места, а "с начала" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 12:02 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
2Varan Мне интересно твое мнение по поводу моего предпоследнего поста... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 12:04 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
Vsevolod V, Я благодарен Вам за совет, так и сделаю, если ничего не выйдет с отладкой. Но тут есть один тонкий момент. Вдруг в этом коде есть какие-то тонкости, связанные с бизнес-логикой или еще черт знает с чем, которые при переписывании заново будут упущены? Вдруг я чего-то недопонимаю. Постановки задачи-то нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 12:06 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
Однако без понимания логики работы кода ты вряд ли сможешь что-либо исправить в нем... Это на точняк... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 12:08 |
|
||
|
Разглючивание базы
|
|||
|---|---|---|---|
|
#18+
Т.е. заплатка 100% не выдаёт эти пресловутые 20 строчек и фактически дублирует основную программу полностью? А основная сбоит периодически? Всё это находится и работает в одной БД? БЫТЬ ТОГО НЕ МОЖЕТ. Ищите отличие в коде заплатки и программы. 2 Vsevolod V Моё мнение по-поводу поста о создании своей таблички и переписывании кода - пример, маркетинговая компания - количественные исследования, расчет экономических показателей высокой сложности, исходные данные - несколько таблиц (зависит от специфики исследований). В итоге получаем несколько результирующих таблиц. В таком случае, необходимо достаточно большое количество времени только на освоение алгоритма расчёта показателей и ещё время, на создание своей структуры и написание своей методики расчёта. Зачастую, этого времени просто нет. Это всё к тому, что мне не ведомо, как получается результирующая табличка у автора топика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2003, 12:15 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32237701&tid=1679875]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 197ms |
| total: | 373ms |

| 0 / 0 |
