Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Имеется ли решение?
 
 автор: час   (27.06.2011 в 10:01)   личное сообщение
 
 

Имеется таблица - хранения параметров.
Столбцы таблицы:
ID_PARAMETR VALUE_PARAMETR
Значения столбцов:
FIRMA_NAME "Наша фирма"
FIRMA_ADRES "Главная улица, дом№1"
FIRMA_TELEPHON "876-345-234-23"
------------------------------------------------------------
В программе имеются Одноимённые переменные
Public FIRMA_NAME as string
Public FIRMA_ADRES as string
Public FIRMA_TELEPHON as string

-------------------------------------------------------------
Вопрос:
Как создать функцию, которая пробегая по таблице, находя там имя параметра, присваивала одноимённой переменной значение из второго столбца(VALUE_PARAMETR ) этой таблицы.
При отсутствии в программе одноимённой переменной вывести сообщение типа: "Параметр без переменной."

  Ответить  
 
 автор: osmor   (27.06.2011 в 11:30)   личное сообщение
 
 

и в чем именно проблема?

  Ответить  
 
 автор: kot_k_k   (27.06.2011 в 11:37)   личное сообщение
 
 

создай массив имен переменных - и беги по нему - находишь совпадение Case выбираешь нужный тебе вариант
должно срабатать или тыхочеь типа &rs.name = rs.Value
( & - в клиппере так можно было, оно брало значение rs.name и делало из него переменную, которой и присваивало значение как в VB хз или забыл)

  Ответить  
 
 автор: Дядя Федор   (27.06.2011 в 13:16)   личное сообщение
 
 

Можно использовать коллекцию


Public Function mecol() As Collection
Dim col As New Collection
col.Add "FIRMA_NAME"
col.Add "FIRMA_ADRES"
Set mecol = col
End Function

Private Sub tstmecol()
Dim col2 As New Collection
Set col2 = mecol
Dim s
For Each s In col2
Debug.Print s
Next
End Sub


Как применить, думаю, сообразишь.
Пробегая по таблице проверяем вхождение в значение поля элемента коллекции и т.п.
Впрочем вариант с массивом то же самое.
Хотя, кажется глупость получилась Все равно потом проверять select case-ом.
Погорячился я....

  Ответить  
 
 автор: час   (27.06.2011 в 13:19)   личное сообщение
 
 


или тыхочеь типа &rs.name = rs.Value 
( & - в клиппере так можно было, оно брало значение rs.name и делало из него переменную, которой и присваивало значение как в VB )

типа того.

  Ответить  
 
 автор: ser60   (27.06.2011 в 16:11)   личное сообщение
 
 

может быть я не все понял, а просто поизголяться dlookup'ом нельзя?

  Ответить  
 
 автор: АлексейЕ   (27.06.2011 в 16:13)   личное сообщение
 
 

Вот так в лоб реализовать не получится. А вот с помощью «маневрирования» можно очень даже неплохие способы найти.

Способ 1. С использованием класса

Создаем класс КлассПараметров
 
Option Compare Database
Option Explicit

Private strFIRMA_NAME As String
Private strFIRMA_ADRES As String



Public Property Get FIRMA_NAME() As String
    FIRMA_NAME = strFIRMA_NAME
End Property

Public Property Let FIRMA_NAME(ByVal vNewValue As String)
    strFIRMA_NAME = vNewValue
End Property

'=========

Public Property Get FIRMA_ADRES() As String
    FIRMA_ADRES = strFIRMA_ADRES
End Property

Public Property Let FIRMA_ADRES(ByVal vNewValue As String)
    strFIRMA_ADRES = vNewValue
End Property 
 


Заполнять теперь будем таким образом.

 
Public ПараметрыКонтрагента As New КлассПараметров

    CallByName ПараметрыКонтрагента, "FIRMA_ADRES", VbLet, "ЗначениеАдрес"
    CallByName ПараметрыКонтрагента, "FIRMA_NAME", VbLet, "ЗначениеИмя"
 


Читаем значения
 
?ПараметрыКонтрагента.FIRMA_ADRES
ЗначениеАдрес

?ПараметрыКонтрагента.FIRMA_NAME
ЗначениеИмя
 

Очень удобный способ для разработчика, т.к. при таком структурировании надо помнить лишь имя класса, а ограниченный список параметров сам выпадет в контекстное меню.
Можно создавать тематические группы параметров.
Если параметр не существует, то следует ловить ошибку при заполнении

Способ 2 Использование коллекции
Объявление и заполнение
 
Public КоллекцияПараметров As New Collection

    КоллекцияПараметров.Add Item:="АдресФирмы", Key:="FIRMA_ADRES"
    КоллекцияПараметров.Add Item:="НаименованиеФирмы", Key:="FIRMA_NAME"
 


Чтение
 
?КоллекцияПараметров.Item("FIRMA_NAME")
НаименованиеФирмы

?КоллекцияПараметров.Item("FIRMA_ADRES")
АдресФирмы
 

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

  Ответить  
 
 автор: час   (27.06.2011 в 16:29)   личное сообщение
 
 

Спасибо !!!
Буду изучать......
В лоб значит - НЕТ.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList