Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: osmor
Первый способ просто выполняет запрос, все что не может быть вставлено пропускается.
используйте
CurrentDb.Execute (sql,dbFailOnError) в этом случае при невозможности вставки получите сообщение о ошибке.
если будете использовать вместо Insert into, SELECT поле1[, поле2[, ...]] INTO (запрос на создание таблицы), то вероятно результат будет таким же как и и во втором случае.
Точно поле в которое вы пытаетесь добавить данные из столбца с датами - текстовое?

Во втором случае ACCESS пытается пытается определить тип столбцов в Excel таблице и создает соответствующие поля в таблице ACCESS.
Поскольку столбец с датами "идентифицируется" как ДАТА, то в случае когда даты разделены пробелом, получается текст и ACCESS его не может преобразовать и из-за этого пропускает, в случае когда дата разделена переводом каретки, данные в ячейки воспринимаются как массив (я так думаю), но поскольку в ACCESS нет типа данных для хранения массивов, то берется только первый элемент.
ЧТо можно сделать...
ПОпробуйте в ручную импортировать Лист.... Получилось?
еще попробуйте изменить запрос приводя поля к нужному типу, т.е.
sql = sql & " SELECT cstr([Поле1]), cstr([Поле2]), cint(Поле3), ........ FROM [$A6:BS" & k - 18 & "] IN '" & nm & "'[Excel 8.0;HDR=No]; "


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.