0
- 06.09.2012 - 18:06
|
Решила вот обратиться к коллективному мозгу. в 8-ке создаю дбф файл с индексами, записываю в него данные. В 7-ке открываю этот файл и он не находит значение по индексу (в 8-ке сделала проверку, вроде находит). Ниже приведен код, может где что-то забыла. =====выгрузка из 8-ки БД = Новый XBase; БД.Поля.Добавить("CODE", "N", 10,0); БД.Поля.Добавить("OST", "N", 19,7); БД.СоздатьФайл(Путь + "ost.dbf", Путь + "ost.cdx"); БД.Индексы.Добавить("IDXCODE", "CODE"); ФлИБД = БД.СоздатьИндексныйФайл(Путь + "ost.cdx"); БД.АвтоСохранение = Истина; //**тут типо запрос Пока Выборка.Следующий() Цикл БД.Добавить(); БД.CODE = Выборка.Код; БД.OST = Выборка.КоличествоОстаток; КонецЦикла; БД.ЗакрытьФайл(); =====в 7-ке База = СоздатьОбъект("XBase"); База.ОткрытьФайл(Путь+"OST.DBF",Путь+"OST.CDX",1); База.ТекущийИндекс("IDXCODE"); Сообщить(База.Найти(691,0)); //// В 8-ке код 691 находиться, в 7-ке нет. | |
1
- 06.09.2012 - 18:59
| а почему бы в 7.7 не создавать свой индекс? | |
2
- 06.09.2012 - 19:45
|
1) "находитЬся" - Не сочтите за розжиг, но мне реально непонятно, почему все, кто получал среднее образование в РФ так пишут? "приЙшёл", "приЙдётся" ет цетера... Реально аццки выносит мосх иностранцам всем... Россияне, вы свои мессиджи в спелл-чекере проверяйте, что-ли? 2) По поводу индексов, ИМХО, - тут тяжкая проблема стандартов DBaseII и DBaseIV. И Блондинка, скорее всего, права. Однако, чтобы проверить правы мы с Блондинкой или нет - создай этот ДБФ с индексами в 7.7 - и попробуй считать его из 7.7. | |
3
- 06.09.2012 - 20:05
| (0) Миссис Маус?! | |
4
- 06.09.2012 - 20:14
| 3-Ткачик > Онжелина Шо-ли и Томми Хрусь-хрусть. | |
5
- 06.09.2012 - 20:40
|
*стыдно* как к уже созданой дбф создать индексный файл в 7-ке 3-Ткачик >нет | |
6
- 06.09.2012 - 20:45
|
5-мыша1с > Средствами любой СУБД. FoxBase, Clipper, FoxPro. | |
7
- 06.09.2012 - 20:56
| Возможно ли в 7-ке создать индексный файл к уже существующему дбф? Без подключение внешних компонент? ЖК не предлагать, мои глазки там не увидели метода. | |
8
- 06.09.2012 - 20:57
|
7-мыша1с > Легко! Читай (6). | |
9
- 06.09.2012 - 20:57
|
Не надо сохранять индексный файл. Просто в модуль инициализации файла запсочить индексирование. Сия процедура достаточно быстрая, и проблем не доставит. А надежность - добавит. Кроме того, в техпроцессе один файл - это лучше, чем два ;) | |
10
- 06.09.2012 - 20:59
| 8-DeiMos > Лучше добавлять cdx средством под названием 1Cv7.exe. Проверено. | |
11
- 06.09.2012 - 21:05
| 9-VZ >милый, милый ВЗ. КАк? | |
12
- 06.09.2012 - 21:14
|
Сказанное в (10) относится к файлам, созданным в 1С. Но эти файлы не годятся для FoxPro (и утилам на его основе, вроде поделок БухСофта)! Но сами файлы прелестно очищаются, записываются, и читаются, естественно. Главное, не обращаться к полям типа MEMO. В том числе и косвенно (например, нельзя читать список полей). CDX использовать можно (MEMO-поля не индексируются. | |
13
- 06.09.2012 - 21:15
| 11-мыша1с > Щаз, покопаюсь в завалах, может, найду образец... | |
14
- 06.09.2012 - 21:20
| 11-мыша1с > http://bugalt.narod.ru/dbf.htm | |
15
- 06.09.2012 - 21:23
|
14-Синегурочка >ключевое слово к существующему. ДобавитьИндекс - Метод можно использовать только перед созданием новой базы. | |
16
- 06.09.2012 - 21:31
| 15-мыша1с > открыть файл, добавить индекс и пересоздать файл уже с индексом? | |
17
- 06.09.2012 - 21:35
|
16-Синегурочка > Бредишь? Передозировка селёдки? Запомни: Всегда должен быть создан файл, а потом уже - создавай любые индексы к нему. | |
18
- 06.09.2012 - 21:41
| 16- ну в общем думаю способ один: открывать файл, перечитывать полностью и записывать в новый с индексами. Просто жду кто подскажет способ легче. Этот мне видно с первого ответа. | |
19
- 06.09.2012 - 21:42
|
(15) Глядишь, я успею раньше VZ? ФайлDBF=СоздатьОбъект("XBase"); ФайлDBF.ОткрытьФайл("ost.dbf",,0); Если ФайлDBF.Открыта()=0 Тогда Предупреждение("Не удается открыть файл ost.dbf!",60); Возврат; КонецЕсли; ФайлDBF.ДобавитьИндекс("IDXCODE","CODE",0,0,""); ФайлDBF.СоздатьИндексныйФайл("ost.cdx"); ФайлDBF.ТекущийИндекс("IDXCODE"); Где-то так, на основе работающего кода. (16), (17) Теоретики... | |
20
- 06.09.2012 - 21:44
|
Пример 1: //Инициализация ДБФ ФС.УдалитьФайл(СтрЗаменить(СокрЛП(ПутьКБазе)+ИмяФа йлаУИД,"DBF","CDX")); фУИД = СоздатьОбъект("XBASE"); фУИД.ОткрытьФайл(СокрЛП(ПутьКБазе)+ИмяФайлаУИД); фУИД.Сжать(); фУИД.ДобавитьИндекс("UID","UID",1,0,".NOT.Deleted( )"); фУИД.СоздатьИндексныйФайл(СтрЗаменить(СокрЛП(ПутьК Базе)+ИмяФайлаУИД,"DBF","CDX")); фУИД.Переиндексировать(); фУИД.ТекущийИндекс("UID"); фУИД.АвтоСохранение(0); .......................................... //Закрытие файлов фУИД.ЗакрытьФайл(); Пример 2. фУИД = СоздатьОбъект("XBASE"); Если ФС.СуществуетФайл(СокрЛП(Каталог)+ИмяФайлаУИД) = 0 Тогда фУИД.ДобавитьПоле("ID7","S",24,); фУИД.ДобавитьПоле("NAME7","S",128,); фУИД.ДобавитьПоле("MARK","S",1,); фУИД.ДобавитьПоле("UID","S",36,); фУИД.ДобавитьПоле("NAME8","S",128,); фУИД.ДобавитьИндекс("ID7","ID7",0,0,".NOT.Deleted( )"); фУИД.ДобавитьИндекс("UID","UID",0,0,".NOT.Deleted( )"); фУИД.СоздатьФайл(СокрЛП(Каталог)+ИмяФайлаУИД,СтрЗа менить(СокрЛП(Каталог)+ИмяФайлаУИД,"DBF","CDX")); фУИД.ЗакрытьФайл(); Иначе ФС.УдалитьФайл(СтрЗаменить(СокрЛП(Каталог)+ИмяФайл аУИД,"DBF","CDX")); фУИД.ОткрытьФайл(СокрЛП(Каталог)+ИмяФайлаУИД); Пока фУИД.ВКонце() = 0 Цикл Если ПустаяСтрока(фУИД.UID) = 1 Тогда фУИД.Удалить(); КонецЕсли; фУИД.Следующая(); КонецЦикла; фУИД.Сжать(); фУИД.ДобавитьИндекс("ID7","ID7",0,0,".NOT.Deleted( )"); фУИД.ДобавитьИндекс("UID","UID",0,0,".NOT.Deleted( )"); фУИД.СоздатьИндексныйФайл(СтрЗаменить(СокрЛП(Катал ог)+ИмяФайлаУИД,"DBF","CDX")); фУИД.Переиндексировать(); фУИД.ЗакрытьФайл(); КонецЕсли; Аккуратнее с составными индексами! Помни, что из БД поле читается целиком, с конечными пробелами. Для смешанных выражений, где есть и числа и даты не применяй автопреобразование: напиши преобразование к строковому виду самостоятельно. И ради Бога: год только четырьмя символами!! | |
21
- 06.09.2012 - 21:48
| 19-Ткачик > ну да. это азы. а как еще то? | |
22
- 06.09.2012 - 21:51
|
19-Ткачик > Почему теоретики, зачем теоретики? Почему не практики? Нипанимаю... | |
23
- 06.09.2012 - 22:01
| Школота... :[ | |
24
- 07.09.2012 - 15:34
| 23-VZ >19-Ткачик >Огромное, просто большущие спасибо. | |
25
- 08.09.2012 - 12:54
| А maus то проспал подружку;) | |
| Интернет-форум Краснодарского края и Краснодара |