Работа с DBF файлами. Метод НайтиПоКлючу(). Помогите!!!!
1. Копирую файлы 1SJOURN.DBF и 1SJOURN.CDX в отдельный каталог.
2. в обработке открываю 1SJOURN.DBF
(открывается нормально)
3. надо найти запись:
поле DNPREFIX имеет тип Строка длиной 18 (поэтому пробелы спереди)
такая конструкция выдает ошибку, что нужно выбрать индекс.
у этого файла существует индекс "DOCNO" (описан в файле *.DD как DNPREFIX+UPPER(DOCNO))
при попытке ДБФ.ТекущийИндекс("DOCNO"); - ошибка, что индекса с таким именем не существует.
(ДБФ.ТекущийИндекс() возвращает "")
пробовал добавлять свой индекс, реиндексировать и т.д. чего только не перепробовал...
так какое же имя индекса, чтобы выбрать его-то?...
Вчера полдня убил. Весь тырнет облазил... Помогите, пожалуйста!
2. в обработке открываю 1SJOURN.DBF
Код |
---|
ДБФ = СоздатьОбъект("XBase");
ДБФ.ОткрытьФайл(СокрЛП(ИмяФайла),СтрЗаменить(СокрЛП(ИмяФайла),"DBF","CDX"),0);
Если ДБФ.Открыта()=0 Тогда
Сообщить("База не открыта!","!");
Возврат;
КонецЕсли;
Показать полностью |
(открывается нормально)
3. надо найти запись:
Код |
---|
ДБФ.Ключ.DNPREFIX = " 348";
ДБФ.Ключ.DOCNO = Строка(Док.НомерДок);
Если ДБФ.НайтиПоКлючу(0)=1 Тогда
ДБФ.Удалить();
КонецЕсли;
Показать полностью |
поле DNPREFIX имеет тип Строка длиной 18 (поэтому пробелы спереди)
такая конструкция выдает ошибку, что нужно выбрать индекс.
у этого файла существует индекс "DOCNO" (описан в файле *.DD как DNPREFIX+UPPER(DOCNO))
при попытке ДБФ.ТекущийИндекс("DOCNO"); - ошибка, что индекса с таким именем не существует.
(ДБФ.ТекущийИндекс() возвращает "")
пробовал добавлять свой индекс, реиндексировать и т.д. чего только не перепробовал...
так какое же имя индекса, чтобы выбрать его-то?...
Вчера полдня убил. Весь тырнет облазил... Помогите, пожалуйста!
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Проблему решил.
вот так больше не ругается и устанавливает индекс и находит...
персональное <font style=" font-size:16px; font-color:FF0000; font-weight:bold;">ОГРОМНОЕ СПАСИБО Abadonna</font> за помощь и участие!
Код |
---|
ИндексныйФайл=СтрЗаменить(СокрЛП(ИмяФайла),".DBF",".CDX");
Если ФС.СуществуетФайл(ИндексныйФайл)=1 Тогда
ДБФ.ОткрытьФайл(СокрЛП(ИмяФайла),ИндексныйФайл,0);
Иначе
ДБФ.ОткрытьФайл(СокрЛП(ИмяФайла),,0);
ДБФ.ДобавитьИндекс("DOCNO", "DNPREFIX+UPPER(DOCNO)", 0, 0, "");
ДБФ.СоздатьИндексныйФайл(ИндексныйФайл);
ДБФ.Переиндексировать();
КонецЕсли;
Если ДБФ.Открыта()=0 Тогда
Сообщить("База не открыта!","!");
Возврат;
КонецЕсли;
ДБФ.ПоказыватьУдаленные(1);
ДБФ.АвтоСохранение(1);
ДБФ.ТекущийИндекс("DOCNO");
Показать полностью |
вот так больше не ругается и устанавливает индекс и находит...
персональное <font style=" font-size:16px; font-color:FF0000; font-weight:bold;">ОГРОМНОЕ СПАСИБО Abadonna</font> за помощь и участие!
Аркадий, хоть ты мне обясни, для нафига все это? Честно говоря, это же не твой стиль - любое сжатие базы и всему этому нечто противоположное маршу Мендельсона. Я же давал тебе ссылку на библиотеки скриптов (Ерохе про между прочим кое-что даже понравилось) - поставить любые (да хучь составные) фильтры и делу-то финец... Зачем так издеватся над базой?
VasilyKushnir Написал:
-------------------------------------------------------
> Аркадий, хоть ты мне обясни, для нафига все это?
Ты вчера доотмечался? ;)
Где ты видал тут Аркадия?
И вдогонку: терпеть не могу, когда на вопрос отвечают вопросом: "на фига тебе это?"
Спросили - ответь, или пошли куда положено, но не фиг другие вопросы задавать
-------------------------------------------------------
> Аркадий, хоть ты мне обясни, для нафига все это?
Ты вчера доотмечался? ;)
Где ты видал тут Аркадия?
И вдогонку: терпеть не могу, когда на вопрос отвечают вопросом: "на фига тебе это?"
Спросили - ответь, или пошли куда положено, но не фиг другие вопросы задавать
Василий, можно подробнее про фильтры эти составные? Уж больно юзверю хочется документы скрывать... А такой ломовой метод, как я применил оч. опасен оказался. 1сина-то все новые документы любого вида в этом файле вместо чтоб новые записи создавать пихает вместо помеченных на удаление средствами ДБФ. Как следствие после некоторого времени работы - необратимая потеря документов... (Хорошо хоть копию перед издевательствами сделали...)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот