Access переменная в запросе

Access переменная в запросе

0 BigRob [2011-03-29 12:57:00]

У меня есть текстовое поле в форме под названием

Я хочу использовать значение, введенное в это текстовое поле, в качестве столбца в моем запросе, так что он будет иметь тот же эффект, что и ввод

Я попытался использовать

Но это не сработает. Запрос содержит один столбец с именем CustID, и я хочу, чтобы второй столбец содержал значение текстового поля txtNID.

Я также попытался установить функцию для определения переменной для столбца, но мой VB настолько плох, что я просто продолжаю кругами! Вот что я сделал:

Затем установите поле запроса как = FrmNID(), но оно не сработало!

Может быть, действительно с некоторыми указателями! Спасибо, Роб.

Изначально была такая проблема:

Access 2007. Есть на форме кнопка и 2 поля куда вводятся даты. При нажатии кнопки данные из полей записываются во временные переменные
TempVars("statdate1").Value = usDate(statdate1.Value)
TempVars("statdate2").Value = usDate(statdate2.Value)
(usDate — функция, преобразует даты в американский стандарт)
Затем открывается форма, содержащая подчиненную. В основе подчиненной лежит запрос на выборку.
Нужно, чтобы запрос каждый раз при нажатии на кнопку выдавал инфу за период(2 введенные даты), поэтому в конструкторе запроса на поле Дата в условии отбора пишу:
Between [tempvars]![statdate1] And [tempvars]![statdate2]
Access сообщает мне, что "Выражение неверно введено и является слишком сложным для расчета. "
Как заставить выполняться этот запрос, используя заранее введенные переменные?

мне посоветовали использовать вместо переменных функции. которые возвращают те же значения, что и у переменных. Я попробовал написать(опыт плохой в прогании) и столкнулся с этим:

В общем ситуация следующая:
поразмыслив теми малыми знаниями в области программирования, что у меня есть, я пришел к выводу, что функции, возвращающие нужные мне переменные должны выглядеть как-то так:

Читайте также:  Живые плитки windows 10 mobile

Public Function statdate1() As String
statdate1 = [TempVars]![statdate1]
End Function

Public Function statdate2() As String
statdate2 = [TempVars]![statdate2]
End Function

В конструкторе запросов в условии отбора поля Дата пишу:
Between statdate1() And statdate2()

В результате Аксес мне пишет о несоответствии типов.
Перед присвоением в теле функции переменная [TempVars]![statdate1] имела значение #05/22/2009#
После присвоения
statdate1 = [TempVars]![statdate1] — вот здесь
Функция вернула мне 22.05.2009

Отсюда и несоответствие типов. Что-то я совсем завис. Возможно я делаю что-то фатально не правильно? Где тут подвох?

Пользовательские переменные можно задавать через ‘set’, а можно ли прям внутри, к примеру select, задать переменную, что называется, на лету?

Видел простейший пример SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3, но я не хочу их выбирать, я хочу их использовать в запросе, выполнять с ними операции.

Для примера хочу брать каждый пятый товар из базы, как мне задать @a внутри этого запроса?

select * from products where (@a:=@a+1) % 5 = ‘0’

Я понимаю, что это можно сделать по id товара или каким-то другим способом, интересует не решение запроса, а ответ на мой вопрос.

  • Вопрос задан более трёх лет назад
  • 15731 просмотр

Переменную можно объявить в подзапросе. Например:

Что бы использовать ее применимо к вашей задаче, нужно в подзапросе пронумеровать строки, а потом уже по условию выбрать нужные. Что-то вроде этого:

Ссылка на основную публикацию
Adblock
detector