Разработка баз данныхРазработка баз данных

 Программирование  Программы  Ссылки  Обратная связь
     
. . .
. . .
startpage.htm Новости
about.htm О сайте
fileformat.htm I. Выбор технологии
clientserver.htm Преимущества клиент-серверной технологи
prepare.htm Переход от MDB к ADP
upsizing.htm Инструменты переноса данных
setupserver.htm Выбор версии и установка сервера
selectclient.htm Выбор версии MSAccess
formsreports.htm II. Формы, Отчеты MSAccess
queries.htm Запросы / ADO
inputparameters.htm Передача входных параметров
data_drivers.htm Библиотеки доступа к данным
forms.htm Формы MSAccess
requery.htm Обновление данных в форме
updatableform.htm Обновляемость данных в форме
dialogform.htm Остановка кода пока открыта форма
formsaverecord.htm Сохранить текущую запись
formgotorecord.htm Переход по записям формы
sumform.htm Итоги в формах
serverfiltersample.htm Пример серверного фильтра
formerror.htm Причина Ошибки #Error
menubarevent.htm Перехват нажатия на кнопку меню
woconditionalformat.htm Раскраска строк ленточной формы без условного форматирования
currrec.htm Выделение цветом текущей записи
subform.htm Подчиненные Формы
textboxenter.htm Ввод перевода строки
twimagelistbug.htm treview + imagelist + подч. форма
reports.htm Отчеты, общие рекомендации
report_input_parameters.htm Входные параметры
vbaprog.htm III. Программирование VBA
dbpic.htm Картинки в базе данных
binbmp.htm Двоичные данные картинки в поле таблицы базы данных
piclink.htm Хранение ссылок на файлы
picjpg.htm Бинарное содержимое JPG, Gif файла в бинарном поле базы данных
playsound.htm Воспроизведение звуков
tv.htm Функции для тривью
restartaccess.htm Перезапуск Аксесса
publicvariables.htm Передача и хранение параметров и настроек
collectionfunctions.htm Коллекция полезных функций
datepicker.htm Всплывающий календарик
menuhummer.htm Меню и тулбары
padeg.htm Склонение по падежам
comborowsource.htm Источник данных для поля со списком
filedialog.htm Диалог выбора файла / папки
sendmapi.htm Отправка почты (4 способа) + архивация
autoupdateclient.htm Автоматическое обновление клиентской части
licenses.htm  Устранение проблем с регистрацией компонентов
uncommented.htm Без коментариев
filetime.htm Время и дата файла
reportsample.htm Пример настраивомого отчета
adpformfilter.htm Серверный Фильтр by GEO
tempmdb.htm ADP: Временный MDB для временных таблиц
mutex.htm Запрет запуска нескольких копий приложения
translit.htm Транслитерация всего проекта.
updateident.htm Изменение счетчика
webinterface.htm IV WEB
accessinternet.htm Работа с аксесс через интернет
webupdate.htm Обновление приложения аксесс через интернет
msiecom.htm Программное управление веббраузером
sqlserver.htm MS SQL
mssqltransfer2.htm Перенос/копирование баз
mssqlperm.htm Adp проверка прав пользователя перед открытием формы или управление доступностью полей формы
mssqlcrossdatabase.htm  Межбазовые разрешения
tsqlcollection.htm T-sql коллекция
similarity.htm Сортировка по созвучности
esp.htm расширенные хранимые процедуры
mssqloptimizing.htm Оптимизация быстродействия
    

Передача и хранение параметров и настроек

 
В зависимости от конкретного случая может быть выбран один из следующих способов.  
 
