Как отловить ошибку переполнения в DBF? #147922


#0 by ТестПопытка
Добрый день! может кто подскажет быстрый способ найти в какой из таблиц базы и в каком поле происходит переполнение числового поля. база не 1С, на dbf.. штук 30 таблиц, много полей.. где-то происходит переполнение ошибка "Data weight error", или может подскажете вьювер какой-нибудь, где переполнение сразу заметно (может красным выделяется).. база собака даже таблицу не показывает, в которой ошибка..
#1 by smaharbA
А переполнение это как? это когда "выпрыгивает" ?
#2 by skunk
у клипера там и есть утилитка... вроде как и чекит базы позволяет делать... хотя могу врать
#3 by ТестПопытка
в поле число не влазит.. и выпрыгивает.. самое противное, что даже непонятно на каком этапе.. где ошибку ловить?
#4 by ТестПопытка
привет! :) как называется утилитка, не помнишь?
#5 by skunk
привет... что с dbu ... искай так *dbu*.exe
#6 by skunk
или dbf ... балин не помню...
#7 by smaharbA
Неможет в поле число нелезть, только если в момент записи...
#8 by smaharbA
правильно в написал dbu*.exe
#9 by ТестПопытка
щас позырю..
#10 by ТестПопытка
так и не влазит, то есть записать не может куда-то..
#11 by skunk
да скорее всего какие то итоги сохраняет... а они оказались на порядок больше, чем расчитывали девелоперы...
#12 by skunk
+11 тогда утилитка это поможет ... но надо знать конкретно какое поле и насколько раздвигать... ихмо звони девелоперам...
#13 by smaharbA
А не прощели плюнуть, и все чехом поля числовые во всех базах расширить (ктомуж не 1С, наверняка нет "привязки" к размеру поля), можно и фоксом каким сразу во всех...
#14 by ТестПопытка
девелоперы давно сказали привет.. вот я и хочу найти какое поле раздвигать.. лень, может проще найти где?
#15 by ТестПопытка
как одним чохом все поля расширить?
#16 by skunk
если они все разные то могет не взлеть... хотя я не чайник... на клипере не плавал
#17 by smaharbA
Дак в любом фоксе, да и из 1С можешь разом во всех раздвинуть...Написать будет быстрее наверное...
#18 by ТестПопытка
прости не догоняю.. как одним разом раздвинуть ВСЕ числовые поля в 30 таблицах?
#19 by smaharbA
Счас напишу, есть 1С или фокс?
#20 by ТестПопытка
спасибо заранее.. просто идею подскажи, на 1С напишу.. фокс есть. циклом по количество полей раздигать поля?
#21 by smaharbA
Да, просче на фоксе конечно...
#22 by smaharbA
+ если файлы заранее неизвестны но лежат в одной "корневой" дирректории, а дальше пусть и в поддирректориях способов много получения их путей и имен...
#23 by skunk
открываешь дбв... смотришь есть ли там поля типа number... если есть получаешь его длину... полученную длину увеличиваешь на нужное кол-во разрядов... савишь...
#24 by GrayT
А на чем прога писана. Вопрос возник с того, что вроде переполнение в числовом всегда как numeric overwlow отображалось
#25 by skunk
клиппер...
#26 by GrayT
Он так писал field numeric overflow
#27 by prochor
народ! пургу не гоните! легче поля в Dbu вручную расширить! а менять структуру ДБФ нельзя!!! 1) нужно создать пустой дбф с нужной структурой 2) переписать в него имеющийся 3) переименовать новый ДБФ! 30 баз он может сделать минут за 30-40, написать программу, отладить её и т.д...
#28 by skunk
я конечно на чайнике не плавал... но когда смотрел... нет нет была не обходимость... то там была команда связанная с изменением структуру базы...
#29 by prochor
и потом, насколько я помню, есть ограничение на размер числовых полей! так что, ситуация не тривиальна, мне однажды пришлось поле разбивать на два
#30 by smaharbA
Какую пургу, что код выложить ? И какэто нельзя менять структуру, ты это где вычитал?
#31 by ТестПопытка
ну так пишет.. не я придумывал.. даже код ошибки скажу 1201. по-моему ты прав.. только смотри: написать прогу, которая будет расширять по принципу: 1)загоняю всю дбф в ТЗ 2)расширяю поля 3)записать ТЗ в дбф.. все равно так вроде правильней.. блин как муторно.. подскажите хороший вьювер, таблицы не большие, проще руками найти..
#32 by smaharbA
Ограничение 20 + точка и после запятой 19
#33 by vega2005
В Norton Commander для DOS встроеная утилита DBFView (на F3) в не можно сделать поиск чего нибудь вроде "****" там поиск идет по всем полям сразу
#34 by ТестПопытка
вот сижу и думаю.. может правда не число? :))) GrayT, а не помнишь что он про строки писал? хотя где там переполнятся.. не прокатит.. в этом поле ошибка.. я им и смотрю, только найти не могу..
#35 by сиб
Поля раздвигать опасно, могут экранные формы покривиться, к тому же может и не помочь, например если переполнение из-за ошибочного деления на 0.
#36 by ТестПопытка
покривятся, я знаю.. лишь бы считал правильно.. не принципиально из-за чего.. Где? тогда я хотя бы знал куда в исходных данных рыть..
#37 by сиб
Не знаю как клиппер, а фокс в таких случаях в поле оставляет *******, их и ищи
#38 by GrayT
Если память не изменяет, то строки тупо обрезались. Вообще то я еще на Клиппере-87 программил, ошибки "Data weight error" вообще ни когда не видел :( Zero devide - отрабатывалась отдельно
#39 by сиб
Если деление на 0, то никакая раздвижка не поможет
#40 by ТестПопытка
прошу прощения.  "Width error" я сам клиппер вообще в глаза не видел, базу надо в чувство привести.. э-эх.. их и ищу.. найти не могу..
#41 by smaharbA
Что хоть за прога, самописная?
#42 by ТестПопытка
наверное кто-то сам написал.. прога очень хитрая.. зарплата.. мужику заплатили столько, что в программу не влезло, где-то на расчетах полетело..
#43 by skunk
сыра я так понимаю тоже нет?
#44 by ТестПопытка
конечно.. мы простых путей не ищем.. :)
#45 by skunk
есть такая утилитка ... котороая позволяет мониторить изменения при записи в файло... не когда файло открыто для чтения/записи... а именно когда в него идет риад... ставишь ее запускаешь свою прогу... включаешь мониторчик... и начинаешь смотреть куда идет риад при возникновении ошибки... и уже по файлу расскидываешь нужное поле... утилитка называлась... если память не подводить fileMonitor ... или что-то около того
#46 by ТестПопытка
яндекс пишет : FileMonitor - создает "снимок" любой папки на диске или всего диска. Спустя какое-то время можно выявить произошедшие изменения в данной папке или диске (новые файлы, стертые файлы, и т.д.). Снимок - это файл-список, содержащий основные данные обо всех файлах из выбранной папки или диска (имя файла, размер, время создания, время изменения). FileMonitor выявляет следующие изменения в папке или диске: переименованные/перенесенные (только в пределах выбранной папки/диска); файлы с изменившимся размером; файлы с изменившимся временем создания; файлы с изменившимся временем изменения; качать?
#47 by ТестПопытка
мысль конечно интересная.. найти бы еще эту прогу.. :(
#48 by skunk
немного не то... надо дома глянуть... давно не тулузил
#49 by ТестПопытка
скунк, глянь пожалуйста.. :) меня что-то так ломает всю базу колбасить.. тем более что риск есть что-то еще похерить.. всего-то нужно таблицу и поле найти.. три дня еще терпит, потом придется базу хрюкать . глянь пожалуйста, если не трудно.. :)
#50 by сиб
Может путем дедукции. Если раньше работала и суммы зп в этом месяце обычные, то всякие там начисления, удержания, итоги не причем. Бывают случаи с длинными отпусками, т.е. поле для числа дней отпускных длиной 2 не хватает. Тогда меньше проверять, спроси и бух есть ли особые случаи.
#51 by ТестПопытка
я уверен на 99% что она что-то неправильно ввела, но расклад такой что нужно это показать- ткнуть носом.. я когда искал в карточках нашел мужика с тарифом 6500 р. в час, 176 часов.. базу откатил назад, ну сначала бухше на мужика указал - типа посмотри что за билл гейтс у нас работает.. видимо косяк не в нем, потому что откат не помог.. так это.. что-то мне подсказывает что нужную таблицу найти легче, чем сейчас всех проверять, потом методом дедукции можно найти откуда косяк..
#52 by сиб
Может так. Если после ошибки прога завершается то время создания нужной DBF должно быть самым свежим. В нортоне раставь по времени.
#53 by ТестПопытка
спасибо, но не помогло.. выкидывает наверх 6 таблиц, там две месячных, и 4 расчетных, самые здоровые.. не факт что последняя таблица с ошибкой, могут же и другие таблицы открытыми быть в этот момент..
#54 by raykom
Я, конечно, далек от мысли :) (цы) Абрахамс. Но, што это за число, такое большое ? Или у него дробная такая большая ? А может причина не в этом ? Я в конфе в реквизитах болше 4 и не помню. Так где, в каких таблицах конфа может хранить такие значения ? Такое число знаков может быть получено только в промежуточных расчетах, а эти значения хранятся тока в переменных. Может все проще ?
#55 by ТестПопытка
что за число я сам не знаю, его и ищу.. это не конфа и не 1С.. просто дбф база на клиппере.. с 1С кстати намного проще было б.. фигня как раз в том, что я даже таблицу не знаю, где косяк.. делается расчет, и на расчете вылетает с ошибкой.. а что он там в расчете делает, одному девелоперу известно..
#56 by formula951
1. про dbfview правильно сказали, и скорее всего ошибка закралась в последней записи БД. В первую очередь просмотри последни записи. Файл можешь отследить по дате изменения. **** - точно должны быть. Т.к. ошибка - это несовпадение длин поля и числа, которое пишется в поле. Также просмотри на глаз, в каких полях длина числа приближается к длине поля. Могут быть "накопительные" файлы, тогда придется полностью их просматривать. но принудительно (ошибкой) закрывается последняя. 2. когда определишь файл, попробуй поменять длину поля прогой dbu.exe или поменяй все поля на длину +1, В тексте проги точно нету записей типа if Len(baza.dbf->field) < len(chislo) then baza->field.dbf := "99999" иначе таких ньюансов точно не было бы.
#57 by ТестПопытка
так.. сейчас попробую. 6 таблиц закрыты в одну и ту же секунду. Но самая первая (?) в списке коротенькая расчетная про отпуск.. в ней записей вообще нет. щас я ее раздраконю..
#58 by ТестПопытка
well! well! да! помогло! расчет пошел, только косяка пока не нашел, сейчас порву эту базу на ленточки.. спасибо всем, кто откликнулся!
#59 by ТестПопытка
GrayT, это оказывается строка какая-то служебная, а не число.. Значит он не обрезает ее, может от этого и ошибка записи происходит..
#60 by raykom
Маладсы. Решпект.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С