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

Форум: MS ACCESS

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

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

 
 

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

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

тема: как импортировать из Excel в Access
 
 автор: btm77   (30.07.2008 в 08:02)   личное сообщение
 
 

помогите, пожалуйста.
как можно импортировать данные из экселя в акцес (2007) с указанием типа данных?
например чтобы столбец был текстом, а не числом.
спасибо

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

Присоединить лист Excel как таблицу и запросом SELECT INTO создать новую таблицу.
В запросе выполнить преобразование типов, например [Числовое поле] & "" - получаем текст.
А что мешает изменить тип поля в полученной таблице после импорта?
Если в Excel в столбце есть и числа и текст, из-за этого проблемы с импортом, то перед импортом переместите несколько (возможно хватит и одной) строк с текстовыми значениями в начало таблицы. Тогда вы получите текстовое поле.

ЗЫ. Очень хочется посмотреть на строку подключения к Excel2007 в прилинкованной таблице.
У меня - негде.

  Ответить  
 
 автор: btm77   (31.07.2008 в 08:49)   личное сообщение
 
 

решил проблему через INSERT INTO.
вот только небольшой затык с данными в фотмате Дата.
у меня в экселе там че попало (кто-то ставит точку в конце, кто-то добавляет г. и т.д.)
когда импортирую в виде текста корректные даты превращаются в числа вроде 35678,
а когда в виде даты - корявые даты не садятся.
изменить тип после импорта можно, но тогда те данные, которые не уселись будут потеряны. кроме того у меня экселевских файлов кучка и я хочу сделать чтобы они все автоматом подгружались.
а что такое строка подключения?

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

Для этого можно написать и использовать в запросе функцию, получающую значение ячейки и преобразующую ее в дату. Как это делать, можно придумать кучу способов. Предлагаю такой:

  v2 = Null
If IsDate(v1) Then 
  v2 = CDate(v1)
ElseIf v1Like "#*.#*.#*" Then
  v2 = Split(v1,".")
 If UBound(v2) >= 2 Then
  v2 = DateSerial(Val(v2(0)), Val(v2(1)), Val(v2(2)))
 End If
End If

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