powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вопросы по макросу
19 сообщений из 19, страница 1 из 1
Вопросы по макросу
    #39510267
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Создал простенькую базу данных с макросами для примера. Постарался убрать все лишнее, чтобы понятно было. Суть в следующем: макрос выгружает с OLAP и вставляет в access таблицу. Файл во вложении. Запуск макроса с процедуры ИмпортИзOLAP.

Все работает, все выгружает. Но есть вопросы, сомнения.

1. Получается так, что есть два рекордсета: из OLAP и Access. Потом Рекордсет из OLAP вставляем Рекордсет из Access по каждой записи. Насколько правильно данное решение?

2. Здесь после выгрузки с OLAP и до вставки в Access таблицу удаляются старые записи. Может быть лучше не удалять старые записи, а удалить старую таблицу и новую создавать? Учитывая что названия колонок не меняются.

Но есть еще таблица (в данном примере отсутствует), где названия колонок меняется, например, месяцы. То здесь актуально удалять старую таблицу и заново создавать. Кстати, до этого не удалял таблицу, а удалял колонки. И получилось так, что колонок нету в таблице, а макрос не может добавить колонку, якобы превышение количества колонок. Так и не разобрался почему так.

3. Учитывая такой логический момент, что после того как запустили макрос, то после обновления в ключевом поле изменяются значения, то есть продолжает работать счетчик. Потом получаем таблицы из разных источников, потом запускается сложные SQL-запросы к этим таблицам. Соединение таблиц происходит не по ключу, а по текстовому полю (например, "Наименование продукции", 'Код ТТ" и т д). Во вложенном примере отсутствуют такие запросы. Если в access таблицу "OLAP-Города" попадают записи из OLAP, то нужно ли ключевое поле для этой таблицы?

4. Если с помощью с ADO выгружать данные с OLAP, то в Fields имена получаются такие длинные:
Код: sql
1.
2.
[Города].[Город].[Город].[MEMBER_CAPTION] - для атрибутов
[Measures].[Отгрузки шт] - для мер

а надо так
Код: sql
1.
2.
Город
Отгрузки шт


Обращаться по таким длинным именам не удобно. Изменить имена с помощью свойства Name невозможно, так как находится в режиме чтения. Но возможно по индексу.

Написал код так, что из этих длинных имен вытаскивает короткие имена. В данном примере такой код отсутствует, будто уже определили короткие имена, чтобы не усложнять данный пример для понимания. Получаем МассивЗаголовков с тремя полями: длинное название поля, короткое название поля и индекс поля. Дальше когда вставляем из OLAP в access таблицу, то в ИмпортРекордсет обращается не по длинному имени, а по индексу.

Оцените идею такого решения? Можно ли было по проще сделать или более правильно сделать?

5. Когда выгружаешь данные с OLAP, то может быть такое что MDX-запрос не правильный, отсутствует подключение к OLAP, нехватка памяти на сервере, отсутствие прав на выгрузку и т.д. Нужно вставить перехватчик ошибок. Но нужно поставить именно так, чтобы было понятно что за ошибка, и макросу знать куда дальше идти. Как правильно прописать?

Получилось как то емко, но подробно по каждому вопросу.
...
Рейтинг: 0 / 0
Вопросы по макросу
    #39510344
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkИ получилось так, что колонок нету в таблице, а макрос не может добавить колонку, якобы превышение количества колонок.
увы, при удалении полей в таблице(до 255) или контролов в форме/отчете (754, ранее было 999)--освободившиеся номера не подлежат повторному заполнению, это типа счетчика, но с максимальным значением 255/754
...
Рейтинг: 0 / 0
Вопросы по макросу
    #39510396
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКАferzmikkИ получилось так, что колонок нету в таблице, а макрос не может добавить колонку, якобы превышение количества колонок.
увы, при удалении полей в таблице(до 255) или контролов в форме/отчете (754, ранее было 999)--освободившиеся номера не подлежат повторному заполнению, это типа счетчика, но с максимальным значением 255/754ferzmikk3. Учитывая такой логический момент, что после того как запустили макрос, то после обновления в ключевом поле изменяются значения, то есть продолжает работать счетчик. ... Если в access таблицу "OLAP-Города" попадают записи из OLAP, то нужно ли ключевое поле для этой таблицы?А тут может быть такое? То есть новые строки могут не вставится или счетчик с начала пойдет: подбирать свободные значения ключа? Или зависит от того присутствует ли ключевое поле в таблице или нет?
...
Рейтинг: 0 / 0
Вопросы по макросу
    #39510402
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkПостарался убрать все лишнее, чтобы понятно
мне как раз непонятно --а что дальше

опишу свою ситуацию и мой подход к ее решению
--основные таблицы 150т и 80т(М:М)
--основной выбор по цех-участок-изделие-оборудование-профессия---итоги
--сначала попробовала в ЛОБ , отчетом аксесс
-----увы, отчет по цех изделие не совпадал с итогом по цехам(время прошло, что-то ввели новое)
--решила зафиксировать снимок базы на момент ххххх в рабочую таблицу в рабочей базе

select цех,участок,изделие,оборудование,профессия,sum(норма) into tab1 in "c:\temp\rab1.mdb"
from .....
group by цех,участок,изделие,оборудование,профессия


--весь просмотр и итоги более высоких уровней идет с рабочей таблицы, которая прилинкована к основной базе
--рабочую базу можно всегда пересоздать целиком с шаблона(пустую)
...
Рейтинг: 0 / 0
Вопросы по макросу
    #39510404
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkА тут может быть такое? То есть новые строки могут не вставится или счетчик с начала пойдет: подбирать свободные значения ключа? Или зависит от того присутствует ли ключевое поле в таблице или нет?
счетчик не пойдет с начала
если было 100 полей и 99 удалили, то новое поле получит счетчик 101 а не 2
хотя базу и уплотнили
...
Рейтинг: 0 / 0
Вопросы по макросу
    #39510432
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКАferzmikkПостарался убрать все лишнее, чтобы понятно
мне как раз непонятно --а что дальше
В рабочей файле имеются таблицы, которые берутся из OLAP. Есть таблицы как справочник. Здесь я выгрузил из OLAP и вставил в таблицу. То есть это как бы первый шаг. Мне важно выяснить, на этой стадии есть ли что то неправильное или что то не учитывается. Дальше запуск запросов к этим таблицам, это следующий шаг - другой вопрос.

И чтобы сконцентрироваться к проблеме, удалил другие таблицы, которые тоже получаются с OLAP, и таблицы-справочники, чтобы не мешались. Вообще для запуска макроса, необходимо подключение к нашему серверу, но для данного примера доступ отсутствует. Но макрос выгружает и вставляет в таблицы. Поэтому хочу понять насколько правильно и оптимально ли я выгружаю с OLAP и вставляю в таблицы. Может быть по другому надо выгружать или как то попроще код написать, потому что для остальных таблиц код будет повторяться.
...
Рейтинг: 0 / 0
Вопросы по макросу
    #39510434
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКАсчетчик не пойдет с начала
если было 100 полей и 99 удалили, то новое поле получит счетчик 101 а не 2
хотя базу и уплотнили Я имею ввиду не поля, а строки
...
Рейтинг: 0 / 0
Вопросы по макросу
    #39510440
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

в строках тоже счетчик не пойдет с начала после DELETE * FROM TAB1
было 100 записей, удалили, новая запись будет 101

чтобы новая запись была=1, надо сжать базу данных
...
Рейтинг: 0 / 0
Вопросы по макросу
    #39510509
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКАчтобы новая запись была=1, надо сжать базу данныхИли такой вариант: удалить таблицу и заново создать

А при удалении и создании таблиц, то у списка таблиц счетчик тоже присутствует?
...
Рейтинг: 0 / 0
Вопросы по макросу
    #39510624
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk1. Получается так, что есть два рекордсета: из OLAP и Access. Потом Рекордсет из OLAP вставляем Рекордсет из Access по каждой записи. Насколько правильно данное решение?

3. Если в access таблицу "OLAP-Города" попадают записи из OLAP, то нужно ли ключевое поле для этой таблицы?

4. Если с помощью с ADO выгружать данные с OLAP, то в Fields имена получаются такие длинные:
Код: sql
1.
2.
[Города].[Город].[Город].[MEMBER_CAPTION] - для атрибутов
[Measures].[Отгрузки шт] - для мер

а надо так
Код: sql
1.
2.
Город
Отгрузки шт


Обращаться по таким длинным именам не удобно. Изменить имена с помощью свойства Name невозможно, так как находится в режиме чтения. Но возможно по индексу.

Написал код так, что из этих длинных имен вытаскивает короткие имена. В данном примере такой код отсутствует, будто уже определили короткие имена, чтобы не усложнять данный пример для понимания. Получаем МассивЗаголовков с тремя полями: длинное название поля, короткое название поля и индекс поля. Дальше когда вставляем из OLAP в access таблицу, то в ИмпортРекордсет обращается не по длинному имени, а по индексу.

Оцените идею такого решения? Можно ли было по проще сделать или более правильно сделать?

5. Когда выгружаешь данные с OLAP, то может быть такое что MDX-запрос не правильный, отсутствует подключение к OLAP, нехватка памяти на сервере, отсутствие прав на выгрузку и т.д. Нужно вставить перехватчик ошибок. Но нужно поставить именно так, чтобы было понятно что за ошибка, и макросу знать куда дальше идти. Как правильно прописать?
Хотелось бы получить ответы на эти вопросы
...
Рейтинг: 0 / 0
Вопросы по макросу
    #39510636
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkИли такой вариант: удалить таблицу и заново создать
Это не сработает, если у таблицы установлены связи с другими таблицами
поэтому я и делала через внешнюю таблицу
--при запуске базы, создавала и рабочую базу
--затем 4-мя запросами я формировала 4 рабочих таблицы
--могла сменить критерии выбора и переформировать рабочие таблицы
--весь просмотр и отчеты делались с этих рабочих таблиц, без привязки к основным

----
моя база --это все же не продажа билетов, онлайн-точность не нужна
но различные отчеты одного дня должны были соответствовать друг-другу
...
Рейтинг: 0 / 0
Вопросы по макросу
    #39510704
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКАferzmikkИли такой вариант: удалить таблицу и заново создать
Это не сработает, если у таблицы установлены связи с другими таблицами В Access есть таблицы, которые в начале названии имеют такой префикс "OLAP_". Несколько таких таблиц в базе данных.

Создается коннектор, потом рекордсет. Полученные записи вставляем "OLAP_Таблица1". Удаляем рекордет. Потом создаем новый рекордсет. Полученные записи вставляем в "OLAP_Таблица2". И т. д. У этих таблиц нету связи с другими таблицами.

Во вложении по коду в модуле можно это увидеть.

Но втором шаге будет запускаться запрос к этим таблицам. Если таблицы удалять и заново создавать, то имена таблиц и полей будут те же. В примере отсутствуют запросы.

поэтому я и делала через внешнюю таблицу
--при запуске базы, создавала и рабочую базу
--затем 4-мя запросами я формировала 4 рабочих таблицы
--могла сменить критерии выбора и переформировать рабочие таблицы
--весь просмотр и отчеты делались с этих рабочих таблиц, без привязки к основным

----
моя база --это все же не продажа билетов, онлайн-точность не нужна
но различные отчеты одного дня должны были соответствовать друг-другуА где находится внешняя таблица? Я предполагаю Вы запускали SQL-запрос к серверу. Но у меня MDX-запросы. MDX это не SQL. SQL это реляционные таблицы, а MDX - многомерные. Тут другая логика. MDX не соединяет таблицы как SQL. Приходится выгружать несколько разных access таблиц, которые начинают с префикса "OLAP_" и справочные access таблицы, и соединять их потом запросом.

Или я Вас не правильно понял?
...
Рейтинг: 0 / 0
Вопросы по макросу
    #39510760
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

У меня не было OLAP_таблиц
у меня обыкновенные, гладкие 150т и 80т (М:М) по 1 полю
справочники не в счет(один большой 50т, остальные мелочь, до 1т)

все справочники прицепляла уже к итогам, что-бы не гонять по сети(они списывались тоже в рабочую базу) при загрузке

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

веер входимости --первым шагом был динамический поиск в ленточной форме по 10 полям, целого поля не требовалось --по LIKE по принципу поиска по тому, что знаю

можно было набрать
--наим=гайк , изделие=001, извещение об обновлении=2017
--в ленточной форме давала претендентов на требуемое
--уточняли условие размером или номером госта(например 12478-80)

информация высвечивалась в формате максимальной наглядности

дет/сб-------(код детали) (гравировка) (наименование)(извещение).(цеха)(изделия).......
состоит из .(код детали) (гравировка) (наименование)(извещение)........
(код детали) (гравировка) (наименование)(извещение)........
(код детали) (гравировка) (наименование)(извещение)........
....
входит (код детали) (гравировка) (наименование)(извещение)........
(код детали) (гравировка) (наименование)(извещение)........
(код детали) (гравировка) (наименование)(извещение)........

при клике на гравировке переход на выбранную деталь/сб
при клике на извещении --показ списка деталей, измененных по данному извещению
при клике на цех--пооперационная трудоемкость и прочее
при клике на изделии --комплектация выбранной детали в разных изделиях
......

это пример работы с исходной информацией
...
Рейтинг: 0 / 0
Вопросы по макросу
    #39511394
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКАпоэтому я и делала через внешнюю таблицуДанные из внешней таблицы через рекордсет выгружали?
...
Рейтинг: 0 / 0
Вопросы по макросу
    #39511517
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

как я уже писала --как то так
Код: sql
1.
2.
3.
4.
select цех,участок,изделие,оборудование,профессия,sum(норма)
 into tab1 in "c:\temp\rab1.mdb" 
 from .....
 group by цех,участок,изделие,оборудование,профессия
...
Рейтинг: 0 / 0
Вопросы по макросу
    #39511566
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА
Код: sql
1.
2.
3.
4.
select цех,участок,изделие,оборудование,профессия,sum(норма)
into tab1 in "c:\temp\rab1.mdb"
 from .....
 group by цех,участок,изделие,оборудование,профессия

Такой запрос откуда запускался?
...
Рейтинг: 0 / 0
Вопросы по макросу
    #39511666
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

запрос запускается из аксесс
есть в аксесс такая возможность --создание таблицы

смотри в хельпе SELECT.... INTO....IN
...
Рейтинг: 0 / 0
Вопросы по макросу
    #39511759
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКАferzmikk,

запрос запускается из аксесс
есть в аксесс такая возможность --создание таблицы

смотри в хельпе SELECT.... INTO....INВ Access можно запустить sql-запрос SELECT ... INTO ... IN ..., где после IN указывается внешняя база данных. Если выгружать данные из OLAP, то пишется не SQL-запрос, а MDX-запрос. Access не поддержит MDX. Предложение IN присутствует в SQL, но отсутствует в MDX. Если ошибаюсь - поправьте.

Поэтому использую ADO для выгрузки из OLAP. И хотелось узнать какие еще оптимальные варианты выгрузки есть.
...
Рейтинг: 0 / 0
Вопросы по макросу
    #39511968
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkВ Access можно запустить sql-запрос SELECT ... INTO ... IN ..., где после IN указывается внешняя база данных. Если выгружать данные из OLAP, то пишется не SQL-запрос, а MDX-запрос. Access не поддержит MDX. Предложение IN присутствует в SQL, но отсутствует в MDX. Если ошибаюсь - поправьте.

Поэтому использую ADO для выгрузки из OLAP. И хотелось узнать какие еще оптимальные варианты выгрузки есть.Вот так выглядит простой MDX-запрос.
Код: sql
1.
2.
Select {[Measures].[Отгрузки шт]} on 0,
	[Города].[Город].[Город] on 1 from profit
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вопросы по макросу
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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