Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Экспорт таблицы в dbf с определенным именем


Автор: Akella80 12.11.2007, 18:38
Привет. Есть база содержащая в себе разнородную информацию сортируемую и выгружаемую в различные файлы, коих по самым слабым прикидкам наберется не менее 50 и вот этот садомазохизм планируется с завидной регулярностью каждый месяц. Просмотрел форум, справку подходящего совета не нашел..
Так вот, необходимо чтобы данные из таблиц выгружались в файлы с названием типа xAABByCC.dbf где x,a,b,y переменные, зависящие от конкретных данных таблицы, а С номер месяца. Разбивку по условиям планирую выполнить посредством запросов на выборку с соответствующими условиями отбора и последующим экспортом их результатов файлы, все это реализуется посредством макроса. Вопрос собственно вот в чем - как не углубляясь в VB выполнить следующее - экспорт отобранных записей в соответствующие для условий отбора файлы (структура и названия) при этом в соответствующие им каталоги, иметь 866 (dos) кодировку и иметь заданное автоматически название (например номер отчетного месяца в названии). Жесткое задание путей и названий (в принципе можно..), а темболее отчетного периода не подходит всвязи с большим количеством экспортируемых файлов. Учитывая что времени практически нет, такая вот смехопанорама наблюдается.. 
Спасибо.http://forum.vingrad.ru/act-Post/CODE-00/f-159/syntax-sql.html#

Автор: bopoha 12.11.2007, 19:11
Макросами подобное??????? Уж лучше на VB.

Вопрос вообще в чем? Если вы хотите, чтобы вам написали, то так и нужно "говорить".

Автор: Akella80 12.11.2007, 19:18
Понимаю что на VB лучше, одна проблема только - я в нем 0. Подумываю уже на VFP наваять, там хоть немного разбираюсь..
На макросах это вообще возможно (автоматика)?

Автор: bopoha 12.11.2007, 19:26
На макросах возможно. Но не стоит. 

Если есть познания в VFP, то с VB проблем не будет. Языки очень похожи и конструкции одни и те же.

Главное будет узнать, как: создать dbf, выбрать записи из mdb, записать в dbf.
Делается все через библиотеки DAO или ADO.

Об этом в справке информации полно.

Автор: Akella80 12.11.2007, 19:33
В том то и проблема... До отчета 2 дня, а по нему еще счета делать, опять же не без моего участия. Не подскажешь как на макросе в имени файла вывести период (месяц) и из access слить в 866? Время будет сделаю нормальную конструкцию, а сейчас как проще.

Автор: bopoha 12.11.2007, 20:15
Увы, с макросами никогда не работал.

Автор: Akina 12.11.2007, 21:52
Макросы - это готовые процедуры, принимающие строго определенные статические параметры. Посему дополнеительную обработку вроде подстановки месяца они сделать в принципе не способны.

Пишите процедуру на VBA. Справка по этому вопросу достаточно подробная (надо использовать метод TransferDatabase объекта DoCMD, правильно построив в программе все необходимые параметры), даже встроенная, не говоря уж о всякого рода онлайновых справочниках, начиная в MSDN. Там же обычно и вагон примеров прилагается.

 smile А цейтнот - это, извините за грубость, Вашими же руками созданная проблема. Где Вы раньше были?

Автор: Данкинг 13.11.2007, 00:14
Цитата(Akella80 @ 12.11.2007,  20:18)
Понимаю что на VB лучше, одна проблема только - я в нем 0. Подумываю уже на VFP наваять, там хоть немного разбираюсь..
На макросах это вообще возможно (автоматика)?

На фоксе? Теоретически можно, но практически запаришься с типами данных. Уж лучше на Дельфи сделать. Кстати, сегодня как раз делал обратную программу - экспорт из DBF в MDB. smile 

Автор: Akina 13.11.2007, 00:18
Цитата(Данкинг @  13.11.2007,  01:14 Найти цитируемый пост)
Уж лучше на Дельфи сделать.

Всяк кулик свое болото хвалит?  smile впрочем, если топикстартер примет решение делать на Дельфи - не вопрос, перенесу в соотв. раздел...

Автор: Dims 14.11.2007, 05:42
VBA может быть нужен только для того, чтобы изменять имена таблиц. Если ты согласен это делать вручную, то можно VBA и не использовать.

Перевод идеологии DBF на идеологию Access такой.

1) Файл DBF -- есть таблица с именем, совпадающим с именем файла, но без расширения
2) Папка, в которой лежит файл -- это "база данных" (эквивалент всего MDb файла у Access)

Чтобы создать запрос, выводящий данные в DBF, надо

1) Выбрать "создание запроса в режиме конструктора", выбрать обрабатываемые таблицы, задать условия и т.п.
2) Указать тип запроса = создание таблицы
2.1) Указать имя таблицы (имя будущего DBF файла без расширения)
2.2) Выбрать пункт "в другой базе данных"
2.3) В имени файла указать "волшебную" строчку, например: C:\Dbdata "dBASE IV;"

Эта строчка указывает базу данных (папку) и её тип.

Всё. У нас готов запрос на выдачу в конкретную таблицу. Недостатки: типы полей могут быть неудачными для DBF.

Можно приготовить несколько таких запросов на разные выборки и менять номер месяца вручную. Можно на номер месяца забить.

Далее.

Теперь посмотрите на получившийся запрос на языке SQL.

То есть, всё, что Вам нужно научиться на VBA -- это формировать подобные строки и запускать их на выполнение.

Автор: Akella80 14.11.2007, 13:09
Цитата(Dims @ 14.11.2007,  05:42)
VBA может быть нужен только для того, чтобы изменять имена таблиц. Если ты согласен это делать вручную, то можно VBA и не использовать.

В том то и юмор что вариант с назначением имен файлов вручную занятие мягко говоря.... Сейчас подсчитал, может получиться до 200 файлов.
Одним словом сделал экспорт в промежуточную таблицу (файл с нужной структурой и кодировкой в dbf). 
Всем спасибо.
Теперь думаю как все это развести в нужный вид.. В чем проще и быстрее сделать разводку из одного dbf (общий) в порядка 200 файлов с отбором записей и их полей в зависимости от определенных условий (5 полей в общем файле) - VFP или Delfi?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)