как подгрузить несколько dbf файлов
08.06.2010
14:57
#1
"Здравствуйте. Описываю проблему: есть несколько DBF фалов в них есть номера и под каждым номером свои данные . Нужно по номеру находить в DBF-ке эти данные. В чём суть, DBF – ок много по одному подгружать муторно, вот и хочу задать, что бы методом перебора проверять их.
Но что-то не получается у меня ниже опишу что делал и что в итоге получается, может кто что подскажет что ни так делаю.
Первый пример: ЛСчёт – задаётся в диалоге
Процедура Сформировать()
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
Файл = создатьОбъект("XBASE");
Файл.ОткрытьФайл("BDN00.dbf");
Файл.КодоваяСтраница(1);
Файл.Первая();
Пока Файл.ВКонце()=0 Цикл
Если ЛСчёт=Файл.LCZN тогда
***********
Таб.ВывестиСекцию("С1");
Таб.ВывестиСекцию("С2");
Таб.Показать();
иначе
КонецЕсли;
иначе
КонецЕсли;
Файл.Следующая();
КонецЦикла;
Файл2 = создатьОбъект("XBASE");
Файл2.ОткрытьФайл("BDN01.dbf");
Файл2.КодоваяСтраница(1);
Файл2.Первая();
Пока Файл2.ВКонце()=0 Цикл
Если ЛСчёт=Файл2.LCZN тогда
***************
Таб.ВывестиСекцию("С1");
Таб.ВывестиСекцию("С2");
Таб.Показать();
иначе
КонецЕсли;
Файл.Следующая();
КонецЦикла
КонецПроцедуры
Что получается: если задать номер из первой DBF таблицы, он его находит и выводит таблицу, но при этом продолжает выполнять поиск, если задать номер из второй таблицы то ничего не происходит пишет выполняется обработка.
Второй пример:
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
Файл = создатьОбъект("XBASE");
Файл.ОткрытьФайл("BDN00.dbf");
Файл.КодоваяСтраница(1);
Файл.Первая();
Пока Файл.ВКонце()=0 Цикл
Если ЛСчёт=Файл.LCZN тогда
***********
Таб.ВывестиСекцию("С1");
Таб.ВывестиСекцию("С2");
Таб.Показать();
иначе
КонецЕсли;
иначе
КонецЕсли;
Файл.Следующая();
КонецЦикла;
Файл.ЗакрытьФайл()
Файл2 = создатьОбъект("XBASE");
Файл2.ОткрытьФайл("BDN01.dbf");
Файл2.КодоваяСтраница(1);
Файл2.Первая();
Пока Файл2.ВКонце()=0 Цикл
Если ЛСчёт=Файл2.LCZN тогда
***************
Таб.ВывестиСекцию("С1");
Таб.ВывестиСекцию("С2");
Таб.Показать();
иначе
КонецЕсли;
Файл2.Следующая();
КонецЦикла
КонецПроцедуры
Происходит тоже самое (((, что подскажете.
"
Но что-то не получается у меня ниже опишу что делал и что в итоге получается, может кто что подскажет что ни так делаю.
Первый пример: ЛСчёт – задаётся в диалоге
Процедура Сформировать()
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
Файл = создатьОбъект("XBASE");
Файл.ОткрытьФайл("BDN00.dbf");
Файл.КодоваяСтраница(1);
Файл.Первая();
Пока Файл.ВКонце()=0 Цикл
Если ЛСчёт=Файл.LCZN тогда
***********
Таб.ВывестиСекцию("С1");
Таб.ВывестиСекцию("С2");
Таб.Показать();
иначе
КонецЕсли;
иначе
КонецЕсли;
Файл.Следующая();
КонецЦикла;
Файл2 = создатьОбъект("XBASE");
Файл2.ОткрытьФайл("BDN01.dbf");
Файл2.КодоваяСтраница(1);
Файл2.Первая();
Пока Файл2.ВКонце()=0 Цикл
Если ЛСчёт=Файл2.LCZN тогда
***************
Таб.ВывестиСекцию("С1");
Таб.ВывестиСекцию("С2");
Таб.Показать();
иначе
КонецЕсли;
Файл.Следующая();
КонецЦикла
КонецПроцедуры
Что получается: если задать номер из первой DBF таблицы, он его находит и выводит таблицу, но при этом продолжает выполнять поиск, если задать номер из второй таблицы то ничего не происходит пишет выполняется обработка.
Второй пример:
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
Файл = создатьОбъект("XBASE");
Файл.ОткрытьФайл("BDN00.dbf");
Файл.КодоваяСтраница(1);
Файл.Первая();
Пока Файл.ВКонце()=0 Цикл
Если ЛСчёт=Файл.LCZN тогда
***********
Таб.ВывестиСекцию("С1");
Таб.ВывестиСекцию("С2");
Таб.Показать();
иначе
КонецЕсли;
иначе
КонецЕсли;
Файл.Следующая();
КонецЦикла;
Файл.ЗакрытьФайл()
Файл2 = создатьОбъект("XBASE");
Файл2.ОткрытьФайл("BDN01.dbf");
Файл2.КодоваяСтраница(1);
Файл2.Первая();
Пока Файл2.ВКонце()=0 Цикл
Если ЛСчёт=Файл2.LCZN тогда
***************
Таб.ВывестиСекцию("С1");
Таб.ВывестиСекцию("С2");
Таб.Показать();
иначе
КонецЕсли;
Файл2.Следующая();
КонецЦикла
КонецПроцедуры
Происходит тоже самое (((, что подскажете.
"
08.06.2010
15:14
#2
"ПутьКПапкеСdbfФайлами="C:\123\";
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
ИмяФайла = ФС.НайтиПервыйФайл(ПутьКПапкеСdbfФайлами+"*.dbf");
Файл = СоздатьОбъект("XBASE");
Найден=0;
Пока ПустаяСтрока(ИмяФайла) = 0 Цикл
Если (ИмяФайла <> "..") И (ИмяФайла <> ".") Тогда
Файл.ОткрытьФайл(ПутьКПапкеСdbfФайлами+ИмяФайла,"""");
Файл.КодоваяСтраница(1);
Файл.Первая();
Пока Файл.ВКонце()=0 Цикл
Если ЛСчёт=СокрЛП(Файл.LCZN) тогда
***********
Таб.ВывестиСекцию("С1");
Таб.ВывестиСекцию("С2");
Таб.Показать();
Найден=1;
Прервать; //это то, почему у вас "поиск идет дальше"
Иначе
КонецЕсли;
КонецЦикла;
Если Найден=1 Тогда
Прервать;
КонецЕсли;
КонецЕсли;
ИмяФайла = ФС.НайтиСледующийФайл();
КонецЦикла;
Файл=0;"
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
ИмяФайла = ФС.НайтиПервыйФайл(ПутьКПапкеСdbfФайлами+"*.dbf");
Файл = СоздатьОбъект("XBASE");
Найден=0;
Пока ПустаяСтрока(ИмяФайла) = 0 Цикл
Если (ИмяФайла <> "..") И (ИмяФайла <> ".") Тогда
Файл.ОткрытьФайл(ПутьКПапкеСdbfФайлами+ИмяФайла,"""");
Файл.КодоваяСтраница(1);
Файл.Первая();
Пока Файл.ВКонце()=0 Цикл
Если ЛСчёт=СокрЛП(Файл.LCZN) тогда
***********
Таб.ВывестиСекцию("С1");
Таб.ВывестиСекцию("С2");
Таб.Показать();
Найден=1;
Прервать; //это то, почему у вас "поиск идет дальше"
Иначе
КонецЕсли;
КонецЦикла;
Если Найден=1 Тогда
Прервать;
КонецЕсли;
КонецЕсли;
ИмяФайла = ФС.НайтиСледующийФайл();
КонецЦикла;
Файл=0;"
Читают тему
(гостей: 1)