powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Подскажите как можно в ЛЕНТОЧНОЙ ФОРМЕ........
18 сообщений из 18, страница 1 из 1
Подскажите как можно в ЛЕНТОЧНОЙ ФОРМЕ........
    #32332294
Slava A. Odievich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
....... присвоить некоторому ПОЛЮ результат который считается для каждой выбранной ЗАПИСИ.

То есть я имею все необходимые варианты значения этого ПОЛЯ. Но по результатм присвоениея, значение ПОЛЯ оказывается одинаковым для всех записей и равным результату последней записи.

Если в таком подходе это принципиально невозможно, то может у кого есть идеи, как добиться результата другими средствами.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Sub Form_Current()
    
    Dim frm As Form, rst As DAO.Recordset
        
    Set frm = Me.Form
    Set rst = frm.RecordsetClone
    
    With rst
             .MoveFirst
              
              Do Until .EOF = True
                 
                 Me!Received = Total_Transactions(rst![Object],  "Received" )
                 Me!Payed = Total_Transactions(rst![Object],  "Payed" )
                .MoveNext
                
              Loop
    End With
    
End Sub
...
Рейтинг: 0 / 0
Подскажите как можно в ЛЕНТОЧНОЙ ФОРМЕ........
    #32332297
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
У этого поля обязательно должен быть заполнен ControlSource. Это может быть либо формула со знаком равенства в начале

Код: plaintext
=Total_Transactions([Object],  "Received" )

либо название поля из RecordSource'а формы

Код: plaintext
Received_Calc

В втором случае в RecordSource'е формы должно быть поле, вычисляемое по аналогичной формуле:

Код: plaintext
Total_Transactions([Object],  "Received" ) AS Received_Calc
...
Рейтинг: 0 / 0
Подскажите как можно в ЛЕНТОЧНОЙ ФОРМЕ........
    #32332304
Slava A. Odievich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увы, не получается.

Через ControlSource кузультат такой же как через прямое присвоение. То есть значение для всех ЗАПИСЕЙ одинаково и равно последневы вычисленному значению.

А в случае RecordSource у меня recordset появляется в результате ЗАПРОСА, а вычисляемые поля в в состав RECORDSET не входят. Они принадлежат только ФОРМЕ.

Я не могу их вставит в ЗАПРОС, так как алгоритм вычислений довольно громоздкий, а как вставить FUNCTION, которая его реализует в сам ЗАПРОС я ума не приложу. Да и скорее всего это и невозможно.

Скорее всего прийдется создавать временную ТАБЛИЦУ, в которую выбрать необходимые ЗАПИСИ, добавить вычисления, и только затем ее передать в ФОРМУ. Но это неэстетично и громоздко.
...
Рейтинг: 0 / 0
Подскажите как можно в ЛЕНТОЧНОЙ ФОРМЕ........
    #32332308
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
автор писал:Увы, не получается.
Этого не может быть, потому что не может быть никак (или никогда - точную цитату из Чехова не помню).

автор писал:Через ControlSource кузультат такой же как через прямое присвоение. То есть значение для всех ЗАПИСЕЙ одинаково и равно последневы вычисленному значению.
Уважаемый пан что-то делает не так, как я написал. Я в этом уверен на все сто.

автор писал:А в случае RecordSource у меня recordset появляется в результате ЗАПРОСА, а вычисляемые поля в в состав RECORDSET не входят. Они принадлежат только ФОРМЕ.
Не входят - значит надо их туда добавить.

автор писал:Я не могу их вставит в ЗАПРОС, так как алгоритм вычислений довольно громоздкий, а как вставить FUNCTION, которая его реализует в сам ЗАПРОС я ума не приложу. Да и скорее всего это и невозможно.
Не надо гадать, я ведь показал, как это делается. Более того, есть два способа: либо вставить их в сам запрос, либо сделать RecordSource'ом формы селект, сидящий на том запросе, но с добавлением этих полей.

автор писал:Скорее всего прийдется создавать временную ТАБЛИЦУ, в которую выбрать необходимые ЗАПИСИ, добавить вычисления, и только затем ее передать в ФОРМУ. Но это неэстетично и громоздко.
Не нужно ради такой ерунды создавать временную таблицу.
...
Рейтинг: 0 / 0
Подскажите как можно в ЛЕНТОЧНОЙ ФОРМЕ........
    #32332311
Slava A. Odievich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант ControlSource

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Private Sub Form_Current()
    
    Dim frm As Form, rst As DAO.Recordset
        
    Set frm = Me.Form
    Set rst = frm.RecordsetClone
    
    With rst
             .MoveFirst
              
              Do Until .EOF = True
                 
                 Received.ControlSource = _
                    "="  & Total_Transactions(rst![Object],  "Received" )
                 Payed.ControlSource = _
                    "="  & Total_Transactions(rst![Object],  "Payed" )
                .MoveNext
                
              Loop
    End With
    
End Sub


Цикл проходит по всем выбранным записям, делает вычисления, а в ФОРМЕ в полях, Received и Payed высвечивается последнее вычисленное .......
...
Рейтинг: 0 / 0
Подскажите как можно в ЛЕНТОЧНОЙ ФОРМЕ........
    #32332313
Slava A. Odievich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В случае с RecordSource.

Я могу вставить вычисляемые поля в ЗАПРОС. Но в самом ЗАПРОСЕ вычислить их крайне затруднительно.

Я их могу вычислить в Функции. Но присвоить значения не получается, так как RecordsetClone, а в этом случае запись только на чтение........

Разве что после каждого вычисления RecordsetClone закрыть, запомнив предварительно Bookmark, присвоить результат ПОЛЮ, и сделать следующую иттерацию вычислений.......
...
Рейтинг: 0 / 0
Подскажите как можно в ЛЕНТОЧНОЙ ФОРМЕ........
    #32332317
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Этот цикл вообще не нужен. Эта программа вообще лишняя!!!

автор писал:Я могу вставить вычисляемые поля в ЗАПРОС. Но в самом ЗАПРОСЕ вычислить их крайне затруднительно.
В очередной раз повторяю: я в первом ответе показал, как это делается.
...
Рейтинг: 0 / 0
Подскажите как можно в ЛЕНТОЧНОЙ ФОРМЕ........
    #32332350
Slava A. Odievich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда может подскажете, как в ЗАПРОСЕ вызвать ФУНКЦИЮ. Если это вообще возможно.......
...
Рейтинг: 0 / 0
Подскажите как можно в ЛЕНТОЧНОЙ ФОРМЕ........
    #32332356
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
БЛИН!!! В МОЕМ ПЕРВОМ ОТВЕТЕ ЭТО ЕСТЬ!!!
...
Рейтинг: 0 / 0
Подскажите как можно в ЛЕНТОЧНОЙ ФОРМЕ........
    #32332499
Фотография SiriusB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АГА - а - а !!!

Вот он опять всплыл мой вопросик
опять вертикальный расчет по таблице с обновлением данных после расчета

есть у меня действующий вариантик - сам сделал, работает отлично, но не понятно даже для меня самого

все елементарно

запрос в котором одно из полей функция
при простом вызове запроса данные таблицы заносятся в n - мерный массив
а далее расчет выполняется на основе данных етого массива, после чего присваивается функции, потом обновление

и ВСЕ !!!

причем такая штука работает приблизительно с одинаковой скоростью, что локально что по сети, при попытке использования Recordset комп на запросе вообще повисает и ждать результата выполнения нужно десятилетиями

НИКТО МНЕ НЕ ВЕРИТ
ГОВОРЯТ мол массивы вообще лишняя штуковина в Access

если нужно вышлю действующий макет :?)

сами увидите, может поймете и мне расскажете как он работает :?)
...
Рейтинг: 0 / 0
Подскажите как можно в ЛЕНТОЧНОЙ ФОРМЕ........
    #32332657
Slava A. Odievich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
For Владимир Саныч:

Не надо злиться. Я не эксперт, и в этом нет ничего зазорного. Не получается у меня то, что Вы мне посоветовали. ЗАПРОС мою функцию не видит. И ругается.

For SiriusB:

Помогите с наглядным пособием по Вашему решению.

Можно на Еmail odievich@mail.ru
...
Рейтинг: 0 / 0
Подскажите как можно в ЛЕНТОЧНОЙ ФОРМЕ........
    #32332723
CtrlAlt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На всякий случай:
Функция должна быть описана в общих модулях (вкладка Modules), а не в форме. Иначе она не будет видна в запросах
...
Рейтинг: 0 / 0
Подскажите как можно в ЛЕНТОЧНОЙ ФОРМЕ........
    #32332735
CtrlAlt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле вызвать функцию из формы можно конечно, только вызов будет выглядеть не просто ИмяФункции(), а надо указывать и форму. И такой запрос не будет работать если форма закрыта.
...
Рейтинг: 0 / 0
Подскажите как можно в ЛЕНТОЧНОЙ ФОРМЕ........
    #32332764
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
единственный случай, когда функцию "затруднительно вставить в запрос", это когда функция реализует некий квазиагрегат (зависящий от порядка вывода данных в запросе, а еще хуже - в форме), и при этом набор данных должен быть обновляемым. В этом случае функцию надо вставлять не в запрос, а в поле формы. Но для того, чтобы значение зависело от номера записи, функция должна иметь (пусть и фиктивно) аргументы из числа полей формы (т.е. она должна вызываться Access-ом для каждой записи). Можно посмотреть например реализацию "свободного" чекбокса в форме. Где то в сетке было.


Сродственная (частично - по реализации _одной_ из методик, если я правильно припоминаю) задача раскраски записей в ленточной форме (см так же по форуму - где то обсуждалось) 97 акс-а.
...
Рейтинг: 0 / 0
Подскажите как можно в ЛЕНТОЧНОЙ ФОРМЕ........
    #32332887
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
автор писал:Не надо злиться. Я не эксперт, и в этом нет ничего зазорного.
Так объяснить надо, в чем проблема, а не один и тот же вопрос задавать 4 раза. Что мне остается, кроме как понять, что мой ответ не прочитан?
...
Рейтинг: 0 / 0
Подскажите как можно в ЛЕНТОЧНОЙ ФОРМЕ........
    #32332959
Slava A. Odievich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
For Assa: Великолепно объяснили!!! Заработало просто немедлено!!!

For Владимир Саныч: Sorry. Я старался объяснить как мог. Но в целом виноват сам. Я Перенес функцию в МОДУЛЬ. И сохранил ее как Privat. Поэтому ее не было видно :-((
...
Рейтинг: 0 / 0
Подскажите как можно в ЛЕНТОЧНОЙ ФОРМЕ........
    #32333112
Фотография SiriusB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аssa - ВЕЛИКИЙ СТРАТЕГ !!!

только что послал письмо автору данного топика,
где описал точно тоже самое

функция F(x,y)

x - первичн ключ или поле с уник значением
Y - категория расчета

спасибо Mr. Odievich за топик
а то мой незаслуженно похоронили :?)

я думаю - ета тема получит активное развитие
потому что расчет Exel-евского типа по горизонтали никуда не годиться из за плохой масштабируемости программ

вертик расчет с использованием массива - ето технология для Access
да и вообще для расчетов в БД

единственное, что ее сдерживает - плохая скорость исполнения уже на 5000 записей, но скорость процессоров растет, так же растет и скорость SQL-технологий


Я думаю нас ждет удача :?)
...
Рейтинг: 0 / 0
Подскажите как можно в ЛЕНТОЧНОЙ ФОРМЕ........
    #32333337
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2SiriusB

выполняй своё обещание....

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


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