Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Статика между запусками Добавлено: 09.02.10 11:20  

Автор вопроса:  Dark Engine | Web-сайт: www.wentas.2bb.ru | ICQ: 343191665 
В Access есть программа, хранящая некоторые данные (общую информацию по базе, от которой зависит построение некоторых таблиц в формах). Однако эти данные после закрытия Access'а из этих временных хранилищ исчяезают. С одной стороны понятно, что VBA не хранит значения переменных в модулях. Но с другой сохранять их очень надо. Куда их можно запихать, так, чтобы не создавать дополнительных файлов, но при этом, чтобы при запуске Access с этой базы, значения этих переменных можно было восстановить с прошлого запуска?

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 AngryBadger



Вопросов: 33
Ответов: 245
 Профиль | | #1 Добавлено: 09.02.10 14:09
http://www.codenet.ru/progr/vbasic/registry.php

Ответить

Номер ответа: 2
Автор ответа:
 Dark Engine



ICQ: 343191665 

Вопросов: 51
Ответов: 98
 Web-сайт: www.wentas.2bb.ru
 Профиль | | #2
Добавлено: 09.02.10 14:29
Реестр как решение не совсем подходит. Дело в том, что впоследствии эта база будет использоваться в нескольких экземплярах и в каждой копии (а они все будут на одном компьютере) будут разные настройки. Мне бы метод сохранения из в файле самой базы. Есть там куда их запихнуть?

Ответить

Номер ответа: 3
Автор ответа:
 AngryBadger



Вопросов: 33
Ответов: 245
 Профиль | | #3 Добавлено: 09.02.10 19:41
С одной стороны понятно, что VBA не хранит значения переменных в модулях
на сколько я помню, прямо при выполнении макроса можно дописывать строки в модуль, но так - не вспомню, надо погуглить

Ответить

Номер ответа: 4
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #4
Добавлено: 09.02.10 22:59
Самым логичным при работе с базой данных было бы хранить все необходимые значения в специально созданной таблице базы данных, например в создать таблицу Settings (Настройки) и хранить там по аналогии с реестром ключ (имя переменной), тип (тип даннных: строка, число, дата..), значение. Для значений разных типов можно завести отдельные поля. Как конкретно на VBA это делается - могу показать, я этот механизм уже использовал однажды для хранения настроек программы. Например, чтобы записать папку по умолчанию для импорта новых файлов в базу...

Как хочет AngryBadger можно и текст модулей подменять, только не забывайте, что текст с исполняющейся строке вам не заменить, да и руками надо разрешить доступ к VBProject на каждом компьютере. Скажем так, это возможный, но совсем не очевидный путь.

Ответить

Номер ответа: 5
Автор ответа:
 Dark Engine



ICQ: 343191665 

Вопросов: 51
Ответов: 98
 Web-сайт: www.wentas.2bb.ru
 Профиль | | #5
Добавлено: 10.02.10 17:40
AngryBadger
Даа... весело, конечно. Не, такую хитрую систему я отлаживать долго буду. А базу надо доделать до понедельника.

mc-black
Мысль интересная, если бы у меня переменные не были разных типов. Хотя в принципе, при их прямом использовании они все равно идут как String...

Ответить

Номер ответа: 6
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #6
Добавлено: 10.02.10 22:12
Пусть будут разных типов, тогда таблицу с настройками программы сделай так:
  1. Key           ключ, например по названиям переменных (primary key)
  2. Type          перечисление типов
  3. ValueText     строковые значения (определись, какой max дины надо)
  4. ValueLong     длинные целые (подойдет для Long и для Ineger, Byte)
  5. ValueDate     дата и время
  6. ValueDouble   с плавающей точкой подойдет для Single и Double
  7. ValueMemo     если текста запихивать надо много


При инициализации переменной значением сделаешь функцию, возвращающую Variant, которая будет принимать 2 параметра: ключ (имя переменной например) и тип данных явно, чтобы функция знала из какого поля брать значение. Тогда не понадобится преобразование строк в другие типы и сопутствующих этому хитростей/багов.

Ответить

Номер ответа: 7
Автор ответа:
 Dark Engine



ICQ: 343191665 

Вопросов: 51
Ответов: 98
 Web-сайт: www.wentas.2bb.ru
 Профиль | | #7
Добавлено: 14.02.10 23:12
Уловил )))) спасибо ))))

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам