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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Передача параметра запроса из формы
 
 автор: Sivan   (07.08.2008 в 11:26)   личное сообщение
 
 

Чтобы не плодить множество однотипных запросов, решил сделать форму с чекбоксами, в зависимости от выбранного бокса, в запрос передается определенный параметр. Но совсем запутался в коде, киньте пожалуйста пример. Хотя бы направление, куда копать.
Спасибо

  Ответить  
 
 автор: FORMAT   (07.08.2008 в 11:33)   личное сообщение
 
 

Смотрите вопрос cheperа "Помогите пожалуйста дилетанту"

  Ответить  
 
 автор: Sivan   (07.08.2008 в 17:30)   личное сообщение
 
 

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

  Ответить  
 
 автор: FORMAT   (07.08.2008 в 18:52)   личное сообщение
 
 

БЛ@@@@, народ!!!! Да не стесняйтесь вы прикладывать файлы с базами или фрагментами баз. Меньше гадать приходится или задействовать телепатические способности.
Не знаю я почему выдает такое, но побороть это можно ( только глядя на базу ) и т.д. по списку смайликов

  Ответить  
 
 автор: Sivan   (13.08.2008 в 13:55)   личное сообщение
 
 

Разобрался наполовину ))) В общем модуле прописал функцию

Function RepPar1() As Integer
    RepPar1 = Forms![frmCalc].gr0
End Function

и в параметр запроса вставил =RepPar1()
Теперь не могу понять как можно вставить параметр вида In(1;2;3) ?
Помогите пожалуйста.

  Ответить  
 
 автор: FORMAT   (13.08.2008 в 14:27)   личное сообщение
 
 

Function RepPar1() As Integer
RepPar1 = Forms![frmCalc].gr0
End Function

Для вставки параметров функция должна быть с входящими параметрами

Function RepPar1( par1,par2,par3)

реализация логики самой функции

End Function

В модуле формы идет вызов этой функции
Call RepPar1( параметр1,параметр2,параметр3)
В качестве параметр1 параметр2 параметр3
могут выступать me.Поле1, например, или переменные, содержащие необходимые параметры

Ваша же функция без входных параметров, поэтому передать ей параметры невозможно.

  Ответить  
 
 автор: Sivan   (13.08.2008 в 14:34)   личное сообщение
 
 

Переделать функцию для получения параметров и формирования возвращаемого значения в виде строки "In(1;2;3;4) - не проблема. Только не понятно, как использовать это значение как параметр запроса? К тому же, как я понимаю, функция должна возвращать строку?

  Ответить  
 
 автор: FORMAT   (13.08.2008 в 15:01)   личное сообщение
 
 

Хорошо, попробуем по другому. Функция не нужна
Допустим у вас есть запрос вида
Select Number,Name,Tel From Table1 Where Number = Ваш параметр ( числовое значение, определенное в переменной )
Передать его в запрос можно так

CurrentDb.Execute"Select Number,Name,Tel From Table1 Where Number = " & имя_переменной & ";"

  Ответить  
 
 автор: Sivan   (13.08.2008 в 16:20)   личное сообщение
 
 

FORMAT, простите за тупость, но что-то совсем не догоняю (((
Если использовать ваш пример, то в моем случае поле Number имеет тип длинное целое. Когда в условие отбора передаются числовые значения, то соответственно, никаких проблем нет. Но если нужно передать строку типа In(1;2) то получаю несовпадение типов. Пока меняю каждый раз условие отбора в конструкторе запросов, но это не выход...

  Ответить  
 
 автор: Sivan   (13.08.2008 в 16:21)   личное сообщение
 
 

Пример используемой формулы

Function RepPar2() As Integer
    Select Case Forms![frmCalc].gr1
        Case 1
            RepPar2 = "In(1;2;3)"
        Case 2
            RepPar2 = 4
        Case 3
            RepPar2 = 5
        Case 4
            RepPar2 = 6        
    End Select
End Function

  Ответить  
 
 автор: FORMAT   (14.08.2008 в 13:33)   личное сообщение
 
 

Тогда делайте все значения стринговыми

Function RepPar2() As Integer
Select Case Forms![frmCalc].gr1
Case 1
RepPar2 = "In(1;2;3)"
Case 2
RepPar2 = "4"
Case 3
RepPar2 = "5"
Case 4
RepPar2 = "6"
End Select
End Function

А запрос в таком виде

CurrentDb.Execute"Select Number,Name,Tel From Table1 Where Number like '" & RepPar2 & "';"
( т.е. еще добавьте апострофы)

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