|
|
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
Синтаксис для поля такой: MyFun() As MyField где MyFun - название функции, которая уже написана MyField - название поля, как оно должно получиться А насчет Object required не понял. :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 12:56 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
Как вставить функцию в запрос - с эти не проблема. Проблема с вычисляемым именем поля этого же запроса, которое используется в этой функции. А "Object required" - это то ругательство, что мне аксесс выдает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 12:59 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
Теперь надо это вычисляемое название поля вставить в функцию, а функцию в запрос. Функция и запрос готовы Название поля? Или все таки его значение? Если название - бери и вставляй. Если значение - тоже бери и вставляй. Я уже писал как. Forms![ИмяФормы].Controls(strControlName).Value ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 13:02 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
Я наверно плохо объяснила суть проблемы. Сейчас попробую подробно: Есть запрос, в котором одно из полей есть результат суммы некоторых полей этого же запроса. Какие поля участвуют в расчете, я определяю в функции, которая записана в модуле (не в форме). Вот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 13:11 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
На что именно и в какой момент он выдает это ругательство? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 13:17 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
Есть запрос, в котором одно из полей есть результат суммы некоторых полей этого же запроса. Какие поля участвуют в расчете, я определяю в функции, которая записана в модуле Может проще в эту функцию передать значения всех полей, которые могут понадобится, и эта функция сразу вернет результат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 13:21 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
Если я просто напишу в процедуре Sum_1=Sum_1+Fld, где Fld - это строка с именем поля, то пишет "Type mismatch" на эту строку (это понятно суммировать чило со стрингом:)), а если напишу Sum_1=Sum_1+Controls(Fld).Value, то "Sub or Function not defined". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 13:29 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
Sum_1=Sum_1+Forms!MyForm.Controls(Fld).Value ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 13:32 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
Может проще в эту функцию передать значения всех полей, которые могут понадобится, и эта функция сразу вернет результат? Мне этот запрос потом нужно представить в табличной форме. И запрос у немя не простой, с юнитом. Боюсь, потом начнутся проблемы с выводом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 13:33 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
К тому же этот запрос еще используется в другой форме и репорте... Динамически я его не могу создавать, длинный очень. Поэтому он существует в Queries. Forms!MyForm. - а если без формы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 13:40 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
А если без формы, то откуда должны браться значения ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 13:51 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
Тем более, что если я вставляю Forms!MyForm.Controls(Fld).Value и запускаю запрос из формы, то ругается "You entered an expression that has no value" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 13:52 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
значения берутся из самого запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 13:53 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
Увы, увы. Моих телепатических способностей хватает только на то, чтобы угадывать желания Лоха. Чтобы угадать, почему не работает программа, мне надо видеть программу. Уж пардон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 13:54 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
Если значения берутся из запроса, то надо сделать так, как сказал Лох: передавать через параметры в функцию значения всех полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 13:55 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
Может проще в эту функцию передать значения всех полей, которые могут понадобится, и эта функция сразу вернет результат? Мне этот запрос потом нужно представить в табличной форме. И запрос у немя не простой, с юнитом. Боюсь, потом начнутся проблемы с выводом... Ну и что с того, что нужно представить? Ну и что с того что юнион? Тебе в каком-то поле нужно вывести странную сумму каких-то полей. Ну и передавай эти значения полей в какую-то функцию и считай странную сумму в этой функции. Результат работы функции выводи в запросе. В чем сложность-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 14:05 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
Есть запрос, в котором одно из полей есть результат суммы некоторых полей этого же запроса. Какие поля участвуют в расчете, я определяю в функции, которая записана в модуле (не в форме). Вариант : "одно из полей" - сделать функцией от всех прочих полей в запросе, каковые могут там побывать. А уж _в функции_ определив, что там у вас учавствует в суммировании, то и употребить через нормальное ветвление (если то-то - добавить ту-то, если иначе - другую переменную). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 14:06 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
Во. Уже три голоса за то, чтобы передавать все поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 14:09 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
Мда-а, проблемка-с... Дело в том, что и количество полей будет меняться. Это ж как же ж надо все закрутить!!!!! А так хорошо день начинался.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 15:06 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
И как это у тебя в запросе количество полей будет меняться? Сдается мне что что-то ты не то делаешь.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 15:12 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
>К тому же этот запрос еще используется в другой форме и репорте... >а если без формы? >значения берутся из самого запроса. >Мда-а, проблемка-с... Дело в том, что и количество полей будет меняться. Ну ни хрена себе закручено... из неопределённого места взять неопределённое кол-во полей и получить результат - мдааа.... это вам не вилкой в носу поковыряться... Может попробуешь запрос показать... Вдруг лучше его понять удасться... Сделать можно всё!!! Только бы знать как... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 15:59 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
Будет меняться количество полей, которые надо просуммировать. Сам запрос могу привести (в сокращенном виде) 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. Вполне возможно, что написано где-то не правильно или не красиво. Критикуйте, как считаете нужным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2003, 09:55 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
У меня много замечаний, из них часть по делу и часть не по делу. Не по делу: 1. Эти две функции вполне можно заменить на одну с параметрами. 2. Вместо цикла Do будет лучше выглядеть с циклом For. 3. Имя функции в правой части оператора присваивания работать не будет. По делу: 1. Где в запросе обращения к этим функциям? 2. Где в функциях обращения к полям? (Вижу переменную Fld, но не вижу, где она используется.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2003, 15:38 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
Прошу прощения за задержку, пришлось переключиться на другую задачу. По поводу возникших вопросов-замечаний. 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2003, 11:34 |
|
||
|
Макроподстановка (так сказать...)
|
|||
|---|---|---|---|
|
#18+
Например можно так: Код: plaintext 1. 2. 3. 4. 5. Ну и в запросе передаешь ей все поля, т.е. Select ......., Sum_Planned(а здесь перечисляешь все нужные поля через запятую) From ... Where .... Не красиво ни фига, но работать будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2003, 11:51 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32310623&tid=1678247]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
78ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 402ms |

| 0 / 0 |
