Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / таблица как виртуальный объект VBA / 7 сообщений из 7, страница 1 из 1
06.09.2019, 21:13
    #39858643
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
таблица как виртуальный объект VBA
Доброго времени суток!
Вопрос больше риторический... никто не пытался создать виртуальную таблицу , не обычную таблицу, которая видна в трее в области данных (ну или не видна, в зависимости от настроек видимости ), а именно в памяти , как объект, который можно хранить и передавать к примеру как переменную, и что самое главное также виртуально ее наполнять. Я ковырял ADO+ADOX, но не достиг успехов. При помощи расширения ADOX у нас есть переменная /объект типа Table , которая входит в состав каталога модели данных ADOX. Можно создать виртуально таблицу, столбцы к ней, присвоить ADO Recordset. А потом присоединить ее Append в каталог и дальше пользоваться как обычной таблицей. Но вот почему то присоединить чисто объект Table в качестве источника данных к контролу нельзя Негодяи ...
Хотел написать для темы топика чуть снизу обработчик JSON из MS Access, без линковок и временных таблиц аксесовских, с возможностью SELECT,INSERT,UPDATE,DELETE (на стороне сервера PHP) , и чтобы JSON сразу наматывался в виртуальный объект типа Table на стороне аксесса с последующей передачей на форму (само наматывание JSON примитивное,как и сам парсинг JSON в VBA- через MSXML).

Вопрос в следующем, нет ли возможности создать в модуле полноценный виртуальный объект со свойствами готовой таблицы?

В Java можно к примеру создать класс и расширить его свойствами, которые мне нужны, присвоить ему тип, какой мне нужен (с болью, но можно ). А потом использовать его как угодно. То есть другие языки позволяют.
...
Рейтинг: 0 / 0
07.09.2019, 01:06
    #39858674
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
таблица как виртуальный объект VBA
Сергей Лалов,

В акцесе встроенный родной джет неплохо справляется со своей работой и мне кажется именно на это был сделан упор, а по сабжу - так все упирается в память... не так просто даже организовать в памяти таблицу с изменяемым количеством записей (динамическое выделение памяти) а вдруг там будет несколько лямов строк, нам же только дай возможность, раз плюнуть ...
Я в такий случаях использовал скрытый список (со списком значений в данных) на форме, и заполнять его можно директивно и читать и ходить по его recordset, НО это если речь идет о количестве сток в списке примерно до 200 000, потом как мне показалось идет черная дыра - пишешь в никуда...
...
Рейтинг: 0 / 0
07.09.2019, 06:52
    #39858682
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
таблица как виртуальный объект VBA
Сергей ЛаловВ Java можно к примеру создать класс и расширить его свойствами, которые мне нужны, присвоить ему тип, какой мне нужен (с болью, но можно
). А потом использовать его как угодно. То есть другие языки позволяют.
Создайте класс на основе таблицы, прикрутите свои свойства и юзайте (делов то)
...
Рейтинг: 0 / 0
07.09.2019, 16:12
    #39858769
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
таблица как виртуальный объект VBA
vmag,

По всей видимости да, от модели данных Jet в данном случае не отвертеться. Вы хитрО придумали, использовать листбокс для хранения и выборки данных. Таблиц нет, линков нет, контейнер для хранения информации и последующего и спользования в качестве источника данных)

Наверное имеет смысл создать обычную таблицу, с именами ключей Json, задать тип данных для них и заливать туда json, и не париться) Начиная с 2007 /2010 аксесса у таблиц в аксессе появились триггеры, так что можно обработать в принципе и изменение типа insert,update,delete в связке с web сервером. Я правда их не использовал никогда, но думаю сходные по принципу с MySql, по идеологии хотя бы.
...
Рейтинг: 0 / 0
07.09.2019, 16:23
    #39858771
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
таблица как виртуальный объект VBA
ROIСергей ЛаловВ Java можно к примеру создать класс и расширить его свойствами, которые мне нужны, присвоить ему тип, какой мне нужен (с болью, но можно
). А потом использовать его как угодно. То есть другие языки позволяют.
Создайте класс на основе таблицы, прикрутите свои свойства и юзайте (делов то)

К сожалению не покатит. Потому что объект типа таблица создаётся то без проблем, и заполняется данными в общем то тоже без проблем. Только присвоить его форме к примеру в качестве источника данных(объект/класс типа таблица) не удастся. До тех пор пока мы его не инициализируем в структуре самого аксесса, как таблицу входящую в коллекцию таблиц проекта. После этого объект становиться доступен в виде обычной таблицы, в окошке слева. То есть по сути весь смысл таблицы как виртуального объекта теряется. Это тоже самое что и .execute(" CREATE TABLE....") по сути, ну или ручное создание таблицы с последующим использованием. Ещё раз повторю, что к сожалению объект /класс типа таблица в чистом виде в аксессе использовать к сожалению в качестве источника данных нельзя, увы .
...
Рейтинг: 0 / 0
07.09.2019, 22:20
    #39858888
alecko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
таблица как виртуальный объект VBA
Сергей Лалов, виртуальный рекордсет ADO в качестве источника использовать можно. может рекордсет на основе таблицы тоже?
...
Рейтинг: 0 / 0
07.09.2019, 23:29
    #39858907
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
таблица как виртуальный объект VBA
aleckoСергей Лалов, виртуальный рекордсет ADO в качестве источника использовать можно. может рекордсет на основе таблицы тоже?

Не все так просто.. конечно рекордсет можно использовать как объект в чистом виде, и к примеру присваивать его напрямую к свойству формы с одноименным названием recordset , точней вот так(на примере текущей формы): Me.recordset=rs , где rs это уже инициализированный и заполненный данными объект, но такое присвоение имеет очень существенный недостаток, гигантский я бы сказал. При таком способе перестают работать встроенные фильтры контролов (заголовков /колонок) на форме (табличной в частности), сортировка и прочие встроенные плюшки существенно замедляются ,то есть грид стандартной аксесовской табличной формы становится плохо юзабельным.
По второй части вопроса вашего: вроде бы казалось, да , в Аксессе есть возможность создать объект Table (расширение ADOX позволяет создать такой объект) и присоединить к нему заполненный рекордсет ADO тоже можно. И вроде бы все есть, и объект типа Table и рекордсет с данными. Только вот:
1) Пока вы не укажете что данный объект является частью семейства таблиц вашего проекта/базы , работать с ним напрямую в качестве источника нельзя.
2) Второй момент вытекает из первого - если вы объявляете такой объект как таблицу в семействе проекта этот объект автоматом становится обычной аксесовской таблицей , пусть и со свойством "невидимый" по умолчанию) Это ограничение модели Jet, как сказал уже выше vmag. И к сожалению это не переломить, а может к счастью, не знаю)
В общем оргвыводы построенные на эмпирических наблюдениях, создать можно, наполнить данными можно, но вот пользоваться напрямую c GUI аксесса нельзя .
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / таблица как виртуальный объект VBA / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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