Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не работает импорт из OLAP / 25 сообщений из 65, страница 1 из 3
25.08.2016, 14:42
    #39297917
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
Здравствуйте!

Пытаюсь импортировать данные с OLAP и вставить в таблицу с помощью такого кода

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
Option Compare Database

Sub ИмпортИзOLAP()

Dim Cn As Object
Dim РекордсетИмпорт As Object
Dim РекордсетТаблицаAccess As Object

Set Cn = CreateObject("ADODB.Connection")
Cn.ConnectionString = "Provider=MSOLAP.3;" & _
    "Integrated Security=SSPI;" & _
    "Persist Security Info=True;" & _
    "Initial Catalog=profit;" & _
    "Data Source=.......................;" & _
    "MDX Compatibility=1;" & _
    "Safety Options=2;" & _
    "MDX Missing Member Mode=Error"
Cn.Open

Set РекордсетИмпорт = CreateObject("ADODB.Recordset")
Set РекордсетИмпорт.activeconnection = Cn
РекордсетИмпорт.Source = "Select {} on 0, [Города].[Город].[Город] on 1 from profit"

РекордсетИмпорт.Open

Set РекордсетТаблицаAccess = CreateObject("ADODB.Recordset")
РекордсетТаблицаAccess.Open "Города", CurrentProject.Connection

If Not (РекордсетИмпорт.BOF = True And РекордсетИмпорт.EOF = True) Then
    РекордсетИмпорт.MoveFirst
    
    Do While Not РекордсетИмпорт.EOF
        РекордсетТаблицаAccess.AddNew
        РекордсетТаблицаAccess.Fields(0) = РекордсетИмпорт.Fields(0)
        РекордсетИмпорт.MoveNext
    Loop
End If

'Set РекордсетИмпорт = Nothing
'Set РекордсетТаблицаAccess = Nothing
РекордсетИмпорт.Close
РекордсетТаблицаAccess.Close
Cn.Close

End Sub


1. Данные почему то не выгружаются, то есть отсутствуют строки. А через в Microsofr SQL Managment Studio выгружаются строки при таком запросе. Почему не выгружается строки, может отсутствует какой то параметр? Не знаю, может надо тип команды указать "По умолчанию" как в Excel при создании подключения. Может вначале надо писать не как "Provider=MSOLAP.3", а как "OLEDB;Provider=MSOLAP.4"

2. Я правильно написал код вывода полученных строк на таблицу в Access?
...
Рейтинг: 0 / 0
25.08.2016, 14:52
    #39297932
гурД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
ferzmikk,

не увидел метода .Update(UpdateBatch)...
...
Рейтинг: 0 / 0
25.08.2016, 15:07
    #39297961
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
гурДferzmikk,

не увидел метода .Update(UpdateBatch)...
Я правильно понимаю, что если использовать Update, то надо писать так
Код: vbnet
1.
2.
3.
4.
5.
6.
    Do While Not РекордсетИмпорт.EOF
        РекордсетТаблицаAccess.AddNew
        РекордсетТаблицаAccess.Fields(0) = РекордсетИмпорт.Fields(0)
        РекордсетТаблицаAccess.Update
        РекордсетИмпорт.MoveNext
    Loop


Если использовать UpdateBatch, то так
Код: vbnet
1.
2.
3.
4.
5.
6.
    Do While Not РекордсетИмпорт.EOF
        РекордсетТаблицаAccess.AddNew
        РекордсетТаблицаAccess.Fields(0) = РекордсетИмпорт.Fields(0)       
        РекордсетИмпорт.MoveNext
    Loop
 РекордсетТаблицаAccess.UpdateBatch


Верно?
...
Рейтинг: 0 / 0
25.08.2016, 15:40
    #39298003
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
ferzmikk, и не будет туда ничего писаться
Код: vbnet
1.
РекордсетТаблицаAccess.Open "Города", CurrentProject.Connection

так рекордсет открывается типа - только чтение/только вперёд.


гурДне увидел метода .Update(UpdateBatch)..необязательно
...
Рейтинг: 0 / 0
25.08.2016, 15:42
    #39298007
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
ferzmikk,
Код: vbnet
1.
РекордсетИмпорт.Source = "Select {} on 0, [Города].[Город].[Город] on 1 from profit"

а данные в нем есть?
...
Рейтинг: 0 / 0
25.08.2016, 15:49
    #39298020
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
Панургferzmikk, и не будет туда ничего писаться
Код: vbnet
1.
РекордсетТаблицаAccess.Open "Города", CurrentProject.Connection

так рекордсет открывается типа - только чтение/только вперёд.
И как быть? Может некоторые параметры указать, чтобы разрешить запись?
...
Рейтинг: 0 / 0
25.08.2016, 15:51
    #39298021
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
Панургferzmikk,
Код: vbnet
1.
РекордсетИмпорт.Source = "Select {} on 0, [Города].[Город].[Город] on 1 from profit"

а данные в нем есть?
Да. Через в Microsofr SQL Managment Studio выгружаются строки при таком запросе
...
Рейтинг: 0 / 0
25.08.2016, 16:00
    #39298036
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
ferzmikkПанургferzmikk, и не будет туда ничего писаться
Код: vbnet
1.
РекордсетТаблицаAccess.Open "Города", CurrentProject.Connection


так рекордсет открывается типа - только чтение/только вперёд.
И как быть? Может некоторые параметры указать, чтобы разрешить запись? Например, посмотреть в справке про остальные параметры метода Open
...
Рейтинг: 0 / 0
26.08.2016, 10:02
    #39298410
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
ПанургНапример, посмотреть в справке про остальные параметры метода Open
Написал так - заработало
Код: vbnet
1.
РекордсетТаблицаAccess.LockType = 2


По идее должно и так работать, но значение adLockPessimistic почему то видит как Empty
Код: vbnet
1.
РекордсетТаблицаAccess.LockType =adLockPessimistic
...
Рейтинг: 0 / 0
26.08.2016, 10:34
    #39298432
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
ferzmikkзначение adLockPessimistic почему то видит как Empty
Значит в референсах не присоединена библиотека адо - Microsoft Activex Data Objects XX.X.
...
Рейтинг: 0 / 0
26.08.2016, 11:47
    #39298483
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
ferzmikkзначение adLockPessimistic почему то видит как EmptyЕстественно, Access про поименованные константы ADO ни сном, ни духом... У тебя же позднее связывание.
...
Рейтинг: 0 / 0
26.08.2016, 12:20
    #39298510
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
Кроме рекордсета можно по другому обратиться к таблице access?

Если я не ошибаюсь, то в рекордсете нельзя сразу удалить все строки, а только перебором. Если таблица в Access, то ее перед обновлением в РекордсетТаблицаAccess нужно удалить строки перебором. Верно?
...
Рейтинг: 0 / 0
26.08.2016, 14:56
    #39298657
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
ferzmikkКроме рекордсета можно по другому обратиться к таблице access?Можно
ferzmikkЕсли я не ошибаюсь, то в рекордсете нельзя сразу удалить все строки, а только перебором. Если таблица в Access, то ее перед обновлением в РекордсетТаблицаAccess нужно удалить строки перебором. Верно?Верно
...
Рейтинг: 0 / 0
26.08.2016, 15:06
    #39298666
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
ПанургferzmikkКроме рекордсета можно по другому обратиться к таблице access?Можно

Как?
...
Рейтинг: 0 / 0
26.08.2016, 15:28
    #39298680
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
Если смотреть по свойствам, то здесь похоже таблицы нету
...
Рейтинг: 0 / 0
26.08.2016, 15:51
    #39298696
гурД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
ferzmikkЯ правильно понимаю, что если использовать Update, то надо писать так
Код: vbnet
1.
2.
3.
4.
5.
6.
    Do While Not РекордсетИмпорт.EOF
        РекордсетТаблицаAccess.AddNew
        РекордсетТаблицаAccess.Fields(0) = РекордсетИмпорт.Fields(0)
        РекордсетТаблицаAccess.Update
        РекордсетИмпорт.MoveNext
    Loop



Если использовать UpdateBatch, то так
Код: vbnet
1.
2.
3.
4.
5.
6.
    Do While Not РекордсетИмпорт.EOF
        РекордсетТаблицаAccess.AddNew
        РекордсетТаблицаAccess.Fields(0) = РекордсетИмпорт.Fields(0)       
        РекордсетИмпорт.MoveNext
    Loop
 РекордсетТаблицаAccess.UpdateBatch



Верно?
Да
...
Рейтинг: 0 / 0
26.08.2016, 16:31
    #39298721
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
гурДferzmikkЯ правильно понимаю, что если использовать Update, то надо писать так
Код: vbnet
1.
2.
3.
4.
5.
6.
    Do While Not РекордсетИмпорт.EOF
        РекордсетТаблицаAccess.AddNew
        РекордсетТаблицаAccess.Fields(0) = РекордсетИмпорт.Fields(0)
        РекордсетТаблицаAccess.Update
        РекордсетИмпорт.MoveNext
    Loop



Если использовать UpdateBatch, то так
Код: vbnet
1.
2.
3.
4.
5.
6.
    Do While Not РекордсетИмпорт.EOF
        РекордсетТаблицаAccess.AddNew
        РекордсетТаблицаAccess.Fields(0) = РекордсетИмпорт.Fields(0)       
        РекордсетИмпорт.MoveNext
    Loop
 РекордсетТаблицаAccess.UpdateBatch



Верно?
Да
У UpdateBatch есть ограничения по количеству строк?
...
Рейтинг: 0 / 0
26.08.2016, 17:45
    #39298777
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
ferzmikk, у набора данных ADO ( Recordset ) метод Update использовать необязательно. При переходе на следующую запись для редактировавшейся записи апдейт произойдёт автоматически.

Удалить записи можно как методом Delete
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
If not rst.EOF Then
    rst.mofelast
    Do until rst.bof
        rst.Delete
        rst.MovePrevious
    Loop
end if


Или использовать метод объекта Connection Execute и выполнить инструкцию SQL "DELETE * FROM [ИмяТвоейТаблицы];"

Вроде всё, может где и ошибся...
...
Рейтинг: 0 / 0
26.08.2016, 18:05
    #39298791
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
ferzmikkЕсли смотреть по свойствам, то здесь похоже таблицы нетуЗачем тебе таблица? Для каких целей? Если работать с данными, то ответ выше. Если для других, то смотреть нужно ADOX (работа с частями таблицы) или CurrentData (AllTables).

Это всё ADO. Есть и другая аналогичная (почти) библиотека доступа к данным - DAO
...
Рейтинг: 0 / 0
26.08.2016, 18:07
    #39298793
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
Панург, поправил, опечатался всё таки
Код: vbnet
1.
rst.movelast
...
Рейтинг: 0 / 0
26.08.2016, 18:21
    #39298801
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
ПанургferzmikkЕсли смотреть по свойствам, то здесь похоже таблицы нетуЗачем тебе таблица? Для каких целей? Если работать с данными, то ответ выше. Если для других, то смотреть нужно ADOX (работа с частями таблицы) или CurrentData (AllTables).
Про Adox и CurrentData( AllTables) не в курсе. Они для каких целей используются?
Это всё ADO. Есть и другая аналогичная (почти) библиотека доступа к данным - DAO
Говорят что DAO устарела
...
Рейтинг: 0 / 0
26.08.2016, 18:29
    #39298805
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
В общем задача такая. Из OLAP нужно выгрузить несколько плоских таблиц. Потом сложные перекрестные соединения. Промежуточные таблицы, которые будут использоваться не один раз в запросе. В результате надо получить несколько обработанных таблиц. Разрабатываю макрос, который запускает обновление и выводит таблицы в Excel с оформлениями. Поэтому хочу подобрать оптимальную технологию выгрузки и обновления. Строк очень много. И не мало колонок.
...
Рейтинг: 0 / 0
26.08.2016, 18:44
    #39298807
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
ferzmikk,авторГоворят что DAO устарела говорят, что в Мацкве кур доят...
Каждая технология хороша к месту.
ferzmikkВ общем задача такая. Из OLAP нужно выгрузить несколько плоских таблиц. Потом сложные перекрестные соединения. Промежуточные таблицы, которые будут использоваться не один раз в запросе. В результате надо получить несколько обработанных таблиц. Разрабатываю макрос, который запускает обновление и выводит таблицы в Excel с оформлениями. Поэтому хочу подобрать оптимальную технологию выгрузки и обновления. Строк очень много. И не мало колонок.Выгружай, перекрещивай, обновляй, выводи и обновляй

Дорогу осилит идущий (с) кто-то сказал
...
Рейтинг: 0 / 0
26.08.2016, 18:48
    #39298811
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
чОрт, опять двойка...

ferzmikk, рассматривай для начала выполнеие всех операций запросами. Так будет гораздо быстрее.
...
Рейтинг: 0 / 0
26.08.2016, 18:56
    #39298815
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает импорт из OLAP
Панургferzmikk, рассматривай для начала выполнеие всех операций запросами. Так будет гораздо быстрее.
Кстати. В Access после использования конструктора запросов запросы получаются не структурированные, то есть трудно читаемые. Трудно дорабатывать в режиме SQL. Есть какая нибудь возможность, чтобы запросы были читабельны как в 1С в конструкторе запросов?
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не работает импорт из OLAP / 25 сообщений из 65, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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