powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Макроподстановка (так сказать...)
51 сообщений из 51, показаны все 3 страниц
Макроподстановка (так сказать...)
    #32309408
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суть проблемы такая: есть переменная, которой надо присвоить значение поля, например, в момент открытия формы. Какого именно поля - это зависит от ситуации. Стринг с именем поля я имею. Какой должен быть синтаксис в этом случае? Спасибо.
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309412
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309470
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я конечно дико извиняюсь, может просто уже к концу дня ничего не соображаю? Мне нужно обратиться к объекту формы, но в коллекции элементов Fields у него нет. Но мне надо написать что-то типа:
Me.имя файла(стринг). Ругается постоянно на неправильный метод. :((
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309475
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Тогда вот:\r
\r
/topic/43028
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309484
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Me.Fields(strControlName)
где Me - это ссылка на форму, strControlName - строковая переменная где лежит имя контрола.

З.Ы. Факописатели! Может мы плохо фак написали?
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309496
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Наверно, Me.Recordset.Fields?
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309499
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Me.Fields(strControlName)
не сыпь мне соль на рану...
так я сразу написала, а он..., а я.... Ну не нравиться ему метод, выделяет Fields и усё...
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309504
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну не нравиться ему метод, выделяет Fields и усё...
Дык оно (Me.Fields(strControlName)) должно быть в модуле формы чтобы так писать. В обработчике какого-нибудь события типа нажатия на кнопку например.
Если надо снаружи обращаться - Forms![ИмяФормы].Fields(strControlName)
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309506
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, дык, у меня где ж? В обработчике открытия формы. Я сразу написала.
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309517
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Люди, посмотрите, чего я красненьким написал.
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309519
f atlz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Me.Controls(cName)
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309521
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотрела я на то, что красненьким написано!!!! Но постеснялась сразу сказать... ;) В этом случае ругается, что нет такого итема в коллекции...
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309525
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Me.Controls(cName)
Уже не ругается, но считает кол-во полей, а не их значения.
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309554
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Me.Controls(cName).Value

:^)
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309616
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хммм...
Мдя...
Вырвал себе кучу волос... в том числе и на голове...
Мдя...
Хммм...
Перепутать Fields и Controls....
Ну да и хрен бы с ним... Меня ник обязывает иногда херню писать...
Вставил кучу волос обратно...
Хммм...
Мдя...
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309618
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Вставил кучу волос обратно...

Все-таки обитание на этом форуме вырабатывает телепатические способности. После твоей 3-й строки я хотел ответить: "Те, которые на голове, вставляй обратно".
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309621
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Те, которые на голове, вставляй обратно
Главное чтоб я еще раз не перепутал... как с Fields и Controls...
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309627
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А в форуме все равно не видно. Вон у меня на фото борода, ну так разве можно отличить, из головы там волосы или не из головы...
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309648
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саныч: Те, которые на голове, вставляй обратно

Долго думал, какие волосы - Fields, а какие - Controls. Наверно так: если дыбом вставать умеют - эти Controls, остальные - Fields
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309904
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да-а-а, весело с вами, ребята. Если бы не ваше доброжелательное и легкое отношение, я бы еще вчера повесилась из-за этой фиговинки :)) А так еще поживу может...
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309921
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебе весело. А на меня народ с самого утра как-то странно смотрит. Кажется все-таки перепутал...
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309938
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Говорите, что это новомодная химическая завивка ;)
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32309950
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Говорите, что это новомодная химическая завивка ;)
После чего мне подарят косметичку?
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310055
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Этот топик надо будет приводить всем как аргумент в поддержку разговоров не по теме. (Если кто не знает: мы с Лохом - модераторы...)
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310196
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В поддержку разговоров по теме:
Теперь надо это вычисляемое название поля вставить в функцию, а функцию в запрос. Функция и запрос готовы. А вот на синтаксис для поля фантазии не хватает. Одним словом "Object required"
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310207
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Синтаксис для поля такой:

MyFun() As MyField

где
MyFun - название функции, которая уже написана
MyField - название поля, как оно должно получиться

А насчет Object required не понял. :^)
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310216
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вставить функцию в запрос - с эти не проблема. Проблема с вычисляемым именем поля этого же запроса, которое используется в этой функции. А "Object required" - это то ругательство, что мне аксесс выдает
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310226
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь надо это вычисляемое название поля вставить в функцию, а функцию в запрос. Функция и запрос готовы
Название поля? Или все таки его значение?
Если название - бери и вставляй.
Если значение - тоже бери и вставляй. Я уже писал как. Forms![ИмяФормы].Controls(strControlName).Value
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310243
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я наверно плохо объяснила суть проблемы. Сейчас попробую подробно:
Есть запрос, в котором одно из полей есть результат суммы некоторых полей этого же запроса. Какие поля участвуют в расчете, я определяю в функции, которая записана в модуле (не в форме). Вот.
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310257
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
На что именно и в какой момент он выдает это ругательство?
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310260
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть запрос, в котором одно из полей есть результат суммы некоторых полей этого же запроса. Какие поля участвуют в расчете, я определяю в функции, которая записана в модуле
Может проще в эту функцию передать значения всех полей, которые могут понадобится, и эта функция сразу вернет результат?
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310277
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я просто напишу в процедуре Sum_1=Sum_1+Fld, где Fld - это строка с именем поля, то пишет "Type mismatch" на эту строку (это понятно суммировать чило со стрингом:)), а если напишу Sum_1=Sum_1+Controls(Fld).Value, то "Sub or Function not defined".
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310283
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Sum_1=Sum_1+Forms!MyForm.Controls(Fld).Value
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310289
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может проще в эту функцию передать значения всех полей, которые могут понадобится, и эта функция сразу вернет результат?

Мне этот запрос потом нужно представить в табличной форме. И запрос у немя не простой, с юнитом. Боюсь, потом начнутся проблемы с выводом...
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310303
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К тому же этот запрос еще используется в другой форме и репорте... Динамически я его не могу создавать, длинный очень. Поэтому он существует в Queries.
Forms!MyForm. - а если без формы?
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310340
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А если без формы, то откуда должны браться значения ???
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310344
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тем более, что если я вставляю Forms!MyForm.Controls(Fld).Value и запускаю запрос из формы, то ругается "You entered an expression that has no value"
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310345
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
значения берутся из самого запроса.
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310349
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Увы, увы. Моих телепатических способностей хватает только на то, чтобы угадывать желания Лоха. Чтобы угадать, почему не работает программа, мне надо видеть программу. Уж пардон.
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310351
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Если значения берутся из запроса, то надо сделать так, как сказал Лох: передавать через параметры в функцию значения всех полей.
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310379
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может проще в эту функцию передать значения всех полей, которые могут понадобится, и эта функция сразу вернет результат?

Мне этот запрос потом нужно представить в табличной форме. И запрос у немя не простой, с юнитом. Боюсь, потом начнутся проблемы с выводом...


Ну и что с того, что нужно представить? Ну и что с того что юнион?
Тебе в каком-то поле нужно вывести странную сумму каких-то полей. Ну и передавай эти значения полей в какую-то функцию и считай странную сумму в этой функции. Результат работы функции выводи в запросе. В чем сложность-то?
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310381
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть запрос, в котором одно из полей есть результат суммы некоторых полей этого же запроса. Какие поля участвуют в расчете, я определяю в функции, которая записана в модуле (не в форме).

Вариант : "одно из полей" - сделать функцией от всех прочих полей в запросе, каковые могут там побывать. А уж _в функции_ определив, что там у вас учавствует в суммировании, то и употребить через нормальное ветвление (если то-то - добавить ту-то, если иначе - другую переменную).
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310383
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Во. Уже три голоса за то, чтобы передавать все поля.
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310532
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда-а, проблемка-с... Дело в том, что и количество полей будет меняться. Это ж как же ж надо все закрутить!!!!!
А так хорошо день начинался....
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310542
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И как это у тебя в запросе количество полей будет меняться?
Сдается мне что что-то ты не то делаешь....
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32310623
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>К тому же этот запрос еще используется в другой форме и репорте...

>а если без формы?

>значения берутся из самого запроса.

>Мда-а, проблемка-с... Дело в том, что и количество полей будет меняться.

Ну ни хрена себе закручено...

из неопределённого места взять неопределённое кол-во полей и получить результат - мдааа.... это вам не вилкой в носу поковыряться...

Может попробуешь запрос показать...
Вдруг лучше его понять удасться...

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32311281
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Будет меняться количество полей, которые надо просуммировать.
Сам запрос могу привести (в сокращенном виде)
SELECT
Budget.CostCode AS CostCode,
"1" AS pr,
Sum(Budget.Sum_planned_06_03) AS Sum_planned_06_03,
Sum(Budget.Sum_planned_07_03) AS Sum_planned_07_03,
Sum(Budget.Sum_planned_08_03) AS Sum_planned_08_03,
Sum(Budget.Sum_planned_09_03) AS Sum_planned_09_03,
Sum(Budget.Sum_planned_10_03) AS Sum_planned_10_03,
Sum(Budget.Sum_planned_11_03) AS Sum_planned_11_03,
Sum(Budget.Sum_planned_12_03) AS Sum_planned_12_03,
Sum_Planned() AS Estimated
FROM Budget
Group By CostCode
UNION SELECT
Budget.CostCode AS CostCode,
"2" AS pr,
Sum(Budget.Sum_actual_06_03) AS Sum_actual_06_03,
Sum(Budget.Sum_actual_07_03) AS Sum_actual_07_03,
Sum(Budget.Sum_actual_08_03) AS Sum_actual_08_03,
Sum(Budget.Sum_actual_09_03) AS Sum_actual_09_03,
Sum(Budget.Sum_actual_10_03) AS Sum_actual_10_03,
Sum(Budget.Sum_actual_11_03) AS Sum_actual_11_03,
Sum(Budget.Sum_actual_12_03) AS Sum_actual_12_03,
Sum_Actual() AS Estimated
FROM Budget
Group By CostCode;

Плюс к этому две функции:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Public Function Sum_Actual() As Integer
Dim Mes, Fld As String

Mes = Month(Date)
Sum_Actual =  0 

I =  5 
Do While I < Mes
   I = I +  1 
         
   If Month(Date) >  9  Then Fld =  "Sum_planned_"  & Month(Date) &  "_"  & Mid(Year(Date),  3 ,  2 ) _
   Else Fld =  "Sum_planned_0"  & Month(Date) &  "_"  & Mid(Year(Date),  3 ,  2 )
   
   Sum_Actual = Sum_Actual + Sum_planned_10_03

Loop
End Function

Public Function Sum_Planned() As Integer
Dim Mes, Fld As String

Mes = Month(Date)

Sum_Planned =  0 
I = Mes +  1 
Do While I <=  12 
   I = I +  1 
         
   If Month(Date) >  9  Then Fld =  "Sum_planned_"  & Month(Date) &  "_"  & Mid(Year(Date),  3 ,  2 ) _
   Else Fld =  "Sum_planned_0"  & Month(Date) &  "_"  & Mid(Year(Date),  3 ,  2 )
   
   Sum_Planned = Sum_Planned + Sum_planned_10_03
Loop

End Function

Вполне возможно, что написано где-то не правильно или не красиво. Критикуйте, как считаете нужным.
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32312017
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
У меня много замечаний, из них часть по делу и часть не по делу.

Не по делу:

1. Эти две функции вполне можно заменить на одну с параметрами.
2. Вместо цикла Do будет лучше выглядеть с циклом For.
3. Имя функции в правой части оператора присваивания работать не будет.

По делу:

1. Где в запросе обращения к этим функциям?
2. Где в функциях обращения к полям? (Вижу переменную Fld, но не вижу, где она используется.)
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32314520
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения за задержку, пришлось переключиться на другую задачу.
По поводу возникших вопросов-замечаний.
1. В запросе обращение к функциям - это строчки перед "FROM..."
2. В самой функции я написала уже конкретное поле Sum_planned_10_03 (моя опечатка, копировала через клипборд и остался "тренировочный" вариант.
Функция должна выглядеть так (я одну приведу):

Public Function Sum_Planned() As Integer
Dim Mes, Fld As String
Mes = Month(Date)
Sum_Planned = 0
I = Mes + 1
Do While I <= 12
I = I + 1
If Month(Date) > 9 Then Fld = "Sum_planned_" & Month(Date) & "_" & Mid(Year(Date), 3, 2) _
Else Fld = "Sum_planned_0" & Month(Date) & "_" & Mid(Year(Date), 3, 2)
Sum_Planned = Sum_Planned + Fld ' вот здесь и надо праавильно написать обращение к полю
Loop
End Function
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32314550
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например можно так:
Код: plaintext
1.
2.
3.
4.
5.
Public Function Sum_Planned(ParamArray flds()) 
    '.............
    skipped
    .............'
    Sum_Planned = Sum_Planned + flds(i) ' Где i - порядковый номер поля (начиная с 0) '
End Function


Ну и в запросе передаешь ей все поля, т.е.
Select ......., Sum_Planned(а здесь перечисляешь все нужные поля через запятую) From ... Where ....

Не красиво ни фига, но работать будет.
...
Рейтинг: 0 / 0
Макроподстановка (так сказать...)
    #32324815
Фотография Lola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять должна извениться за задержку с ответом. Причина та же: разбрасываюсь на разные задачи. Сегодня сделала наконец по Вашей подсказке. Работает. СПАСИБО!
...
Рейтинг: 0 / 0
51 сообщений из 51, показаны все 3 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Макроподстановка (так сказать...)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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