Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Почему не работает в запросе рукописная функция? / 24 сообщений из 24, страница 1 из 1
17.06.2004, 21:51:48
    #32566302
мадама
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
Есть форма, на ней лист. Из листа считываются года (billing_year , стринги в таблице) и присваиваются в переменную, которя выглядит как '2002','2003' и т.д. Разберём простейший случай. Допустим я беру один год, т.е. переменная glob_SS_survey_year= '2003'. Пишу такую простейшую функцию (нарочно упрощаю)

Код: plaintext
1.
2.
Function fBillingYear() As String
    fBillingYear = glob_SS_survey_year
End Function
И делаю такой простейший запрос, который является сорсом для рипорта.
(всё сильно упрощаю)

select f1,f2,billing_year from MyTable where billing_year=fBillingYear()

Не читает. Но и не ругается. Просто выдаёт ноль записей. Иду в debug window, печатаю результат fBillingYear(). Выдаёт правильно '2003'. Подставляю напрямую в запрос вместо fBillingYear() - '2003', тоже выдаёт записи, т.е. записи сами есть. Подставляю назад fBillingYear() , ни хренаськи. Почему не читает написанную мной функцию для стринга? А другую, написанную мноё же для даты читает.
...
Рейтинг: 0 / 0
17.06.2004, 21:52:57
    #32566303
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
А поле billing_year текстовое?
...
Рейтинг: 0 / 0
17.06.2004, 21:56:16
    #32566305
мадама
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
Да
...
Рейтинг: 0 / 0
17.06.2004, 22:19:11
    #32566314
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
Код: plaintext
1.
2.
3.
Function fBillingYear() As String
    fBillingYear = "2003"
End Function
а вот так у меня работает - стринг в Where надо окружить кавычками
напрямую ты же их ставишь!
...
Рейтинг: 0 / 0
17.06.2004, 22:37:44
    #32566323
мадама
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
Shuhard, а вы молодец. И вправду так работает. Всегда знала, что этот форум the best!
Но радость моя была недолгой , как говориться. Мне-то на самом деле надо, чтобы выбирадось по нескольким годам, типа как
in ('2003','2004') и т.п. А так оно уже опять не понимает. Может у кого есть какие идеи?
...
Рейтинг: 0 / 0
17.06.2004, 22:54:44
    #32566334
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
Shuhard, я не понял, в чем твоя идея. Чем твой вариант отличается от исходного.
...
Рейтинг: 0 / 0
17.06.2004, 23:26:12
    #32566348
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
мадамаShuhard, а вы молодец. И вправду так работает. Всегда знала, что этот форум the best!
Но радость моя была недолгой , как говориться. Мне-то на самом деле надо, чтобы выбирадось по нескольким годам, типа как
in ('2003','2004') и т.п. А так оно уже опять не понимает. Может у кого есть какие идеи?

уже приседали Саныч с Top для ёжика
а я с In
TOP и IN работают исключительно в строке Select и не передаются извне
поэтому необходимо менять строку запроса сохраненного под неким именем
в примере q2 - запрос ,P_1 - поле в форме
Код: plaintext
1.
2.
3.
4.
5.
6.
Dim mydb As DAO.Database
Dim myq As QueryDef
Dim stDocName As String
Set mydb = CurrentDb
Set myq = mydb.QueryDefs![q2]
myq.SQL = "SELECT * FROM TCorp WHERE Corp_id  In  (" & Me![P_1] & ")"
...
Рейтинг: 0 / 0
17.06.2004, 23:29:11
    #32566350
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
Владимир СанычShuhard, я не понял, в чем твоя идея. Чем твой вариант отличается от исходного.
Саныч звеняй!
злой я от общения с рекрутерами
просто код порисую без комментариев
...
Рейтинг: 0 / 0
17.06.2004, 23:30:10
    #32566352
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
Но это только если с mdb работает одновременно не более одного юзера.

