|
таблица как виртуальный объект VBA
|
|||
---|---|---|---|
#18+
Доброго времени суток! Вопрос больше риторический... никто не пытался создать виртуальную таблицу , не обычную таблицу, которая видна в трее в области данных (ну или не видна, в зависимости от настроек видимости ), а именно в памяти , как объект, который можно хранить и передавать к примеру как переменную, и что самое главное также виртуально ее наполнять. Я ковырял ADO+ADOX, но не достиг успехов. При помощи расширения ADOX у нас есть переменная /объект типа Table , которая входит в состав каталога модели данных ADOX. Можно создать виртуально таблицу, столбцы к ней, присвоить ADO Recordset. А потом присоединить ее Append в каталог и дальше пользоваться как обычной таблицей. Но вот почему то присоединить чисто объект Table в качестве источника данных к контролу нельзя Негодяи ... Хотел написать для темы топика чуть снизу обработчик JSON из MS Access, без линковок и временных таблиц аксесовских, с возможностью SELECT,INSERT,UPDATE,DELETE (на стороне сервера PHP) , и чтобы JSON сразу наматывался в виртуальный объект типа Table на стороне аксесса с последующей передачей на форму (само наматывание JSON примитивное,как и сам парсинг JSON в VBA- через MSXML). Вопрос в следующем, нет ли возможности создать в модуле полноценный виртуальный объект со свойствами готовой таблицы? В Java можно к примеру создать класс и расширить его свойствами, которые мне нужны, присвоить ему тип, какой мне нужен (с болью, но можно ). А потом использовать его как угодно. То есть другие языки позволяют. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 21:13 |
|
таблица как виртуальный объект VBA
|
|||
---|---|---|---|
#18+
Сергей Лалов, В акцесе встроенный родной джет неплохо справляется со своей работой и мне кажется именно на это был сделан упор, а по сабжу - так все упирается в память... не так просто даже организовать в памяти таблицу с изменяемым количеством записей (динамическое выделение памяти) а вдруг там будет несколько лямов строк, нам же только дай возможность, раз плюнуть ... Я в такий случаях использовал скрытый список (со списком значений в данных) на форме, и заполнять его можно директивно и читать и ходить по его recordset, НО это если речь идет о количестве сток в списке примерно до 200 000, потом как мне показалось идет черная дыра - пишешь в никуда... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2019, 01:06 |
|
таблица как виртуальный объект VBA
|
|||
---|---|---|---|
#18+
Сергей ЛаловВ Java можно к примеру создать класс и расширить его свойствами, которые мне нужны, присвоить ему тип, какой мне нужен (с болью, но можно ). А потом использовать его как угодно. То есть другие языки позволяют. Создайте класс на основе таблицы, прикрутите свои свойства и юзайте (делов то) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2019, 06:52 |
|
таблица как виртуальный объект VBA
|
|||
---|---|---|---|
#18+
vmag, По всей видимости да, от модели данных Jet в данном случае не отвертеться. Вы хитрО придумали, использовать листбокс для хранения и выборки данных. Таблиц нет, линков нет, контейнер для хранения информации и последующего и спользования в качестве источника данных) Наверное имеет смысл создать обычную таблицу, с именами ключей Json, задать тип данных для них и заливать туда json, и не париться) Начиная с 2007 /2010 аксесса у таблиц в аксессе появились триггеры, так что можно обработать в принципе и изменение типа insert,update,delete в связке с web сервером. Я правда их не использовал никогда, но думаю сходные по принципу с MySql, по идеологии хотя бы. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2019, 16:12 |
|
таблица как виртуальный объект VBA
|
|||
---|---|---|---|
#18+
ROIСергей ЛаловВ Java можно к примеру создать класс и расширить его свойствами, которые мне нужны, присвоить ему тип, какой мне нужен (с болью, но можно ). А потом использовать его как угодно. То есть другие языки позволяют. Создайте класс на основе таблицы, прикрутите свои свойства и юзайте (делов то) К сожалению не покатит. Потому что объект типа таблица создаётся то без проблем, и заполняется данными в общем то тоже без проблем. Только присвоить его форме к примеру в качестве источника данных(объект/класс типа таблица) не удастся. До тех пор пока мы его не инициализируем в структуре самого аксесса, как таблицу входящую в коллекцию таблиц проекта. После этого объект становиться доступен в виде обычной таблицы, в окошке слева. То есть по сути весь смысл таблицы как виртуального объекта теряется. Это тоже самое что и .execute(" CREATE TABLE....") по сути, ну или ручное создание таблицы с последующим использованием. Ещё раз повторю, что к сожалению объект /класс типа таблица в чистом виде в аксессе использовать к сожалению в качестве источника данных нельзя, увы . ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2019, 16:23 |
|
таблица как виртуальный объект VBA
|
|||
---|---|---|---|
#18+
Сергей Лалов, виртуальный рекордсет ADO в качестве источника использовать можно. может рекордсет на основе таблицы тоже? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2019, 22:20 |
|
таблица как виртуальный объект VBA
|
|||
---|---|---|---|
#18+
aleckoСергей Лалов, виртуальный рекордсет ADO в качестве источника использовать можно. может рекордсет на основе таблицы тоже? Не все так просто.. конечно рекордсет можно использовать как объект в чистом виде, и к примеру присваивать его напрямую к свойству формы с одноименным названием recordset , точней вот так(на примере текущей формы): Me.recordset=rs , где rs это уже инициализированный и заполненный данными объект, но такое присвоение имеет очень существенный недостаток, гигантский я бы сказал. При таком способе перестают работать встроенные фильтры контролов (заголовков /колонок) на форме (табличной в частности), сортировка и прочие встроенные плюшки существенно замедляются ,то есть грид стандартной аксесовской табличной формы становится плохо юзабельным. По второй части вопроса вашего: вроде бы казалось, да , в Аксессе есть возможность создать объект Table (расширение ADOX позволяет создать такой объект) и присоединить к нему заполненный рекордсет ADO тоже можно. И вроде бы все есть, и объект типа Table и рекордсет с данными. Только вот: 1) Пока вы не укажете что данный объект является частью семейства таблиц вашего проекта/базы , работать с ним напрямую в качестве источника нельзя. 2) Второй момент вытекает из первого - если вы объявляете такой объект как таблицу в семействе проекта этот объект автоматом становится обычной аксесовской таблицей , пусть и со свойством "невидимый" по умолчанию) Это ограничение модели Jet, как сказал уже выше vmag. И к сожалению это не переломить, а может к счастью, не знаю) В общем оргвыводы построенные на эмпирических наблюдениях, создать можно, наполнить данными можно, но вот пользоваться напрямую c GUI аксесса нельзя . ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2019, 23:29 |
|
|
start [/forum/topic.php?fid=45&msg=39858771&tid=1610491]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 309ms |
total: | 451ms |
0 / 0 |