|
|
|
| Собственно сабж.
Импортить через мастер умею. Но нужно делать это дело программно. Просто пишу прогу, которая принимает новые данные из другого структурного подраздиления о сотрудниках.
То бишь. Есть файл дбф, есть таблица в акцессе с идентичной структурой. В общем как подключиться к дбфному файлу и выполнить запрос на добавление в таблицу в аксессе? | |
|
| |
|
|
|
| Для файла C:\Import\MyFile.dbf и таблицы MyTable:
CurrentDB.Execute "INSERT INTO MyTable FROM MyFile IN 'C:\Import' [dBase 5.0;]" | |
|
| |
|
|
|
|
| К сожалению не работает.
Выдает ошибку "Ошибка синтаксиса в инструкции INSERT INTO" | |
|
| |
|
|
|
| Ладно уже догадался как. Все заработало. Только вот теперь другая проблема выскачила. Когда импортишь в таблицу, после процесса смотриш, а там крякозябра | |
|
| |
|
|
|
| Какая кодировка в самом файле? Как "у них" выполняется экспорт?
Вообще кодировка в DBF - очень популярные грабли.
Может стоит подумать об обмене данными "между своими" через MDB файл? Или Excel, или, накрайняк, текстовый файл? | |
|
| |
|
|
|
| Не знаю, какая кодировка. Вроде бы VisualFox Pro 3.0.
Но вообщем нашел решение проблемы на одном из форумов, по крайней мере у меня все заработало и кракозябра исчезла.
Вот решение, если кому нужно.
для борьбы с "кракозябами" надо подправить немного реестр Windows.
[HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\Engines\Xbase]
"DataCodePage"="OEM" параметр надо изменить на на ANSI:
"DataCodePage"="ANSI"
Хотя и было написано, что данный пример работает для Вин 98/2000, но у меня ХР Про, все запахало. | |
|
| |
|
|
|
| КСТАТИ, А ЕСТЬ ГДЕ-НИТЬ ПРИМЕР ИМПОРТА ИЗ ЕКСЕЛЯ??? | |
|
| |
|
|
|
| "DataCodePage"="ANSI" - не панацея. Если на компе установлен BDE, то этот параметр игнорируется. Если у вас файл FoxPro, то лучшим решением будет использование ODBC драйвера Visual FoxPro. Подробнее о DBF-ах можете почитать здесь.
Что касается Excel, то импорт запросто выполняется методом DoCmd.TransferSpreadsheet (читайте Help), или, опять же, запросом (для файла C:\Import\MyFile.xls с заголовками столбцов):
CurrentDB.Execute "INSERT INTO [My Table] FROM MyFile IN 'C:\Import' [Excel 8.0;HDR=Yes]"
|
| |
|
| |
|
|
|
| Спасибо за помощь.
Хм...странно...у меня стоит BDE. Я даже там параметр xbase языковой выставлял (просто на некоторых форумах рекомендовали). Но это не спасло. Спас реестр. Да согласен, конечно, что можно и обойтись другими методами, как написано в ваших рекомендациях по ссылке. Большое спасибо буду иметь ввиду. | |
|
| |