Shuhard, у меня клин в голове, расскажи, что там было...
...
Рейтинг: 0 / 0
17.06.2004, 23:35:59
    #32566355
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
Код: plaintext
1.
Select TOP Forms![xxx]![yyyy] FROM T1 

такая конструкция ни через поле ни через функцию не работает
нужен querydef

насчёт многопользовательской
если это не отчёт то .execute или recordset
если отчёт то локальная временная таблица либо генерация уникального имени запроса + замена источника отчёта
...
Рейтинг: 0 / 0
17.06.2004, 23:41:50
    #32566359
мадама
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
Да, я хотела выкрутиться без изменения строки запроса, но видно не судьба. Этот-то способ я знаю. Просто хотелось поэлегантнее. Ну и хрен с ним. Спасибо Shuhard. И наплюйте вы на рекрутеров, не берите близко к сердцу. Они ещё пожалеют, кого потеряли.
...
Рейтинг: 0 / 0
17.06.2004, 23:43:20
    #32566360
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
мадамаИ наплюйте вы на рекрутеров, не берите близко к сердцу. Они ещё пожалеют, кого потеряли.
Присоединяюсь.
...
Рейтинг: 0 / 0
18.06.2004, 00:01:21
    #32566365
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
Злой на себя
в 40 лет первый раз нанимаюсь на работу
(институт-кафедра-друзья позвали)
не могу сформулировать для себя критерии отбора
будучи до этого начальником ИТ-отдела начинаю "рулить" ситуацию
результат анекдотичный
...
Рейтинг: 0 / 0
18.06.2004, 00:26:39
    #32566371
мадама
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
Тут, на "гнилом" западе есть множество книг и иструкций на эту тему. Как наниматься, что говорить, как держаться и даже что одевать на интервью. И главное, что НЕ говорить. Это конечно большая работа - хорошая подготовка к интервью. И с налёту не всегда получается. Как говориться, быть хорошим специалистом это одно, а умение хорошо продать себя это другое. И это не всегда одинаково развито в одном человеке. Но над этим можно работать. И шанс обязательно подвернётся.
...
Рейтинг: 0 / 0
18.06.2004, 00:29:09
    #32566373
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
мадамаТут, на "гнилом" западе есть множество книг и иструкций на эту тему. Как наниматься, что говорить, как держаться и даже что одевать на интервью. И главное, что НЕ говорить. Это конечно большая работа - хорошая подготовка к интервью. И с налёту не всегда получается. Как говориться, быть хорошим специалистом это одно, а умение хорошо продать себя это другое. И это не всегда одинаково развито в одном человеке. Но над этим можно работать. И шанс обязательно подвернётся.
И в результате на Западе полно людей, которые умеют себя продать, и совершенно невозможно определить, кто из них что из себя представляет на самом деле. Идиотизм, однако.
...
Рейтинг: 0 / 0
18.06.2004, 00:40:46
    #32566379
мадама
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
О, не волнуйтесь так Саныч, когда доходит до дела, как вы думаете, долго ли бестолковые продержаться? Работу ведь делать надо. Тут вообще берут сначала на probation period, месяца 3, к тебе присматриваются и если не подошёл, делают тебе "попрошу вас выйти вон".
...
Рейтинг: 0 / 0
18.06.2004, 00:45:32
    #32566380
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
Это я понимаю. У нас ведь тоже всё именно так. Но все равно маразм, что нужно специально учиться себя продавать, тогда как все знают, что это ничего не отражает.

А еще у нас в некоторых организациях нужно при приеме на работу проходить психотест. И отдельно есть курсы по подготовке к психотестам, которые берут неплохие деньги. И на этих курсах учат, что домик надо рисовать с трубой, дерево с дуплом (к примеру), а человечка с пуговицами. И в результате психотест выбирает не тех, кто обладает какими-то свойствами личности, а тех, кто заплатил за курс.
...
Рейтинг: 0 / 0
18.06.2004, 00:51:38
    #32566382
