Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 простроений виражений на базе значений из запроса  [new]
Anapurna
Member

Откуда:
Сообщений: 728
ест продукт запроса "коефициенти"
P_ID S
1000 37503770
1001 17578317
1002 2674576
1003 8113663
1004 366925
1006 5837531
1007 2932758
1015 53324837
.
.
.
1500 -410647
1501 5447881
1502 -5858528

и мне необходимо вичисли коефициенти
например
К101=DLookUp("S,"коефициенти","P_ID=1500")/DLookUp("S,"коефициенти","P_ID=1150")
К102=(DLookUp("S,"коефициенти","P_ID=1015")-DLookUp("S,"коефициенти","P_ID=1007"))/DLookUp("S,"коефициенти","P_ID=1150")
и т.д без логики до К120
и таких набор еще 2 набор К201, . . .К212 и набор К31, . . .К310

так как для отделного поля виражении разние и я не могу их в лентояную форму запихнут
а для филтрации по какоето значение допустим все К??? >=30% то вобше проблема
как решит всй это
10 апр 07, 22:19    [4003659]     Ответить | Цитировать Сообщить модератору
 Re: простроений виражений на базе значений из запроса  [new]
BoNiM
Member

Откуда:
Сообщений: 674
автор
так как для отделного поля виражении разние и я не могу их в лентояную форму запихнут

Вот это место, пожалуйста, подробнее.
10 апр 07, 23:50    [4003784]     Ответить | Цитировать Сообщить модератору
 Re: простроений виражений на базе значений из запроса  [new]
Anapurna
Member

Откуда:
Сообщений: 728
Привет BoNiM
если вы хреснянин то с праздником
я прикрепил фаил
там всё подробно

К сообщению приложен файл (Koef.rar - 94Kb) cкачать
11 апр 07, 09:41    [4004326]     Ответить | Цитировать Сообщить модератору
 Re: простроений виражений на базе значений из запроса  [new]
BoNiM
Member

Откуда:
Сообщений: 674
В выложеной базе отсутствует таблица Data.
11 апр 07, 18:14    [4008456]     Ответить | Цитировать Сообщить модератору
 Re: простроений виражений на базе значений из запроса  [new]
Anapurna
Member

Откуда:
Сообщений: 728
она у меня Hidden
12 апр 07, 09:32    [4009923]     Ответить | Цитировать Сообщить модератору
 Re: простроений виражений на базе значений из запроса  [new]
BoNiM
Member

Откуда:
Сообщений: 674
Предлгаю такое решение.
Создаем таблицу коэффициентов TKoef c полями:
num_koef - Long, уникальное (номер коэффициента);
num_frml - Long (код формулы);
pos_id - String (перечень, используемых для расчета коэф., Position_ID разделенных ";");
val - Double (значение коэффициента).
Пример
num_koefnum_frmlpos_id
10111500;1150
10311000;1200
1050
11521127;1074;1250
11621127;1074;1150

Создаем таблицу формул Formul (формулы у Вас однотипные) c полями:
num_frml - Long, первичный ключ (код формулы);
frml - String (текст формулы, в которой используются переменные v(1), v(2), ..., где индекс - порядковый номер элемента в перечне pos_id)
Пример
num_frmlfrml
1v(1)/v(2)
2(v(1)+v(2))/v(3)

Таблицы Formul и TKoef связаны один ко многим по полям num_frml.
Заполнение поля TKoef.val можно выполнить с помощью следующего кода
Dim MDB As Database, ZKoef As Recordset, TKoef As Recordset
Dim pa As Variant, p As Variant, i As Long, f As String
Set MDB = CurrentDb
' Источник данных - Ваш запрос "Koef"
  Set ZKoef = MDB.OpenRecordset("SELECT GG.Position_ID, " & _
      "Sum(([RA]*([-101] Mod 2)+[RP]*(([-101]\10)-([-101] Mod 2)))) AS naerTi_1 " & _
      "FROM Data INNER JOIN GG ON (Data.Bank_ID = GG.Bank_ID) AND (Data.KANG_ID = GG.KANG_ID) " & _
      "WHERE (((Data.Bank_ID)=100) AND ((GG.Bank_ID)=100) AND ((Data.ODate)=#" & _
      Format$([Forms]![Koeficienti]![Start_Date], "mm\/dd\/yyyy") & "#)) " & _
      "GROUP BY GG.Position_ID ORDER BY GG.Position_ID")
  Set TKoef = MDB.OpenRecordset("SELECT Formul.frml, TKoef.pos_id, TKoef.val " & _
      "FROM Formul INNER JOIN TKoef ON Formul.num_frml = TKoef.num_frml")
  Do Until TKoef.EOF
    If Not IsNull(TKoef!pos_id) Then
      pa = Split(TKoef!pos_id, ";"): i = 0: f = TKoef!frml
      For Each p In pa
        ZKoef.FindFirst "Position_ID=" & p
        i = i + 1
        f = Replace(f, "v(" & i & ")", "(" & CStr(ZKoef!naerTi_1) & ")")
      Next
      TKoef.Edit
      TKoef!Val = Eval(f)
      TKoef.Update
    End If
    TKoef.MoveNext
  Loop
  ZKoef.Close: TKoef.Close
  Set ZKoef = Nothing: Set TKoef = Nothing: Set MDB = Nothing
Конечно здесь еще нужно предусмотреть обработку ошибок, например, деление на 0 и т.д.
Теперь на основании таблицы TKoef можно делать форму с тремя (для каждой группы коэффициентов) ленточными подчиненными, а также формировать нужные отчеты. Если в таблицу TKoef добавить логическое поле, то тогда можно делать и отметки необходимых коэффициентов (правда, зачем это надо, я не понял)
Кое-что из сказанного см. в прикрепленном файле

К сообщению приложен файл (Koef_1.rar - 95Kb) cкачать
12 апр 07, 15:14    [4012783]     Ответить | Цитировать Сообщить модератору
 Re: простроений виражений на базе значений из запроса  [new]
Anapurna
Member

Откуда:
Сообщений: 728
Привет BoNiM
как вы находите такие изумительние решения
я в восторге
можно лы так что истовником значений для формул кроме запроса Koef быть еще несколько заросов ?
13 апр 07, 00:00    [4015077]     Ответить | Цитировать Сообщить модератору
 Re: простроений виражений на базе значений из запроса  [new]
BoNiM
Member

Откуда:
Сообщений: 674
Anapurna
можно лы так что истовником значений для формул кроме запроса Koef быть еще несколько заросов ?

У Вас разные запросы для разных групп коэффициентов? А может разняться и для naerTi, Lari, Valuta? А может различия есть и по другим признакам?
Неплохо бы увидеть эти запросы с Вашими комментариями.
13 апр 07, 10:36    [4016023]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить