Форум » [x]Harbour » Harbour dbf editor (продолжение) » Ответить

Harbour dbf editor (продолжение)

Pasha: Выкладываю апдейт (давненько не выкладывал): http://files.mail.ru/LXJ3D7 Whatsnew - смотрите сами, не помню уже. Хочу перевести на буржуйскую мову, но не все сообщения еще сделал, так что буржуям пока не показываю, чтобы их великий и могучий не шокировал :)

Ответов - 54, стр: 1 2 3 All

Dima: Pasha пишет: "Или вычислить выражение" надо ввести 0 Да так сработало !

Andrey: Небольшой баг с ошибкой при входе на сервер Leto: Т.е. даёшь команду start dbedit -f -letodb=//xx.xx.xx.xx:2812/ и получаешь такую ошибку. Если создашь ОДНУ папку в каталоге баз, то ошибка пропадает.

Dima: Pasha Просто пометить запись на удаление возможно только находясь в первой колонке (*) и нажав пробел ? Чутка не удобно если база широкая. Нашел я скажем нужную запись в каком то поле и нужно съезжать на первую колонку (что бы пометить ее на удаление) а в это время нужное поле уехало за пределы экрана... Полагал что сделать это можно с помощью педали DEL , но оказалось что она ставит не только метку но и чистит запись в полях. Нельзя ли по какой то комбинации клавиш находясь на нужной записи в нужном поле что то нажать что бы запись просто пометилась на удаление и все ? Есть предложение переделать функционал кнопки DEL. Нажали - вылезло меню , в нем 3 пункта. Пометка на удаление Пометка на удаление + очистка полей в записи Физическое удаление Выход :)


Pasha: Сделаю так: K_DEL - dbDelete()/dbRecall() K_CTRL_DEL - пометка на удаление с очисткой полей Ну а физическое удаление записи из файла оставлю по K_F8, сам уже привык до автоматизма

Dima: По ходу виснет прога если нажать F1 и затем снова F1 (вроде писали об этом выше)

Dima: Dima пишет: Есть предложение переделать функционал кнопки DEL. Нажали - вылезло меню , в нем 3 пункта. Пометка на удаление Пометка на удаление + очистка полей в записи Физическое удаление Или повесить на SHIFT + DEL , думаю там с десяток строк кода всего. Все остальное "удаление" оставить как есть.

Pasha: Новую версию программы можно скачать по ссылке: https://cloud.mail.ru/public/9rNn/5GGbZTfjx Что нового: - добавлена поддержка флагов для полей: autoinc, unicode и др. - добавлена функция Переместить запись вверх (меню Действие) - добавлена операция delete/recall по клавише Ctrl+Del

Dima: Павел , какой то косяк с перекодировкой. Была изначально в базе RU866 , средствами Dbedit конвертнул в UTF8 , вышел из Dbedit. Затем загрузил эту же базу с ключиком -cdp=UTF8 и конвертнул все обратно в кодировку RU866 , в результате получил в символьных полях один вопросики. В какой теперь кодировке база не понятно. Нормально ни чего не кажет ни в UTF8 ни в RU866.

Andrey: Петр пишет: цитата: 2015-02-08 13:19 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) * src/rdd/workarea.c + added support for field flags in dbCreate()/dbStruct(). Flags can be passed in string with field type after ":", i.e. "C:U" means Unicode character field. The following flags are recognized: "N" - column can store null values "B" - binary column "+" - column is autoincrementing "Z" - column is compressed "E" - column is encrypted "U" - column stores Unicode strings Павел, а нельзя добавить в Dbedit новые типы полей ?

Pasha: Так я же полтора месяца назад добавил: Что нового: - добавлена поддержка флагов для полей: autoinc, unicode и др.

Dima: Pasha Он видимо про это поле "I:+"

Pasha: В режиме просмотра/редакции структуры добавлена колонка "Флаг". Здесь можно установить флаги для поля

Dima: Pasha пишет: Здесь можно установить флаги для поля Точно , не обращал внимания. При загрузке файла флаги считывает Dbedit ? PS Похоже что да. Чеканул

Pasha: Новую версию программы можно скачать по ссылке: https://cloud.mail.ru/public/8xLE/UKRW3Zjp5 Что нового: - добавлена функция полного сравнения с другим файлом всех полей: Операция - полное сравнение с файлом - добавлена функция Поиск - Заменить поле из файла. Запрашиваются данные для установки set relation, и поле, из которого надо выполнить замену. - исправлена трансляция в кодовую страницу

Andrey: Всем привет ! При редактировании мемо-поля происходит вот такая ошибка : Скорее всего поле MREM "битое". Как исправить такие поля в базе ?

Pasha: Похоже, значение поля равно nil, вот программа и сваливается на len(nil) Andrey пишет: Скорее всего поле MREM "битое". Как исправить такие поля в базе ? Вопрос в таком виде не имеет ответа. Чтобы исправить "битость", надо знать, что это за "битость" такая. Так что там за битость ?

Andrey: Пытаюсь вырезать битые записи для проверки. Версия dbedit.exe от 18.07.16 Поле в базе IDZ - "+" Мои действия: 1) Меню Поиск 2) меню поиск 3) в окне указываю IDZ=73424 запись в базе находиться, далее пытаюсь скопировать записи в другую базу: 1) Меню Операции 2) Меню Копировать в файл 3) в окне указываю имя файла и условие IDZ>73423 База копируется ЦЕЛИКОМ !!! Пробовал сделать условие типа DATE1==ctod("01.11.2017") - тоже копируется целиком ! Это глюк моей базы или что-то в программе ? Или я что-то не так делаю ? И ещё один вопрос. Если база состоит из очень большого кол-ва полей, то как можно быстро "встать" на колонку по имени ? Есть ли такое меню ? Если нет, то можно ли его сделать ?

Pasha: Андрей, я посмотрел твой файл. Он не битый. Как оказалось, формат мемо FPT поддерживает хранение в поле не только текста, но и других типов данных. Для меня это тоже было сюрпризом, так как я такой оригинальной фичей никогда не пользовался. т.е. можно так: Field->MREM := .f. и в поле будет храниться .f., что у тебя в двух записях и есть. Можешь сделать проверку в цикле: if ValType(MREM) # "M" ... скорее всего у тебя где-то в коде есть такое присваивание. Просто очисти эти поля: Field->MREM := "" Быстро перейти к колонке можно по Alt+F5, или меню Поиск - Перейти на колонку

Andrey: Pasha пишет: скорее всего у тебя где-то в коде есть такое присваивание. Не делал никогда у себя в коде такого. Скорее всего был сбой по базе. Спасибо БОЛЬШОЕ !

Andrey: А как насчёт этого ? в окне указываю имя файла и условие IDZ>73423 База копируется ЦЕЛИКОМ !!! Пробовал сделать условие типа DATE1==ctod("01.11.2017") - тоже копируется целиком !

Pasha: Andrey пишет: Не делал никогда у себя в коде такого. Скорее всего был сбой по базе. Так уже и сбой ? Самопроизвольно в memo-блок записался двоичный код типа данных L и значение .f. ? А что насчет неинициализированных Public/Private ? Как раз значение .f. и будет. А как насчёт этого ? в окне указываю имя файла и условие IDZ>73423 База копируется ЦЕЛИКОМ !!! Поставь фильтр и выполняй копирование. В настоящее время там используется не стандартная команда COPY TO, поскольку она при наличии поля AutoInc не работает (ты как раз нарвался на такой случай), а другой режим.

Andrey: Pasha пишет: Поставь фильтр и выполняй копирование. Понял ! СПАСИБО !

Pasha: Ссылка на новую версию программы: https://cloud.mail.ru/public/Ek8Q/nyqkFKAri Что нового: - добавлены функции фильтра: с записи #, по запись # - автоматическое преобразование выражения фильтра по полю в scope (при наличии подходящего индекса) - доработано копирование/вставка прямоугольных блоков - просмотр несимвольных memo-полей - добавлен параметр "User=" в letodb.ini для авторизации на сервере

Dima: Pasha пишет: Ссылка на новую версию программы Спасибо !

Dima: Pasha пишет: - доработано копирование/вставка прямоугольных блоков Это где и как ? Попробовал при редактировании MEMO не работает.

PSP: Dima пишет: Это где и как ? Строки/столбцы таблицы можно помечать. Но что с ними потом делать, - я не понял)

Pasha: Прямоугольные блоки можно использовать для обмена данными между файлом dbf и книгой Excel или OpenOffice. Надо скопировать прямоугольную область в Excel в буфер обмена, затем в dbedit вызвать меню Операция - Вставить блок из буфера обмена. Затем в диалоге можно привязать столбцы Excel к полям dbf, если они идут не последовательно, или с пропусками. Аналогично можно пометить прямоугольную область в dbf (Shift+стрелки), и скопировать ее в буфер обмена для вставки в Excel. Только там уже привязки столбцов естественно не будет.

Pasha: Поясню насчет фильтров. При установке фильтра (F4) добавлены две функции: с записи - будет сформирован фильтр RecNo() >= <nCurRec>, аналогично - по запись. Это небольшой сервис. Фильтр по значению поля: Пусть для поля Year есть индекс: Year или Str(Year)+Str(Month) При уставке фильтра по значению 2017 будет установлен не медленный обычный фильтр Year=2017 а быстрый фильтр - scope по индексу - 2017 Если затем добавить фильтр по значению Month - 12, то вместо фильтра Year=2017.and.Month=12 будет установлен scope 201712

PSP: Павел, можно попросить подправить hotkeys? )) 1. Alt-S - одновременно и scope и суммирование 2. Поиск по ключу - клавиша не предусмотрена. Руки так и тянутся к F7)), но там просто поиск. Можно сделать так: если есть открытый индекс, то F7 - поиск по активному ключу? 3. Вызов меню - F10 - всегда начинается сначала. Можно, чтобы к последнему пункты меню возвращалось?

Pasha: PSP пишет: 2. Поиск по ключу - клавиша не предусмотрена. Руки так и тянутся к F7)), но там просто поиск. Можно сделать так: если есть открытый индекс, то F7 - поиск по активному ключу? Клавиша там как раз есть, Ctrl+S. По поводу совмещения поиска по ключу (а это dbSeek) с поиском по F7 - можно конечно проанализировать, если текущая колонка является первой в индексном выражении, то отработать поиск по ключу. Но поиск по F7 нечувствителен к регистру, да и там ищется вхождение подстроки. Если его заменить на поиск по ключу, то при этом потеряется такая функциональность, а это не есть гут. Если есть какие-то идеи как можно организовать интерфейс без такой потери - предлагайте.

PSP: Pasha пишет: Клавиша там как раз есть, Ctrl+S Никакой реакции на это сочетание (версия 3.27, вроде последняя) В хэлпе Ctrl-S указана, но в меню этого нет и прога не откликается на Ctrl-S По поводу совмещения поиска по ключу (а это dbSeek) с поиском по F7 - можно конечно проанализировать, если текущая колонка является первой в индексном выражении, то отработать поиск по ключу. Но поиск по F7 нечувствителен к регистру, да и там ищется вхождение подстроки. Если его заменить на поиск по ключу, то при этом потеряется такая функциональность, а это не есть гут. Если есть какие-то идеи как можно организовать интерфейс без такой потери - предлагайте. Пусть будет другая клавиша. Неважно. Лишь бы была)

Pasha: PSP пишет: Никакой реакции на это сочетание (версия 3.27, вроде последняя) Да, увы, комбинацию ctrl+s в харборе использовать нельзя. Поставлю другую клавишу.

Pasha: Новая версия программы доступна по ссылке: https://cloud.mail.ru/public/EkR8/rEiqnF4dn Изменения в программе: - доработана функция полного сравнения с файлом: теперь можно записать выявленные различия. - небольшие изменения в интерфейсе

PSP: Спасибо))

Andrey: Привет всем. Вот прислали мне очередной шедевр - битую базу ! Как такое происходит у них на ХР мне до сих пор непонятно ? За много лет, только несколько раз правил битые dbf от нескольких пользователей. Пробовал руками копировать в другую базу с условиями RECNO() < 72715 вылетает dbedit в конце, хотя базу создаёт. При копировании в другую базу с условиями RECNO() > 73058 вылетает dbedit. Т.е. ручками сбойный участок вырезать невозможно, хотя раньше без полей типа ModTime или автоинкремент этот фокус проходил. Пробовал пометить все сбойные записи (исходя из ведения базы в программе - условие NUM < 99), записи помечаются, но удалить их невозможно, вылетает dbedit. Попробовал в "Меню Операция - Поиск ошибок" - сработало ! Классная менюшка в программе !

Pasha: А в чем эта битость заключается ? И что за вылет ?

Andrey: Pasha пишет: А в чем эта битость заключается ? И что за вылет ? Базу пришлю на почту ! База мусором заполнена. Как такое сейчас на ХР может происходить ?

Vlad04: Обычно, заголовки портятся. Бывает база мусором заполняется. Но это давно было - во времена Клиппера. Лечилось - был какой-то просмотрщик, который заголовок исправлял. - в эталонную пустую базу по-байтно считывалась битая и данные помещались в нужные поля

Andrey: Привет ! Делаю копирование части базы в другой файл. Не копируется... Целиком копируется база в другой файл. Кол-во записей в базе 11845. Баг или неправильно делаю ?

Pasha: Проверяю. Поставил условие для копирования: recno()>20. В результирующем файле получается на 20 записей меньше, чем в исходном.

Andrey: Pasha пишет: Поставил условие для копирования: recno()>20. В результирующем файле получается на 20 записей меньше, чем в исходном. Странно... А на большем кол-ве данных и с полями + @ и др. ? И какая последняя версия программы dbedit сейчас ?

Pasha: Версия 3.28, которую я выкладывал 7.3.2018. На ней и проверял. Количество данных роли не играет, условие или выполняется, или нет.

Andrey: Pasha пишет: Версия 3.28, которую я выкладывал 7.3.2018. На ней и проверял. Да, на этой версии всё сработало ! Видно у меня старая версия была... СПАСИБО !

Andrey: Всем привет. Пытаюсь базу экспортировать через меню: Действие - XLS и CSV. Вылетает программа... Ошибка: Ошибка WINOLE/1018 Неверный аргумент: __OLEVARIANTNEW и Ошибка BASE/1118 Неверный аргумент: DTOC Версия программы последняя.

Pasha: В файле присутствуют поля с расширенными типами данных ? Если да, то с какими ?

Andrey: Pasha пишет: В файле присутствуют поля с расширенными типами данных ? Если да, то с какими ? Нет. обычные поля.

Pasha: Новая версия программы: https://cloud.mail.ru/public/6xgz/RDKXNeUqa Что нового: - добавлена функция экспорта в таблицу MS Word

Andrey: Привет ! Спасибо за новую версию. Ошибка с CSV пропала ! Только ошибочка в ней при экспорте в Эксель. Точно такая же как в МиниГуи была раньше. Если столбец текстовый и содержит в колонке "1", "2/3", "3/4", "5 дом" , то "2/3", "3/4" эксель сам преобразует как ему понравиться. Это не ПРАВИЛЬНО ! Нужно все текстовые колонки при экспорте преобразовать в текстовые, а потом выгружать туда данные. Для Ворда если таблица большая, то таблица непонятная выходит... И границ (окантовки) нет. Выслал тебе на почту свой вариант выгрузки в Ворд. Посмотри, может пригодиться.

Pasha: Andrey пишет: Нужно все текстовые колонки при экспорте преобразовать в текстовые, а потом выгружать туда данные. Надо поставить флажок "Текстовый формат для полей типа Character" Для Ворда если таблица большая, то таблица непонятная выходит... И границ (окантовки) нет. Да мне собственно не очень понятен смысл данной функции. Я ее сделал лет так больше 15 назад, но так и не использовал. Сейчас воткнул в меню, раз уж разговор про это зашел. Можно конечно доделать кое-какие вещи.

Andrey: Pasha пишет: Надо поставить флажок "Текстовый формат для полей типа Character" Да, так правильно получается. Спасибо. А какой код в экспорте для Экселя включает разбивку печати по листам ? Т.е. при появления листа Экселя включаются линии разделителя по листам.

Dima: Pasha Файлы ADS , ADT поддерживаются DBEDIT ?

Pasha: В текущей версии нет. Я когда-то собирал программу вместе с rddads, но adt специально не тестировал.

Andrey: Всем привет. Обнаружил глюк в DBEDIT. Если имя файла содержит пробелы, то dbf-ник не открывается. Периодически приходиться проверять базы которые делает банк. Имя файла просто улёт - 5617181_20180919_101939_IP Roga And Kopute.dbf

Pasha: Решение для такого случая стандартное: имя файла надо передавать в кавычках: dbedit.exe "5617181_20180919_101939_IP Roga And Kopute.dbf"



полная версия страницы