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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Кто-нить пробовал использовать в функции dlookup 2 переменные?
 
 автор: ser60   (22.02.2011 в 12:23)   личное сообщение
 
 

Кто-нить пробовал использовать функцию dlookup («ИмяПоля», «ИмяТаблицы», «Код=»&[аргумент3]) таким образом, чтобы не только аргумент3 использовался для поиска значения в названии поля, но и «ИмяПоля» определялось бы программно внутри VBA в зависимости от переменной в форме?
есть тбл коэффициентов расчета заработной платы в зависимости от группы по оплате и стажа:
Группа Стаж01 Стаж02 Стаж03 Стаж04 Стаж05
G 1 4,29 4,37 4,46 4,55 4,65
G 2 3,99 4,07 4,15 4,24 4,33
G 3 3,72 3,8 3,87 3,95 4,04
G 4 3,41 3,47 3,54 3,61 3,69
Хотелось бы по двум параметрам в форме (группе оплаты и стажу) найти нужный коэффициент таким образом, чтобы ИмяПоля (Стаж01, или Стаж02…) подставлялось в функцию).
или как то по другому решить проблему?

  Ответить  
 
 автор: Lukas   (22.02.2011 в 12:41)   личное сообщение
 
 


Public Sub Test()
    Dim TableName As String
    Dim FieldName As String
    Dim Id As Long
    TableName = "MsysObjects"
    FieldName = "Name"
    Id = -2147483646
    Debug.Print DLookup(FieldName, TableName, "Id=" & Id)
    FieldName = "DateCreate"
    Debug.Print DLookup(FieldName, TableName, "Id=" & Id)
End Sub

  Ответить  
 
 автор: ser60   (22.02.2011 в 14:17)   личное сообщение
 
 

Всегда шарахался от сочетаний типа "MsysObjects" - вдруг чего напорчу. Это не очень опасно?
Почему такой Id = -2147483646. Это тоже что-то системное? Неясно его значение. Не могли ли вы также объяснить FieldName = "DateCreate" и два одинаковых Debug.Print DLookup(FieldName, TableName, "Id=" & Id)?

  Ответить  
 
 автор: Силblч   (22.02.2011 в 12:54)   личное сообщение
 
 


?dlookup("[mcode2]","mcode","mcode='M01'")
M001


?dlookup("[mcode]&[mcode2]","mcode","mcode='M01'")
M01M001

  Ответить  
 
 автор: ser60   (22.02.2011 в 14:19)   личное сообщение
 
 

а подробнее можно?

  Ответить  
 
 автор: Силblч   (22.02.2011 в 15:22)   личное сообщение
 
 

  Ответить  
 
 автор: ser60   (22.02.2011 в 18:15)   личное сообщение
 
 

неясно при mcode='M01'")
M001 и M01M001?

  Ответить  
 
 автор: Силblч   (22.02.2011 в 18:21)   личное сообщение
 
 

не волнуйтесь, там все ок

  Ответить  
 
 автор: Explorer   (22.02.2011 в 15:26)   личное сообщение
 
 

это тоже самое что на русьипорте

  Ответить  
 
 автор: Explorer   (22.02.2011 в 13:28)   личное сообщение
 
 

http://am.rusimport.ru/MsAccess/topic.aspx?ID=369

  Ответить  
 
 автор: ser60   (22.02.2011 в 14:09)   личное сообщение
 
 

Это я видел, мне нужно не два значения по одному коду, а наоборот: одно значение по двум переменным. вСЕ РАВНО СПАСИБО ЗА ОТЗЫВЧИВОСТЬ!

  Ответить  
 
 автор: Explorer   (22.02.2011 в 15:27)   личное сообщение
 
 

а вы пробовали в условие агрегатной функции написать два условия для переменных через AND или OR?

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

не представляю, как это сделать (

  Ответить  
 
 автор: Анатолий (Киев)   (22.02.2011 в 16:00)   личное сообщение
 
 

А что вам мешает в переменной указать имя поля, а переменную подставить в первом аргументе функции?
Можно и непосредственно в аргументе «ИмяПоля» выбрать нужное имя с помощью функции Switch или Choose.

  Ответить  
 
 автор: ser60   (22.02.2011 в 18:13)   личное сообщение
 
 

так и хочу вместо имени поля подставить переменную, но запутался в кавычках((( Примера нет у вас? Заранее благодарен!

  Ответить  
 
 автор: ser60   (23.02.2011 в 08:03)   личное сообщение
 
 

Всем спасибо! Разобрался (с кавычками). Кому интересно:
SalaryCoeff = DLookup("" & [strStageColumnName] & "", "сГруппОплаты", "Код=""" & [Ggroup] & """")

  Ответить  
 
 автор: Анатолий (Киев)   (23.02.2011 в 11:02)   личное сообщение
 
 


SalaryCoeff = DLookup("" & [strStageColumnName] & "", "сГруппОплаты", "Код=""" & [Ggroup] & """")


И что, вот так с квадратными скобками вокруг переменной работает?
Лучше всунуть их в переменную, а затем так:
SalaryCoeff = DLookup(strStageColumnName, "сГруппОплаты", "Код=""" & [Ggroup] & """")
или так (с апострофами в условии):
SalaryCoeff = DLookup(strStageColumnName, "сГруппОплаты", "Код='" & [Ggroup] & "'")

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

Работает! но ваш вариант тоже попробую. Спасибо!

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