Как добавить в аксес файл dbase
DoCmd.TransferDatabase acImport, "dBase III", "D:\WORK", acTable, "spisok", "SPIS_re.dbf"
Access отвечает: Объект spisok не найден ядром базы данных Microsoft Jet.
А куда конкретно вставить? (см. выше)
Добавить в таблицу "D" записи из "d2.dbf"
sSQL = "INSERT INTO D SELECT * FROM d2 IN 'C:\'[dBase III;HDR=NO;IMEX=2];"
CurrentProject.Connection.Execute sSQL
Вместо
CurrentProject.Connection.Execute sSQL
можно так (в А97 - только так)
CurrentDb.Execute sSQL
Вы не ответили, почему мешают десятичные разряды. А размер поля 20 или 16 символов вас устраивает?
при импорте несколько фаилов
каждий раз код создаёт новую таблицу
а как сделаьб ьак чтоб всё записивалос в одной таблице ?
и еще
я импортирую XLS фаил
а как оформить код при фаqле 401.dbf
но не проходить
и выдайт ошибку
<Path> is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides. (Error 3044)
Possible causes:
В любой таблице есть строки и столбцы. Даже в таблице умножения - а ее точно придумали раньше, чем Excel.
Если есть файлы "C:\d1.dbf" и "C:\d2.dbf", то:
Создать таблицу "D" и слить данные из "d1.dbf":
BDE - нет.
А какая связь между экспортом, связями и BDE. Индексы вручную настраивать?
Запрос на присоединение файла MDX индексов не показывает.
С dBase III таже ситуация.
У меня ощущение, что строку экспорта просто не дописываю (. или правда че-нить от борланд поставить.
У вас странная ситуация - нельзя импортировать/присоединить DBF файл, только что созданный экспортом из Access (или импортировать можно?). И INF файл всегда должен появляться вместе с MDX при экспорте в формате dBase IV (dBase 5), если в таблице есть индексы.
Вы не ответили, появляется ли при импорте/связывании окно выбора индекса? Если да, то выбираете ли вы там MDX файл.
я начал проект с нуля и присоединил только DAO и ADO RecordSet 2.8 Library (кста, другие ADO не присоединяются, мож Access 2000?)
Теперь можно перейти непосредственно к описанию процесса присоединения и импортирования внешних таблиц.
Будьте осторожны при присоединении файла таблицы и не работайте непосредственно с оригиналом файла до тех пор, пока не убедитесь в том, что все изменения таблицы, производимые из Access, не вызывают ошибок в исходном приложении, работающем с этой таблицей. Используйте для опытов резервную копию файла таблицы.
Чтобы присоединить или импортировать таблицу dBASE или Paradox в открытую базу данных Access 2002:
- Откройте любую базу данных, например демонстрационную базу данных "Борей" (Northwind). Access 2000 не требует, чтобы окна объектов базы данных (форм, запросов или отчетов) были закрыты в процессе импорта или присоединения таблиц.
- Чтобы присоединить внешнюю таблицу к базе данных, выберите команду Файл, Внешние данные, Связь с таблицами (File, Get External Data, Link Tables). Появится диалоговое окно Связь (Link), изображенное на рис. 3.1. Чтобы импортировать внешнюю таблицу в базу данных, выберите команду Файл, Внешние данные, Импорт (File, Get External Data, Import). Появится диалоговое окно Импорт (Import) (рис. 3.2). Эти диалоговые окна являются модифицированными стандартными окнами открытия документа Microsoft Office.
Можно начать процесс присоединения или импорта, щелкнув правой кнопкой мыши на свободном поле окна базы данных и выбрав из контекстного меню команду Связь с таблицами (Link Tables) или Импорт (Import).
Если присоединяемая таблица находится на другом компьютере локальной сети, рекомендуется в поле Имя файла (File name) вводить полный путь к файлу сети, например \\Tyger\Dbase\Tables\Clients.dbf. Использование вместо этого имени логического диска чревато тем, что переназначение логического диска может нарушить связь с таблицей.
Если присоединяется файл dBASE, после этого появляется диалоговое окно Выбор индексного файла (Select Index Files) (рис. 3.3). Это вызвано тем, что индексные файлы dBASE (в отличие от Paradox) не присоединяются автоматически, т. к. в заголовке файла dBASE не содержится информации об используемых индексах. Заметьте, что это диалоговое окно не появляется при импорте таблицы dBASE.
Если присоединяется таблица dBASE III, то по умолчанию Access 2002 использует для индексного файла расширение ndx. Таблица dBASE III может иметь как один, так и несколько индексов. Поскольку каждый индекс хранится в отдельном файле, может потребоваться присоединить несколько индексных файлов.
Системы управления базами данных dBASE IV и dBASE 5 позволяют хранить несколько индексов в одном файле (МDХ). Имя индексного файла обычно совпадает с именем таблицы. При присоединении таблиц dBASE IV или dBASE 5 приложение Access 2002 ищет в папке, в которой находится присоединяемая таблица, оба типа индексных файлов (и NDX, и МDХ).
Рис. 3.3. Диалоговое окно Выбор индексного файла
Access 2002 не проверяет индексный файл на соответствие структуре присоединяемой таблицы dBASE. Если индексный файл не соответствует таблице, его обновление производиться не будет. К сожалению, Access 2002 не выводит предупреждения об использовании индексного файла, не соответствующего таблице. Использование таблицы, для которой был неверно указан индексный файл, может вызвать ошибки в приложении dBASE. Чтобы устранить такую ошибку (если она возникнет), необходимо переиндексировать таблицу в приложении, создавшем ее. Если присоединяемая таблица использует несколько индексов, необходимо добавить все индексы, если предполагается изменять содержимое таблицы средствами Access. В противном случае при изменении значения поля, по которому проин-дексирована таблица, соответствующий индексный файл не будет обновлен, а это может вызвать ошибки при использовании таблицы в исходном приложении.
Диалоговое окно Связь (или Импорт) остается открытым после завершения операции, позволяя, если это необходимо, присоединить или импортировать еще какие-либо внешние таблицы. Повторите процедуру с шага 3 по шаг 8 для остальных таблиц базы данных.
Чтобы закрыть диалоговое окно Связь (или Импорт), нажмите кнопку Закрыть (Close). Присоединенные и импортированные таблицы появятся в окне базы данных. Слева от значка присоединенной таблицы выводится стрелка, указывающая на то, что таблица хранится во внешнем файле (рис. 3.4), а сам значок определяет тип (формат) присоединенного файла.
Дважды щелкните левой кнопкой мыши по присоединенной таблице в окне базы данных. Внешняя таблица будет открыта в режиме Таблицы (рис 3.5).
Access 2002 не позволяет открывать и обновлять индексные файлы таблиц Xbase, хранящиеся в формате, отличном от формата dBASE. Например, Access 2002 не может работать с индексными файлами приложений, разработанных при помощи компилятора CA-Clipper (формат NTX). Тем не менее CA-Clipper (5+) дает возможность создавать и использовать индексные файлы в стандартном формате dBASE (NDX). Access 2002 не может применять и дополнительные индексные файлы Paradox. Поэтому при создании приложений, данные из которых предполагается использовать в Access, необходимо работать только со стандартными форматами индексных файлов. Модификация существующего приложения с целью использования стандартных индексных файлов не должна вызвать затруднений, но производительность может существенно понизиться.
Рис. 3.4. Присоединенные таблицы в окне базы данных
В процессе присоединения индексных файлов dBASE Access создает специальный файл, который содержит перечень индексных файлов. Это обычный текстовый файл, который имеет расширение inf и располагается в той же папке, что и присоединенная таблица. Данный файл нельзя никуда перемещать, т. к. если Access не находит этого файла (или не находит одного из индексных файлов, указанных в файле inf), работать с присоединенной таблицей нельзя, и придется ее заново присоединять. .
Рис. 3.5. Присоединенная таблица Paradox открыта в режиме таблицы
При присоединении или импорте внешней таблицы Access 2002 читает заголовок файла таблицы и преобразует типы данных полей внешней таблицы в типы данных Access. Поскольку Access 2002 поддерживает больше типов данных, чем другие настольные СУБД, преобразование типов происходит правильно. В табл. 3.3 приведено соответствие между типами данных таблиц dBASE, Paradox и Access.
dBASE III/IV | Paradox 3.0, 4.0, 5.0 | Access |
Character | Alphanumeric | Текстовый (Text) |
Numeric, Floa | Number, Money, BCD | С плавающей точкой (8 байтов) (Double) |
С плавающей точкой (4 байтов) (Single) | ||
Байт (Byte) | ||
Short Number | Целое (Integer) | |
Long Number | Длинное целое (Long) | |
Autolncrement | Счетчик (AutoNumber) | |
Logical | Logical | Логический (Yes/No) |
Date | Date, Time, Timestamp | Дата/время (Data/Time) |
Memo | Memo, Formatted memo | Поле MEMO (Memo) |
Binary, OLE | Поле объекта OLE (OLE) |
Таблица 3.3. Соответствие типов данных некоторых СУБД
При импорте из многопользовательской базы данных необходимо иметь монопольный доступ к импортируемому файлу таблицы. При этом другие пользователи не будут иметь доступа к файлу таблицы, пока не будет закрыто диалоговое окно Импорт (Import).
В Access 2002 вы можете непосредственно открывать файлы других форматов из диалогового окна Открытие файла базы данных (Open). Открыв список в поле Типы файлов этого окна, вы увидите в этом списке все те форматы, которые мы только что описывали. При выборе файла одного из указанных в списке форматов Access создает новый файл базы данных (в формате Access) в той же папке, в которой находится выбранный файл, и присоединяет (импортирует) все таблицы из выбранной базы данных.
Импорт или присоединение таблиц из внешних источников данных с помощью драйверов ODBC выполняется аналогично. В списке типов файлов окна Связь (или Импорт) нужно установить значение ODBC Databases, после чего сразу появляется диалоговое окно, в котором необходимо выбрать источник данных или создать новый. После создания источника данных дальнейший процесс импорта (присоединения) выполняется так же, как и для таблиц других баз данных.
Импорт и присоединение таблиц других форматов — достаточно сложный процесс, который не всегда завершается успешно. При обнаружении проблем в процессе импорта файла Access 2002 создает таблицу Ошибки импорта (Import Errors), которая отображается в списке таблиц окна базы данных. Чтобы посмотреть обнаруженные ошибки, откройте эту таблицу.
dBASE — одна из самых старых систем управления базами данных, и формат файла dBASE (DBF) применялся долгое время. Microsoft Access поддерживает экспорт данных в такие форматы файлов dBASE: dBASE III, dBASE IV, dBASE 5 и dBASE 7.
Обратите внимание на то, что поддержка dBASE имеет следующие требования:
Microsoft 365 Если вы Microsoft 365 подпиской, убедитесь, что у вас последняя версия Office. Если вы ИТ-специалисты, управляющие процессом обновления Microsoft 365 канала, ознакомьтесь со страницей выпусков каналов, чтобы узнать, какие обновления предоставляются в каждом канале.
Выпуски Office 2016 "нажми и нажми ижми и нажми ижми" Обновления применяются автоматически.
Экспорт данных в файл dBASE
На вкладке Внешние данные в группе Экспорт нажмите кнопку Дополнительно и выберите пункт Файл dBASE.
В диалоговом окне Экспорт — Файл dBASE нажмите кнопку Обзор.
В диалоговом окне Сохранение файла выберите папку и введите имя в поле Имя файла.
По умолчанию выбран формат файла dBASE III. Чтобы изменить его на dBASE IV или dBASE 5, выберите нужный формат из раскрывающегося списка Тип файла. В списке нет формата файла dBASE 7, но он фактически ничем не отличается от формата dBASE 5. В Access для Office 365 и Access 2019 поддерживаются имена файлов размером до 64 знаков.
Вы также можете выбрать формат файла dBASE в диалоговом окне Экспорт — Файл dBASE в поле Формат файла.
При необходимости вы можете сохранить настройки экспорта. Дополнительные сведения см. в статье Выполнение сохраненной операции импорта или экспорта.
В результате будет создан файл dBASE в указанном расположении и формате.
Access 2013 не поддерживает формат dBASE
Экспорт в файл dBASE не поддерживается в Access 2013. Для работы с файлами dBASE можно учесть возможность обновления до Microsoft 365 подписки. Экспорт в dBASE доступен в Microsoft 365 Access по подписке.
Экспорт данных в файл dBASE
На вкладке Внешние данные в группе Экспорт нажмите кнопку Дополнительно и выберите пункт Файл dBASE.
В диалоговом окне Экспорт — Файл dBASE нажмите кнопку Обзор.
В диалоговом окне Сохранение файла выберите папку и введите имя в поле Имя файла.
По умолчанию выбран формат файла dBASE III. Чтобы изменить его на dBASE IV или dBASE 5, выберите нужный формат из раскрывающегося списка Тип файла. В списке нет формата файла dBASE 7, но он фактически ничем не отличается от формата dBASE 5.
Вы также можете выбрать формат файла dBASE в диалоговом окне Экспорт — Файл dBASE в поле Формат файла.
При необходимости вы можете сохранить настройки экспорта. Дополнительные сведения см. в статье Выполнение сохраненной операции импорта или экспорта.
За время работы разработчиком Access набралась куча полезностей, которую считаю своим долгом выложить на Хабр. Многие из этих сниппетов находятся в сети, а некоторые находятся с трудом или безнадежно затеряны.
Указав в виде параметра 0 для отключения и 1 для включения.
2. Для того, чтобы защитить базу данных от посторонних глаз и разграничить права доступа используется файл рабочей группы ( формата .MDW ). Путь к файлу рабочей группы можно указать вручную, но если в сети много пользователей, то гораздо удобнее иметь файлик Access с кнопкой, по нажатию которой отрабатывает одна строка кода, задающая путь к MDW:
3. Не знаю, как бы я работал (наверное, работал бы так же, но гораздо медленнее), если бы не создал себе форму с поиском текста в содержимом запросов или форм. Очень часто необходимо производить какой-то рефакторинг или определять область применения таблицы или поля.
Для поиска по запросам поможет форма с кодом, который выполняет поиск в тексте запросов:
Для поиска по формам код немного объемнее:
4. Для того, чтобы сделать нашу работу чуть более солидной с точки зрения программирования и для возможности поиска ошибок при работе в режиме production на рабочей базе данных очень желательно добавить модуль VBA (tracing модуль) для записи происходящих событий в текстовый файл лога. Простая функция записи в текстовый файл будет очень полезна при отладке.
5. Этот код (из пункта 4) вполне можно вынести в отдельный файл базы данных Access и добавить во все существующие базы данных через References/Ссылки редактора VBA.
Если у вас имеется несколько файлов баз данных Access, то любой повторяющийся код можно вынести в отдельный файл. Единственное изменение, которое может быть необходимо сделать — в случае если в коде используется объект CurrentDb, то заменить его на CodeDb, дабы обращение шло к объектам той базы, которая используется в качестве хранителя общего кода.
6. Зачастую в запросах указывают в качестве параметра значение какого-либо поля открытой формы. Например, таким образом:
Но иногда необходимо указать параметр непосредственно в самом запросе. Сделать это можно так:
И далее из кода Access задать эти параметры и выполнить запрос:
Альтернативой может быть создание модуля VBA и добавление в него глобальной переменной, а также функции, возвращающей эту переменную.
Перед запуском запроса необходимо задать значение глобальной переменной (можно задать при открытии основной формы):
И в самом запросе указать параметром название возвращающей значение функции:
6.1 Этот способ получения параметра запроса можно использовать для частичного ограничения доступа к информации таблицы (в случае использования рабочей группы). При загрузке формы в зависимости от текущего пользователя установим значение глобальной переменной:
Далее установим запрет на просмотр и изменение таблицы demotable, а на запрос установим разрешение. Но так как запрос у нас использует таблицу, на которую нет прав, то данных он нам не вернет. Для того, чтобы он вернул данные необходимо к sql запроса добавить в конце
В результате пользователь Buh сможет иметь доступ ко всем строкам таблицы, а все остальные пользователи ко всем строкам за исключением первой 1000.
7. Для того, чтобы открыть форму из кода используется код:
В качестве «WhereCondition» можно указать условие, на какой записи формы необходимо её открыть (в случае, если форма привязана к данным). Указав, например, «ZakazID=56325», можно открыть форму именно со значением данных ZakazID равным 56325.
В качестве значения «OpenArgs» можно указать какие-либо параметры, которые на открываемой форме можно будет считать
в Private Sub Form_Load() с помощью Me.OpenArgs. Если необходимо передать несколько параметров, то можно передать их в виде текстовой строки, разделив символом. И далее в Private Sub Form_Load() разбить на части:
8. Многие забывают, что Access работает не только таблицами из файлов mdb/accdb, но и с таблицами других баз данных. Для экспорта уже существующих таблиц есть бесплатная утилита SQL Server Migration Assistant, хотя можно воспользоваться и встроенным функционалом или найти стороннее решение.
И напоследок небольшой хинт из разряда «Это знает каждый ребенок, но я вот этого не знал…»:
Знаете ли вы, что для того, чтобы при открытии файла Access не срабатывали макросы и не открывалась форма по умолчанию, необходимо держать нажатой клавишу Shift?
Читайте также: