|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
Здравствуйте. Пользователи в таблице "пользователь" могут приглашать других пользователей, это отображается в таблице "пользователь-приглашенный", есть запрос, который формирует все затраты пользователя из таблицы "посещения". Нужно чтобы пользователю пригласившему другого пользователя начислялся % от его затрат. Я хочу сделать это в VBA - написать функцию, которая читает всех приглашенных и вычисляет % от каждого приглашенного, и так далее рекурсией до верхнего уровня (искомого пользователя). Не могу разобраться как мне считать данные из таблицы Access (получить результат SQL запроса) в переменную VBA (массив) для анализа и работы с ними. Дайте пожалуйста пример получения данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 15:47 |
|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
Windoкак мне считать данные из таблицы Access (получить результат SQL запроса) в переменную VBA (массив) для анализа и работы с ними. А зачем в массив-то? работай напрямую с рекордсетом... WindoПользователи в таблице "пользователь" могут приглашать других пользователей, это отображается в таблице "пользователь-приглашенный" Структура допускает "петли", это плохо. Однако в MS Access затруднительно организовать соответствующий констрейнт. Для упрощения работы с указанным функционалом я бы рекомендовал вместо таблицы Пользователь-Приглашённый добавить в таблицу пользователей поле материализованного пути цепочки пригласивших. Т.е. вместо IDПользователь1Иванов2Петров3Сидоров4Пупкин ПригласившийПриглашённыйИвановПетровПетровСидоров сделать так: IDПользовательПригласившие1Иванов\2Петров\Иванов\3Сидоров\Петров\Иванов\4Пупкин\ Само собой, в материализованном пути использовать не ФИО, а ID-ы. Тогда решение поставленной задачи становится элементарным. Ещё лучше хранить ID-ы, выровненные ведущими нулями, тогда расчёт просто ведём в порядке убывания длины данных в поле. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 16:38 |
|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
Пользователь может быть приглашен только 1 раз, петлей нет. Хочу работать с переменными для формирования функции, с помощью которой организовать рекурсию. Грубо функция (ID (имя пользователя)) = сумма в функции условие- Если ID приглашенных > 0, то функция (ID (имя пользователя_приглашенного)) = сумма Подскажите хороший мануал по рекордсет с синтаксисом и необходимыми настройками access пожалуйста. И команду для записи рекордсета в массив. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 16:55 |
|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
WindoПользователь может быть приглашен только 1 раз Тогда в таблице приглашённых поле участника сделай обязательным, поле приглашённого первичным индексом, а ID вообще убери за ненадобностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 17:01 |
|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
Sub test() Dim RS As ADODB.Recordset 'Строка запроса Dim sql_query As String 'Строка для вывода итоговых данных в сообщении Dim str As String 'Создаем новый объект для записей Set RS = New ADODB.Recordset 'Строка запроса sql_query = "SELECT Участники.ФИОучастника FROM Участники WHERE Участники.Код =2" 'Выполняем запрос с использованием текущих настроек подключения проекта RS.Open sql_query, CurrentProject.Connection 'Циклом перебираем записи While Not (RS.EOF) 'Заполняем переменную для вывода сообщения str = str & RS.Fields("ФИОучастника") & " " 'переход к следующей записи RS.MoveNext Wend 'Вывод сообщения MsgBox str End Sub (WHERE Участники.Код =2 ) Как мне сюда ставить переменную? Не могу найти мануал нормальный по функциям ADODB. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 17:12 |
|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
(WHERE Участники.Код =2 ) Как мне сюда ставить переменную? Не могу найти мануал нормальный по функциям ADODB. Не понял ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2017, 02:24 |
|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
гурД, Спасибо, буду разбираться, жаль не по русски. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2017, 12:11 |
|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
Windoбуду разбираться, жаль не по русски. Сам от этого порой испытываю неудобства. В интернете не пробовали смотреть? Добрые люди вроде перевели с английского ... Единственно, сам код пока остался на английском. Но скоро обещали также адаптировать . Согласно изменениям в федеральном законодательстве о защите потребителей никуда они не денутся: Apple будет называться Яблоком, a Windows - Окнами ... Непонятное слово Интерфейс - Междуличием, Интерес - Междуб ы тием, программный код - Алгоритмописью... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2017, 15:47 |
|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
WindoгурД, Спасибо, буду разбираться, жаль не по русски. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2017, 15:56 |
|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
chm --это архив --рапаковать с сохранением каталогов --немного преобразовать файл оглавления --через броузер смотришь --он умный, предлагает перевести на русский достаточно удобно ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2017, 16:00 |
|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
гурДИнтерес - Междуб ы тием??? Была такая книжка, Колпакчи "Ложные друзья переводчика"))) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2017, 16:38 |
|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
Код: plaintext
Ooo... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2017, 17:14 |
|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
Почему Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
- не работает, в то же время если вызвать функцию summ(A) из модуля, то все в порядке? Ошибка method or data member not found. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2017, 19:06 |
|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
Код: vbnet 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2017, 19:13 |
|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
WindoПочему Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
- не работает, в то же время если вызвать функцию summ(A) из модуля, то все в порядке? Ошибка method or data member not found. А вы вообще хэлп, хотя бы примеры кода, смотрите? Или полагаетесь на свою опытность... Или там всё ясно, но также сделать не выходит? Summ - это что? Член этого модуля? Заодно, когда разберётесь, следите ещё, чтобы одинаковых названий не было. А то вы так именуете, что субботний вечер занят... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2017, 21:00 |
|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
встроенн справка: Modules collection Module Property ModuleTypeавторThe Modules collection contains all open Module objects, regardless of their type. Modules in the Modules collection can be compiled or uncompiled. To return a reference to a particular standard or class Module object in the Modules collection, use any of the following syntax forms. ' Syntax Description Modules!modulename The modulename argument is the name of the Module object. Modules("modulename") The modulename argument is the name of the Module object. Modules(index) The index argument is the numeric position of the object within the collection. ' The following example returns a reference to a standard Module object and assigns it to an object variable: Код: vbnet 1. 2.
Note that the brackets enclosing the name of the Module object are necessary only if the name of the Module includes spaces. The next example returns a reference to a form Module object and assigns it to an object variable: Код: vbnet 1. 2.
To refer to a specific form or report module, you can also use the Form or Report object's Module property: Код: vbnet 1.
The following example also returns a reference to the Module object associated with an Employees form and assigns it to an object variable: Код: vbnet 1. 2.
Once you've returned a reference to a Module object, you can set or read its properties and apply its methods. авторModule Property See AlsoApplies ToExampleSpecificsYou can use the Module property to specify a form module or report module. Read-only Module object. Код: vbnet 1.
expression Required. An expression that returns one of the objects in the Applies To list. The Module property is available only by using Visual Basic and is read-only in all views. The Module property also returns a reference to a specified Module object. Use the Module property to access the properties and methods of a Module object associated with a Form or Report object. The setting of the HasModule property of a form or report determines whether it has an associated module. If the HasModule property is False, the form or report does not have an associated module. When you refer to the Module property of that form or report while in design view, Microsoft Access creates the associated module and sets the HasModule property to True. If you refer to the Module property of a form or report at run-time and the object has its HasModule property set to False, an error will occur. You could use this property with any of the properties and methods of the module object. Example The following example uses the Module property to insert the Beep method in a form's Open event. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
See AlsoApplies ToExampleSpecificsShowType property as it applies to the AccessObject object. Returns the value of an AccessObject object type. Read-only AcObjectType. AcObjectType can be one of these AcObjectType constants. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Код: vbnet 1.
expression Required. An expression that returns an AccessObject object. ShowType property as it applies to the FormatCondition object. Returns the value of a FormatCondition object type. Read-only AcFormatConditionType. ' AcFormatConditionType can be one of these AcFormatConditionType constants. Код: vbnet 1. 2. 3.
Код: vbnet 1.
' expression Required. An expression that returns a FormatCondition object. ShowType property as it applies to the Module object. ' Indicates whether a module is a standard module or a class module. Read-only AcModuleType. ' AcModuleType can be one of these AcModuleType constants. Код: vbnet 1. 2.
Код: vbnet 1.
expression Required. An expression that returns a Module object. ' Example ' ShowAs it applies to the Module object. ' The following example determines whether a Module object represents a standard module or a class module: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2017, 21:22 |
|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
Создайте новый модуль (Insert- Module) и попробуйте так: Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2017, 21:26 |
|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Проблема в следующем: при выполнении двух запросов отдельно значения Посещения.ТипЗанятия подтягиваются из таблицы ТипЗанятия, аналогично для Абонементы.ТипЗанятий, но при использовании union в результирующей таблице отображаются только значения ключей. Как побороть? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2017, 16:37 |
|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
автор Проблема в следующем: при выполнении двух запросов отдельно -- значения Посещения.ТипЗанятия подтягиваются из таблицы ТипЗанятия, -- аналогично для Абонементы.ТипЗанятий, но при использовании union в результирующей таблице отображаются только значения ключей. [/quote] у вас там подстановка ? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2017, 16:53 |
|
Рекурсивное сложение
|
|||
---|---|---|---|
#18+
WindoЗдравствуйте. ..Пользователи в таблице "пользователь" могут приглашать других пользователей, это отображается в таблице "пользователь-приглашенный".. А если сделать "финт ушами" и при занесении приглашенного в тбл.приглашенные автоматически создавать для него запись в тбл.пользователи ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2017, 17:19 |
|
|
start [/forum/topic.php?fid=45&msg=39422021&tid=1612586]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
25ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 333ms |
total: | 455ms |
0 / 0 |