мадама
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
Тоже отбор... :)))
...
Рейтинг: 0 / 0
18.06.2004, 01:07:51
    #32566386
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
мадамаТут, на "гнилом" западе есть множество книг и иструкций на эту тему. Как наниматься, что говорить, как держаться и даже что одевать на интервью. И главное, что НЕ говорить. Это конечно большая работа - хорошая подготовка к интервью. И с налёту не всегда получается. Как говориться, быть хорошим специалистом это одно, а умение хорошо продать себя это другое. И это не всегда одинаково развито в одном человеке. Но над этим можно работать. И шанс обязательно подвернётся.
у меня обратная проблема как выбрать из предложений одно!
...
Рейтинг: 0 / 0
18.06.2004, 01:14:30
    #32566390
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
Сочувствую, этот вариант еще хуже :)
...
Рейтинг: 0 / 0
18.06.2004, 02:52:25
    #32566401
Bely
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
мадамаДа, я хотела выкрутиться без изменения строки запроса, но видно не судьба. Этот-то способ я знаю. Просто хотелось поэлегантнее. Ну и хрен с ним.

Есть, впринципе, способ - искать подстроку в списке значений раделенных запятой.

Примерно так:
Код: plaintext
1.
2.
3.
select f1,f2,billing_year 
from MyTable 
where instr( ','+szValList+',', ','+CStr(billing_year)+',')> 0 

Но этот способ не всегда хорош - запрос может серьезно замедлиться.
...
Рейтинг: 0 / 0
18.06.2004, 11:21:43
    #32566765
аха
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
авторЕсть форма, на ней лист.

вот с этого места поподробнее.
Ибо:
Если лист имеет сохраненный сурс типа "запрос/та-бла" (скажем под неймом MyListQry), то можно не читать значения в строку, а написать ф-ю IsMyListSelected([Optional] idList) Boolean

(внутри примерно так: в статик массив гонится набор id при первом обращении (idList=Null [or Empty -в зависимости от конкретики]) и возвращается True, при IsMyListSelected(idList) (idList Not NULL) просто перебором (значений-то в листе мало, изгаляться с быстрым поиском не надо) проверяем наличие айди в массиве.

, а дальше вместо IN делать
Код: plaintext
1.
2.
3.
...
FROM [та-бла] INNER JOIN  MyListQry
 ON [та-бла].[billing_year] = MyListQry.billing_year
  WHERE IsMyListSelected(MyListQry.idList) AND IsMyListSelected(Null)

но можно и щить строчку в VBA, как предложено
...
Рейтинг: 0 / 0
18.06.2004, 17:31:35
    #32567972
мадама
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
автору меня обратная проблема как выбрать из предложений одно!

Ну это не трудно. Для меня это было бы так:

1.Деньги (просто и в сравнении с имеющимися)
2.Перспективность (позиции, компании, направления и т.д.)
3.Интересность работы
4.Удобство добирания на работу (что б не надо было для этого например перебираться в другую страну или город, или 3 часа в один конец)

У других эти критерии могут варьироваться. Как например у кого-то на всех местах могут быть деньги, у кого-то третье может стать первым и т.д. и т.п. У кого-то могут добавиться ещё критерии. Вот и всё.

-----------------------
Пойду попробую последние предложения по запросу. Кстате спасибо за них. Sounds very good.
...
Рейтинг: 0 / 0
18.06.2004, 22:36:41
    #32568225
мадама
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему не работает в запросе рукописная функция?
Всё разрешила. Если кому-то интересно, рассказываю.

1. Присобачила к листу табличку, в неё дополнительное поле "selected"

2. Перед обрашением к рипорту в это поле запихиваю еденички если этот год выбран и нолики если нет. Или все еденички, если ничего не выбранно (важный момент!)

3.Естественно связываю эту табличку с запросом для рипорта по полю billing_year где selected=1.

Т.е. спасибо axa за наводку.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Почему не работает в запросе рукописная функция? / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]