Способы:

  • Глобальные переменные  
  • Пользовательские свойства Базы данных   
  • Настройки, сохраненные в реестре  
  • Настройки, сохраненные в таблицах  
  • Прередача через OpenArgs  
     
    (Настройки, сохраненные в текстовых файлах, - здесь не рассматриваются как устаревшая технология)  
     
     
     

    Глобальные переменные

     
     

    Использование общих переменных  на примере открытия других форм и отчетов.  
     
    - передача "Временных переменных" через глобальные переменные:  
    в начальной области любого общего модуля должно быть декларирование переменной.  
     
    Option Compare Database   
    Option Explicit   
    Public ИМЯ_ОТЧЕТА     
     
     
    перед вызовом отчета присваиваем общей переменной необходимое значение  
     
    ...  
    ИМЯ_ОТЧЕТА = "Report1"   
    ...  
     
         
    эту переменную можно использовать при создании источника данных для отчета - программно, в событии "Загрузка" или во входные параметры отчета  вставить заранее написанную функцию,  которая возвращает этот параметр:  
     
    Public Function GET_ИМЯ_ОТЧЕТА()  
     GET_ИМЯ_ОТЧЕТА = ИМЯ_ОТЧЕТА   
    End Function     
     
    во входные параметры: GET_ИМЯ_ОТЧЕТА()  
    Прим.: если параметров несколько то через запятую.   
     
    Особенности - глобальные переменные сбрасываются при перезапуске Аксесса   
     
     

    Пользовательские свойства




    Для того чтобы это значение не сбрасывалось при выходе из программы или остановке кода.  
    можно заменить общую переменную на добавленное к проекту  пользовательское свойство базы данных и затем обращаться к нему   
     
    так добавляют это свойство к проекту (один раз):  
     
    CurrentProject.Properties.Add "ИМЯ_ОТЧЕТА", Значение  
     
    так его изменяют:   
    CurrentProject.Properties("ИМЯ_ОТЧЕТА") = "значение"  
     
    примеры применения пользовательских свойств:  
     
    так добавляют свойства - удобственно именно в процедуре общего модуля без параметров так как можно запускать вручную:  
        
    Public Sub add_prop()  
    'Добавление свойств к базе данных делается один раз   
       CurrentProject.Properties.Add ("firstdate"), 0   
       CurrentProject.Properties.Add ("lastdate"), 0   
    End Sub    
     
     
    так  устанавливают месячный период:    
     
    Public Sub setperiod(data As Date)   
       CurrentProject.Properties("firstdate") = firstdate(data)    CurrentProject.Properties("lastdate") = lastdate(data)   
    End Sub    
     
     
    Public Function Gcy() 'GET CURRENT YEAR узнать текущий год'  
        Gcy = year(CDate(CurrentProject.Properties("firstdate")))   
    End Function    
     
    Public Function gfd() 'get first date узнать первое число периода'   
        gfd = CDate(CurrentProject.Properties("firstdate"))  
    End Function  
     
     
    Public Function gld() 'get last date узнать последнее число периода'  
        gld = CDate(CurrentProject.Properties("lastdate"))  
    End Function  
     
    Так его получают из любого места формы или отчета:  
    = gfd()     
     
    Используемые функции:  
    Public Function Firstdate(data As Date) as Date  
    'Вычисление даты первого числа месяца в который она попадает  
       Firstdate = CDate("1 " & CStr(Month(data)) & "." & CStr(year(data)))   
    End Function  
     
    Public Function Lastdate(data As Date) as Date  
    'Вычисление даты последнего числа месяца в который она попадает  
       Lastdate = DateAdd("m",1, Firstdate(data))-1   
    End Function  
     
    Особенности: если файл базы данных копируется от одного  
    пользователя или разработчика к другому -  настройки  сохраняются с файлом.  
     
     

    Сохранение и извлечение настроек из Реестра

     

    Сохранение в реестр :  
    Call SaveSetting("Имя проекта", "Раздел", "Подраздел", "КлючРеестра", "Значенние ключа")  
     
    Извлечение из реестра:  
    MyVar = GetSetting("Имя проекта", "Раздел", "Подраздел", "КлючРеестра")  
     
    См. также функции для работы с реестром в разделе  Полезные функции   
     
     
     

    Передача параметров через OpenArgs

     

     
    Private Sub Кнопка46_Click()  
    Dim SQL As String  
    Dim SelectName As String  
    Dim RepName  
    RepName = "Svod1"  
     
    'Формирование строки - условия запроса и названия выборки для заголовка  
    If Me.fid_curator <> 0 Then SQL = " and id_curator = " & Me.fid_curator  
    If Me.fid_curator <> 0 Then SelectName = vbCrLf & " Руководитель - " & Me.fid_curator.Column(1)  
    If Me.fid_partner <> 0 Then SQL = SQL & " and id_partner = " & Me.fid_partner  
    If Me.fid_partner <> 0 Then SelectName = SelectName & vbCrLf & " Партнер - " & me.fid_partner.Column(1)  
    If CurrentProject.AllReports(RepName).IsLoaded Then DoCmd.Close acReport, RepName  
     
    On Error Resume Next  
    DoCmd.OpenReport RepName, acViewPreview, , , , SQL & "<next>" & SelectName   
    DoCmd.RunCommand acCmdZoom100  
    'DoCmd.Close acForm, Me.Name  
    End Sub  
     
    Примечание: в данном примере <next> используется в качестве разделителя - разделитель может быть любое уникальное сочетание символов - недопустимое в передаваемых данных.  

     
     
    Прием параметров через OpenArgs  
     
    Option Compare Database  
    Option Explicit  
    Public SQL As String  
    Public SelectName  
     
     
    Private Sub Report_NoData(Cancel As Integer)  
    MsgBox "Нет проектов по выбранному условию"  
    Cancel = True  
    End Sub  
     
    Private Sub Report_Open(Cancel As Integer)  
    DoCmd.Maximize  
    If Nz(Me.OpenArgs, "") = "" Then Exit Sub  
     
    Dim Tmparr  
     
    'разбивка строки на массив значений  
    Tmparr = Split(Nz(Me.OpenArgs, ""), "<next>", , vbTextCompare)  
     
    'Первое значение  
    SQL = Tmparr(0)  
     
    'Второе значение  
    If Tmparr(1) <> "" Then SelectName = "Выборка:" & Tmparr(1)  
     
    Me.RecordSource = Me.RecordSource & SQL  
    End Sub  
     
  •  
    . . .
    . . .
    © 2000 - 2009 Алексей Козин эта вебстраница является зеркалом сайта www.msdatabase.ru Рейтинг@Mail.ru
    Hosted by uCoz