Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ADP-проект, импорт из Excel / 25 сообщений из 25, страница 1 из 1
26.03.2019, 13:09
    #39791450
-SWAN-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
Здравствуйте!
Посоветуйте, пожалуйста, как загрузить данные из Excel в проект adp
пробую так (ругается на IN)
Код: vbnet
1.
2.
3.
   CurrentProject.Connection.Execute "INSERT INTO dbl.dbo.tblMain ([datPR], [client], [brand],  [model], [sn], [opis]) " & _
                    "SELECT [Дата приема], 1, 2, [Референс часов], [Серийный номер], [Описание внешнего вида часов при приеме] " & _
                    "FROM [list1$] IN 'C:\LEBED\TESTLebed.xlsx' [Excel 12.0;HDR=YES]"



пробую по другому
Код: vbnet
1.
2.
3.
    CurrentProject.Connection.Execute "INSERT INTO dbl.dbo.tblMain ([datPR], [model]) " & _
                    "SELECT [datpr], model " & _
                    "FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','C:\LEBED\TESTLebed.xlsx','select * from [list1$]')"



ругается на провайдера

Как быть?
...
Рейтинг: 0 / 0
26.03.2019, 13:19
    #39791462
yoichi730
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
Нужно новый connection организовывать, а не вязаться к существующему..
...
Рейтинг: 0 / 0
26.03.2019, 13:21
    #39791463
yoichi730
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
А вообще, adp к чему привязан? sql?
...
Рейтинг: 0 / 0
26.03.2019, 13:29
    #39791473
-SWAN-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
yoichi730А вообще, adp к чему привязан? sql?
да, adp привязан к MS SQL
пытался сделать через EXEC процедуры, так там тоже ругается на поставщика
...
Рейтинг: 0 / 0
26.03.2019, 13:29
    #39791475
-SWAN-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
yoichi730Нужно новый connection организовывать, а не вязаться к существующему..

а connection создать к файлу excel-ному?
...
Рейтинг: 0 / 0
26.03.2019, 13:36
    #39791485
yoichi730
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
Опиши задачу по подробнее, что в excel хранится.. С картинками, обожаю картинки)
...
Рейтинг: 0 / 0
26.03.2019, 13:42
    #39791491
-SWAN-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
yoichi730Опиши задачу по подробнее, что в excel хранится.. С картинками, обожаю картинки)

В ADP кнопка "Загрузить данные из Excel" - открывается "выбор файла" (в файле столбцы постоянные) - и далее надо данные из выбранного файла загрузить (insert) в таблицу MS SQL.
...
Рейтинг: 0 / 0
26.03.2019, 13:52
    #39791499
yoichi730
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
Забудь про connection. Проще будет работать с com-объектом Excel.
Вот пример работы с объектом..
...
Рейтинг: 0 / 0
26.03.2019, 13:57
    #39791503
-SWAN-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
yoichi730Забудь про connection. Проще будет работать с com-объектом Excel.
Вот пример работы с объектом..

так в таблицу на MS SQL загружать данные из Excel по одной строке?
...
Рейтинг: 0 / 0
26.03.2019, 14:03
    #39791513
yoichi730
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
Как работать с com-объектом гугли.
А так, логика следующая(имхо)...
1. Создаешь объект
2. Открываешь свой файл Excel через объект
3. Построчно считываешь таблицу Excel, и записываешь в dbl.dbo.tblMain
3.5 дописываешь в оригинальную таблицу Excel "флажок" после удачного импорта записи (не обязательно но предпочтительно, вдруг там в таблице 100000000000 записей и в случае падения задачи не искать долго где остановился)
4. Если все удачно закрываешь com-объект.
PS
3 пункт можно разделить на этапы, сперва считать,далее сохранить в промежуточный recordset и потом только записать в в таблицу на сервер
...
Рейтинг: 0 / 0
26.03.2019, 14:09
    #39791521
yoichi730
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
-SWAN- так в таблицу на MS SQL загружать данные из Excel по одной строке?
... а ты думал). тот же INSERT INTO в sql построчно записывает
...
Рейтинг: 0 / 0
26.03.2019, 14:14
    #39791527
-SWAN-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
yoichi730-SWAN- так в таблицу на MS SQL загружать данные из Excel по одной строке?
... а ты думал). тот же INSERT INTO в sql построчно записывает

В sql сделал процедуру
Код: sql
1.
2.
3.
4.
insert into dbl.dbo.tblMain ([datPR], [client], [brand],  [model], [sn], [opis])
select [Дата приема], 1, 2, [Референс часов], [Серийный номер], [Описание внешнего вида часов при приеме] 
from openrowset('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;Database=\\WDMYCLOUD\Public\обмен\tmpLebed\TESTLebed.xlsx;HDR=YES;IMEX=1', 'select * from [list1$]')
where [Дата приема] is not null



но не работает из ADP
(разве здесь по одной строке insert?
...
Рейтинг: 0 / 0
26.03.2019, 14:18
    #39791533
yoichi730
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
Работает из sql? Запакуй код в функцию на сервере и вызывай ее из access вот этим вот "CurrentProject.Connection.Execute ...."
...
Рейтинг: 0 / 0
26.03.2019, 14:25
    #39791540
-SWAN-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
yoichi730Работает из sql? Запакуй код в функцию на сервере и вызывай ее из access вот этим вот "CurrentProject.Connection.Execute ...."

процедура на SQL из SQL работает нормально.
Но когда я её вызываю из ADP то выскакивает ошибка
...
Рейтинг: 0 / 0
26.03.2019, 15:24
    #39791621
yoichi730
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
в sql
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE FUNCTION ImportFromExcel()
RETURNS byte AS 
Begin

	insert into dbl.dbo.tblMain ([datPR], [client], [brand],  [model], [sn], [opis])
	select [Дата приема], 1, 2, [Референс часов], [Серийный номер], [Описание внешнего вида часов при приеме] 
        from openrowset('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;Database=\\WDMYCLOUD\Public\обмен\tmpLebed\TESTLebed.xlsx;HDR=YES;IMEX=1', 'select * from [list1$]')
	where [Дата приема] is not null

return 1
end
GO


В access
Код: vbnet
1.
2.
Dim nOk As boolean
Set  nOk = CurrentProject.Connection.Execute ImportFromExcel()



Как-то так... Код стопудова не запуститься, хотел только выразить идею, алгоритм действий.
...
Рейтинг: 0 / 0
26.03.2019, 15:36
    #39791644
-SWAN-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
yoichi730, именно так я и сделал, но ошибка
...
Рейтинг: 0 / 0
26.03.2019, 15:52
    #39791663
yoichi730
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
Давай код в процедуре из sql и как ты эту процедуру вызываешь
...
Рейтинг: 0 / 0
26.03.2019, 16:52
    #39791709
ADP-проект, импорт из Excel
-SWAN-В sql сделал процедуру
Код: sql
1.
2.
3.
4.
insert into dbl.dbo.tblMain ([datPR], [client], [brand],  [model], [sn], [opis])
select [Дата приема], 1, 2, [Референс часов], [Серийный номер], [Описание внешнего вида часов при приеме] 
from openrowset('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;Database=\\WDMYCLOUD\Public\обмен\tmpLebed\TESTLebed.xlsx;HDR=YES;IMEX=1', 'select * from [list1$]')
where [Дата приема] is not null


но не работает из ADP На всякий случай (возможно не в тему), Excel 8.0 - это формат для XLS файлов версии 97-2003. Для xlsx нужно указывать Excel 12.0 XML или (возможно) Excel 12.0
...
Рейтинг: 0 / 0
26.03.2019, 17:32
    #39791752
-SWAN-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
yoichi730Давай код в процедуре из sql и как ты эту процедуру вызываешь

в SQL процедура:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ALTER PROCEDURE [dbo].[InsertNewTotblMAINFromExcel]

 AS
BEGIN

insert into dbl.dbo.tblMain ([datPR], [client], [brand],  [model], [sn])
select [Дата приема], 1, 2, [Референс часов], [Серийный номер] from openrowset('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=\\WDMYCLOUD\Public\обмен\tmpLebed\TESTLebed.xlsx;HDR=YES;IMEX=1', 'select * from [list1$]')
where [Дата приема] is not null

end


в Access вызываю так:
Код: vbnet
1.
   CurrentProject.Connection.Execute "exec dbL.dbo.InsertNewTotblMAINFromExcel"



получаю ошибку (см выше)
...
Рейтинг: 0 / 0
26.03.2019, 17:35
    #39791756
-SWAN-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
yoichi730,
и ещё сам коннескт в ADP
Код: vbnet
1.
2.
?CurrentProject.Connection
Provider=Microsoft.Access.OLEDB.10.0;Persist Security Info=False;Data Source=1C-SRV;Integrated Security=SSPI;Initial Catalog=dbL;Data Provider=SQLOLEDB.1
...
Рейтинг: 0 / 0
27.03.2019, 07:56
    #39791985
yoichi730
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
-SWAN-,

Выглядит как работоспособно..
1. Могу подозревать что прав не хватает. По моему для запуска процедур и функций на sql требуются права особые, но это не точно. Попробуй запустить другую рабочую процедуру/функцию.
2. Попробуй запустить процедуру Access-ом так
Код: vbnet
1.
CurrentProject.Connection.Execute "exec dbL.dbo.InsertNewTotblMAINFromExcel111111"


Намеренно укажи ошибку в строке команды. Что выдаст?
3. Крайняя мера. Как "дебажить" процедуру из внешнего приложения без хитростей не представляю. Можно преобразовать процедуру в функцию, и после каждого шага делать return "чего-нибудь", показывающего на каком шаге произошел выход из функции.
...
Рейтинг: 0 / 0
27.03.2019, 10:40
    #39792075
-SWAN-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
yoichi730, другие процедуры в SQL, в которых нет OPENROWSET запускаются из Accessa наУРА.
...
Рейтинг: 0 / 0
27.03.2019, 10:52
    #39792084
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
-SWAN-yoichi730, другие процедуры в SQL, в которых нет OPENROWSET запускаются из Accessa наУРА.нуу ещё бы ! чо бы им не запускаться :)

этот запрос, ваще, отрабатывает в SSMS-е ?
Код: sql
1.
2.
3.
	select [Дата приема], 1, 2, [Референс часов], [Серийный номер], [Описание внешнего вида часов при приеме] 
        from openrowset('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;Database=\\WDMYCLOUD\Public\обмен\tmpLebed\TESTLebed.xlsx;HDR=YES;IMEX=1', 'select * from [list1$]')
	where [Дата приема] is not null


Для того, что бы он был "рабочим", столько условий нужно, что бы было соблюдено ...

должен быть установлен ACE.OLEDB.12.0 драйвер на сервере, ещё и с битностью сервера
На сервере должны быть разрешены Ad Hoc запросы
Для драйвера должны быть разрешены свойства AllowInProcess и DynamicParameters
У логина (если это вин-логин) должно быть разрешение на UNC-каталог \\WDMYCLOUD. А если это скл-аутетификация, то должно быть разрешение на каталог для сис.пользователя, под которым выполняется служба скл-сервера ...

У тебя это всё есть ? :)

пс
С некоторых пор работа с Экселем из СКЛ Сервера стала настолько "замороченной", что я (абсолютно всерьёз) советовал бы импортировать через mdb/accdb (возможно временный), в который залинкованна серверная таблица, в которую и нужно импортировать
...
Рейтинг: 0 / 0
27.03.2019, 10:57
    #39792086
-SWAN-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
court, запрос
Код: sql
1.
2.
select [Дата приема], 1, 2, [Референс часов], [Серийный номер] from openrowset('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=\\WDMYCLOUD\Public\обмен\tmpLebed\TESTLebed.xlsx;HDR=YES;IMEX=1', 'select * from [list1$]')
where [Дата приема] is not null



отрабатывает в SSMS наУра.
...
Рейтинг: 0 / 0
27.03.2019, 11:07
    #39792098
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP-проект, импорт из Excel
-SWAN-court, запрос
Код: sql
1.
2.
select [Дата приема], 1, 2, [Референс часов], [Серийный номер] from openrowset('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=\\WDMYCLOUD\Public\обмен\tmpLebed\TESTLebed.xlsx;HDR=YES;IMEX=1', 'select * from [list1$]')
where [Дата приема] is not null




отрабатывает в SSMS наУра.под каким пользователем в ССМС и под каким в АДП ?
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ADP-проект, импорт из Excel / 25 сообщений из 25, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]