Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/10: Рейтинг темы: голосов - 10, средняя оценка - 4.90
tuandreeva
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 56
#1

QueryDef

11.07.2013, 10:42. Просмотров 1859. Ответов 6
Метки нет (Все метки)

Здравствуйте, не могу получить значение поля [Субсидия], запрос с параметрами ссылается на контролы формы, выглядит вот так:
SQL
1
2
3
SELECT ОснованиеПлатежа.*
FROM ОснованиеПлатежа
WHERE (((ОснованиеПлатежа.Администратор)=[Формы]![funding]![Администратор]) AND ((ОснованиеПлатежа.РзПр)=[Формы]![funding]![РзПр]) AND ((ОснованиеПлатежа.ЦСР)=[Формы]![funding]![ЦСР]) AND ((ОснованиеПлатежа.Вр)=[Формы]![funding]![Вр]) AND ((ОснованиеПлатежа.ЭКР)=[Формы]![funding]![ЭКР]) AND ((ОснованиеПлатежа.КодЦелевыхСредств)=[Формы]![funding]![КодСредств]));
А процедура возвращает пустое значение. Можно было бы создать временную таблицу на основе данных запроса и использовать OpenRecordset, но таких запросов много и хотелось бы использовать SQL вместо запроса закон.
Как это осуществить?
Visual Basic
1
2
3
4
5
6
7
8
9
10
Dim q As DAO.QueryDef, p As DAO.Parameter
  Set q = CurrentDb.QueryDefs("закон")
  For Each p In q.Parameters
    p.Value = Eval(p.Name)
  Next
    For Each fld In q.Fields
    Debug.Print q.Fields.Item("Субсидия") 
    Next
  q.Execute
  q.Close: Set q = Nothing
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2013, 10:42
Ответы с готовыми решениями:

QueryDef для запросов, зависящих от формы
Пытаюсь запустить примерно следующее Dim db As Database Dim str As String Dim qd As QueryDef...

В ассеsse2000 при компиляции модуля выдает ошибку на строки Dim DB As Database Dim q1 As QueryDef
В ассеsse2000 при компиляции модуля выдает ошибку на строки Dim DB As Database Dim q1 As QueryDef...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
mobile
Эксперт MS Access
22639 / 12941 / 2662
Регистрация: 28.04.2012
Сообщений: 14,171
11.07.2013, 11:42 #2
Как предположение: некоторые, упомянутые в запросе ссылки на форму это поля со списком. Вы ссылаетесь на видимое значение , а само значение комбо иное. Можно проверить, поставив все ссылки на форму в селект запроса. Ну, и чтобы не было пустого окна, убрать для эксперимента все условия.
SQL
1
2
3
4
5
6
7
8
SELECT top 1 ОснованиеПлатежа.*,
[Формы]![funding]![Администратор], 
[Формы]![funding]![РзПр],
[Формы]![funding]![ЦСР], 
[Формы]![funding]![Вр], 
[Формы]![funding]![ЭКР],
[Формы]![funding]![КодСредств]
FROM ОснованиеПлатежа
Посмотрите глазами, соответствуют ли значения контролов формы вашим ожиданиям
0
tuandreeva
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 56
11.07.2013, 12:22  [ТС] #3
Цитата Сообщение от mobile Посмотреть сообщение
SELECT top 1 ОснованиеПлатежа.*,
[Формы]![funding]![Администратор],
[Формы]![funding]![РзПр],
[Формы]![funding]![ЦСР],
[Формы]![funding]![Вр],
[Формы]![funding]![ЭКР],
[Формы]![funding]![КодСредств]
FROM ОснованиеПлатежа
Посмотрите глазами, соответствуют ли значения контролов формы вашим ожиданиям
Да, все правильно, все соответствует

Добавлено через 10 минут
Извините, не соответствует, просто так совпало, выбираю другую запись, не отбирает нужные данные

Добавлено через 10 минут
SQL
1
2
3
4
5
6
[Формы]![funding]![Администратор], 
[Формы]![funding]![РзПр],
[Формы]![funding]![ЦСР], 
[Формы]![funding]![Вр], 
[Формы]![funding]![ЭКР],
[Формы]![funding]![КодСредств]
Эти поля просто пустые
0
mobile
Эксперт MS Access
22639 / 12941 / 2662
Регистрация: 28.04.2012
Сообщений: 14,171
11.07.2013, 12:41 #4
Цитата Сообщение от tuandreeva Посмотреть сообщение
SQL
1
2
3
4
5
6
[Формы]![funding]![Администратор], 
[Формы]![funding]![РзПр],
[Формы]![funding]![ЦСР], 
[Формы]![funding]![Вр], 
[Формы]![funding]![ЭКР],
[Формы]![funding]![КодСредств]
Эти поля просто пустые
Да, встречался с таким глюком. На форме все есть, а в запрос не попадает. Откуда ноги растут не исследовал. Просто перешел на заведомо работающий вариант с функциями.
SQL
1
2
3
4
5
6
WHERE (ОснованиеПлатежа.Администратор=fAdm() OR fAdm() IS NULL) 
  AND (ОснованиеПлатежа.РзПр=fRz() OR fRz() IS NULL) 
  AND (ОснованиеПлатежа.ЦСР=fCsp() OR fCsp() IS NULL) 
  AND (ОснованиеПлатежа.Вр=fBp() OR fBp() IS NULL) 
  AND (ОснованиеПлатежа.ЭКР=fEkr() OR fEkr() IS NULL ) 
  AND (ОснованиеПлатежа.КодЦелевыхСредств=fKodSredstv() OR fKodSredstv() IS NULL);
В общем модуле
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public function fAdm()
   fAdm=Forms![funding]![Администратор]
end Function
 
Public Function fRz()
   fRz=Forms![funding]![РзПр]
end Function
 
Public Function fCsp()
   fCsp=Forms![funding]![ЦСР]
end Function
 
Public Function fBp()
   fBp=Forms![funding]![Вр]
end Function
 
Public Function fEkr()
   fEkr=Forms![funding]![ЭКР]
end Function
 
Public Function fKodSredstv()
   fKodSredstv=Forms![funding]![КодСредств]
end Function
1
tuandreeva
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 56
11.07.2013, 13:47  [ТС] #5
Цитата Сообщение от tuandreeva Посмотреть сообщение
Код SQL
1
2
3
4
5
6
7
8
9
10
11
Dim q AS DAO.QueryDef, p AS DAO.Parameter
* SET q = CurrentDb.QueryDefs("закон")
* FOR Each p IN q.Parameters
* * p.VALUE = Eval(p.Name)
* NEXT
* * FOR Each fld IN q.FIELDS
* * Debug.Print q.FIELDS.Item("Субсидия")
* * NEXT
* q.EXECUTE
* q.Close: SET q = Nothing
Запрос работает, параметры, выставленные в форме, соответствуют запросу. Но вот получить q.FIELDS.Item("Субсидия") не могу-Пусто
0
mobile
Эксперт MS Access
22639 / 12941 / 2662
Регистрация: 28.04.2012
Сообщений: 14,171
11.07.2013, 14:23 #6
В если так
Visual Basic
1
debug.print Currentdb.openrecordset("закон").fields("Субсидия")
Добавлено через 2 минуты
Или, если в выходном наборе несколько записей
Visual Basic
1
2
3
4
5
6
with Currentdb.openrecordset("закон")
do until .eof
  debug.print .fields("Субсидия")
  .movenext
loop
end with
0
tuandreeva
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 56
11.07.2013, 14:36  [ТС] #7
Все, поняла. Спасибо
0
11.07.2013, 14:36
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru