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

Пытаюсь импортировать данные с 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
Не работает импорт из OLAP
    #39297932
Фотография гурД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

не увидел метода .Update(UpdateBatch)...
...
Рейтинг: 0 / 0
Не работает импорт из OLAP
    #39297961
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гурД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
Не работает импорт из OLAP
    #39298003
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk, и не будет туда ничего писаться
Код: vbnet
1.
РекордсетТаблицаAccess.Open "Города", CurrentProject.Connection

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


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

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

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

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


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


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

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

Как?
...
Рейтинг: 0 / 0
Не работает импорт из OLAP
    #39298680
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если смотреть по свойствам, то здесь похоже таблицы нету
...
Рейтинг: 0 / 0
Не работает импорт из OLAP
    #39298696
Фотография гурД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Не работает импорт из OLAP
    #39298721
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гурД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
Не работает импорт из OLAP
    #39298777
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Не работает импорт из OLAP
    #39298791
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkЕсли смотреть по свойствам, то здесь похоже таблицы нетуЗачем тебе таблица? Для каких целей? Если работать с данными, то ответ выше. Если для других, то смотреть нужно ADOX (работа с частями таблицы) или CurrentData (AllTables).

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

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

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


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