Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Импорт dbf в access
 
 автор: mulrus   (27.04.2009 в 16:28)   личное сообщение
 
 

Собственно сабж.

Импортить через мастер умею. Но нужно делать это дело программно. Просто пишу прогу, которая принимает новые данные из другого структурного подраздиления о сотрудниках.

То бишь. Есть файл дбф, есть таблица в акцессе с идентичной структурой. В общем как подключиться к дбфному файлу и выполнить запрос на добавление в таблицу в аксессе?

  Ответить  
 
 автор: Анатолий (Киев)   (27.04.2009 в 17:59)   личное сообщение
 
 

Для файла C:\Import\MyFile.dbf и таблицы MyTable:
CurrentDB.Execute "INSERT INTO MyTable FROM MyFile IN 'C:\Import' [dBase 5.0;]"

  Ответить  
 
 автор: mulrus   (27.04.2009 в 22:55)   личное сообщение
 
 

Спасибо большое!

  Ответить  
 
 автор: mulrus   (28.04.2009 в 11:28)   личное сообщение
 
 

К сожалению не работает.

Выдает ошибку "Ошибка синтаксиса в инструкции INSERT INTO"

  Ответить  
 
 автор: mulrus   (28.04.2009 в 11:32)   личное сообщение
 
 

Ладно уже догадался как. Все заработало. Только вот теперь другая проблема выскачила. Когда импортишь в таблицу, после процесса смотриш, а там крякозябра

  Ответить  
 
 автор: Анатолий (Киев)   (28.04.2009 в 12:38)   личное сообщение
 
 

Какая кодировка в самом файле? Как "у них" выполняется экспорт?
Вообще кодировка в DBF - очень популярные грабли.
Может стоит подумать об обмене данными "между своими" через MDB файл? Или Excel, или, накрайняк, текстовый файл?

  Ответить  
 
 автор: mulrus   (28.04.2009 в 13:03)   личное сообщение
 
 

Не знаю, какая кодировка. Вроде бы VisualFox Pro 3.0.

Но вообщем нашел решение проблемы на одном из форумов, по крайней мере у меня все заработало и кракозябра исчезла.

Вот решение, если кому нужно.

для борьбы с "кракозябами" надо подправить немного реестр Windows.

[HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\Engines\Xbase]
"DataCodePage"="OEM" параметр надо изменить на на ANSI:
"DataCodePage"="ANSI"

Хотя и было написано, что данный пример работает для Вин 98/2000, но у меня ХР Про, все запахало.

  Ответить  
 
 автор: mulrus   (28.04.2009 в 13:04)   личное сообщение
 
 

КСТАТИ, А ЕСТЬ ГДЕ-НИТЬ ПРИМЕР ИМПОРТА ИЗ ЕКСЕЛЯ???

  Ответить  
 
 автор: Анатолий (Киев)   (28.04.2009 в 13:43)   личное сообщение
 
 

"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]"

  Ответить  
 
 автор: mulrus   (28.04.2009 в 14:27)   личное сообщение
 
 

Спасибо за помощь.

Хм...странно...у меня стоит BDE. Я даже там параметр xbase языковой выставлял (просто на некоторых форумах рекомендовали). Но это не спасло. Спас реестр. Да согласен, конечно, что можно и обойтись другими методами, как написано в ваших рекомендациях по ссылке. Большое спасибо буду иметь ввиду.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList