powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
26 сообщений из 26, показаны все 2 страниц
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32184208
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть форма с табличной субформой. В примечаниях субформы свободное поле
- txtSum (Данные = Sum([Сумма])). В главной - свободное поле txtSum2 (Данные = Forms!fmGlav!fmSubForm.Form.txtSum).
Открывается - все красиво. Щелкаю "Отбор" (btnOtbor) - срабатывает процедура в модуле главной формы. Меняется RecordSource субформы (хранимая процедура) и, как водится, Requery субформы.
Теперь, самое "смешное" в поле txtSum2 - #Ошибка. Но, если выполнять процедуру обработки события "btnOtbor_Click" по шагам - все прекрасно - в поле итоговое значение.

Что бы это значило??? :(((
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32184219
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Но, если выполнять процедуру обработки события "btnOtbor_Click" по шагам - все прекрасно

Значит, просится DoEvents.
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32184224
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какая версия Access?
У меня та же проблема, но появилась при переходе с 2000-го на 2002-й
Сейчас ищу способы решения.

2 Владимир Саныч
DoEvents - не помогает однако :)
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32184235
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Витал
Меняется RecordSource субформы (хранимая процедура) и, как водится, Requery субформы.
Кажись Requery - лишнее, т.к. изменение RecordSource уже само по себе обновление.
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32184241
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А2002!
Кстати, пробовал и Requery полей, как всех, так и в любых комбинациях. Единственно, не пробовал Recalc формы. Когда-то в А2000 вроде этим и спасался.
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32184247
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажись Requery - лишнее
Это для adp? Поскольку, если не ошибаюсь, в mdb это обязательно.
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32184591
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В ADP придется заметнить этот способ на кажущиеся на первый взгляд более трудоемкий, но впоследствии более удобный.

можно для вычисления результата использовать
1. листбокс
2. подчиненную форму

в источник данных этого контрола собираешь SQL строку типа

select sum(MYVAR) as mysum from MYTABLE where Условия отбора запроса источника данных формы and строка на основе фильтра


посмотри у меня есть примерчик в котором отображается несколько сумм по категориям . http://kozin1.narod.ru/sql/forms/index.htm#p4

правда в этом примере задача отображения результатов при изменении фильтра не предусмотрена.
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32184640
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо АлексейК!
Эти способы (субформы с итоговым селектом, комбо/листбоксы и рекордсеты) я уже использовал в разных местах. А здесь, подумал: "Нельзя ли проще!". Вдруг чешу левое ухо правой задней ногой?
Да и просто интересно - почему по шагам работает, а иначе нет?
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32184657
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 АлексейК
Можно даже без подформы, сделать поле с функцией, которая вернет результат запроса типа
"select sum([field]) as f1 from (" & Subform.Recordsource & ") a"
и сделать это можно через Command.Execute

Дело в другом:
Использование дополнительных запросов, для расчетных полей, не очень хороший метод, особенно для больших систем (много пользователей * много данных), т.к. идет лишняя нагрузка на сеть и на сервер.

Ведь если запрос уже выполнен и записи на клиенте, то подсчитать сумму по какому-то полю - это работа клиентской части.

Тут явная ошибка Access...вопрос в том как она решается без способов "чешу левое ухо правой задней ногой"
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32184674
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас буду ставить экспирименты

вопросы по твоему случаю

1. есть ли в числе полей - хранимки которая является источником данных для подформы ключевое поле таблицы ?
были замечены глюки при пересинхронизации без ключевого поля.

2. ВНИМАНИЕ! подчиненная форма связана с главной через класический вариант с главными/подчиненными полями или при помощи параметров процедуры и полей главной формы ?

напиши мне а я попробую смоделировать у себя или пошли мне код и скрипт таблиц / процедур
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32184713
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раз уж есть желающий протестировать - грех такой возможностью не воспользоваться :)

Уж извините, что вмешиваюсь, просто именно в данный момент занят решением этой проблемы (точнее поиском приемлемого варианта).
У меня немного другая история, но очень близко к проблеме, которую описывал Витал, и решение думаю будет одинаковое.

Как я воспроизвел макисмально просто проблемную ситуацию.
Таблица из двух полей (ключ+денежное поле)
Форма1 - создается мастером в виде ленточной.
В примечании формы делаем поле =SUM([наше денежное поле])
Все работает прекрасно: сумма считается правильно, даже при сортировке по ключевому полю вверх, вниз.
Теперь делаем простую форму (форма2) без источника и в нее добавляем созданную подчиненную Форма1.
Теперь при открытии сумма считается, но стоит только применить сортировку, как в итоговом поле идет ошибка.

Пока что найдено только одно решение - дополнительный запрос на подсчет суммы (как это реализовано значения не имеет, кнопка, поле, подформа - это уже кому как нравится).
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32184787
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот глюк у меня решился двумя способами.
1) добавление фиктивного источника
2) применение Me.RecordSource = Me.RecordSource вместо Me.Requery

Кстати в отличии от MDB в ADP агрегирующие поля в примечании формы типа = Sum([Сумма]) (причем [Сумма] не имя контрола , а имя поля источника) считаются на сервере и не реагируют на пользовательские фильтры
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32184795
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
похоже у Вас проблемы с "однозначной таблицей" и "командой синхронизации"
у меня все работает прекрасно.
аналогичные проблемы были пока вышесказанное не сделал правильно.
щас работакт так же как и в mdb.
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32185049
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Latuk
Можно подробнее о "фиктивном источнике"

Кстати в отличии от MDB в ADP агрегирующие поля в примечании формы типа = Sum([Сумма]) (причем [Сумма] не имя контрола , а имя поля источника) считаются на сервере и не реагируют на пользовательские фильтры

Откуда такая информация? Profiler ничего подобного не показывает.

2 вадя
У Витала возможно проблема именно со строкой синхронизации и уникальной таблицей (хотя я не уверен).
Что касается моего случая, то выяснил следующее: при использовании именованных запросов (таблица, вью, ХП) ошибка не возникает, если же использовать запрос в виде строки, то идет ошибка. И не имеет значения, установлена уникальная таблица и строка синхронизации или нет.
Самое обидное, что ничего подобного не было в 2000-м.
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32185053
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблемы с "однозначной таблицей" тут непричем. Если форма основана на ХП то заполнить его просто не удастся. Проблемма как раз в том , что если форма не имеет источника (источник заполняется програмно после загрузки формы) , то агрегирующие поля в примечании могут глючить.А также перестает работать Me.Requery после применения сортировки. Если считать сумму отдельным запросом , то нагрузка на сервер не увеличивается так как агрегирующие поля в примечании в ADP тоже считаются на сервере , только отдельно для каждого поля и если посчитать своим запросом то нагрузка даже уменьшится. Единственный минус в подсчете своим запросом - время потраченное на его написание :)
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32185081
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Latuk
проблемы с "однозначной таблицей" тут непричем. Если форма основана на ХП то заполнить его просто не удастся.
ну это совершенно не правильно - ЧИТАЙТЕ ГЕТЦА

програмно заполняй "однозначную таблицу" и "команду синхронизации"
ПРАВИЛЬНО и будет работать.
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32185099
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Можно подробнее о "фиктивном источнике"
ХП которая ничего не вохвращает , но содержит все необходимые форме поля типа
Select NULL AS Поле1, NULL AS Поле2 ...
>Откуда такая информация? Profiler ничего подобного не показывает.
Информация из опыта эксплуатации слабых клиентских машин (Р1 133 32Mb)
Если действия выполнялись на стороне клиента (сортировка фильтр и т.п.) , то были очень медленными, если на сервере то мгновенно (по контрасту)
Если на MDB привязанному к томуже источнику сумма считалась 5-7 секунд , то в ADP 0,5-1 сек. Причем если получать сумму в ADP клиентом оперируя с клиентским recordset-ом то получалось теже 5-7 сек.

>Самое обидное, что ничего подобного не было в 2000-м.
Там было много чего другого. Но ничего не мешает ваять в формате 2000 и использовать 2000 у юзеров (с некоторыми гемороями типа несовместимости с MSSQL2000 и указыванием dbo. перед источниками).
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32185121
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 вадя
програмно заполняй "однозначную таблицу" и "команду синхронизации"
ПРАВИЛЬНО и будет работать


Будет работать но не всегда.
И команда синхронизации и уникальная таблица, не влияют на агрегирующие поля (это не факт а опытное замечение: при условии что в источнике запрос на основе одной таблицы зависимости обнаружить не удалось).
Цитата из Гетца: "Access не всегда может определить без вашей помощи как ей обновлять данные в тех случаях когда форма базируется не на одной таблице, а на объединении записей из нескольких таблиц...Устанавливать эти свойства нужно не всегда, а в зависимости от источника формы."

2 Latuk
Спасибо за пояснение о фиктивном источнике, сам что-то подобное использовал.
Если информация из опыта, то это не факт, при всем уважении. Тут необходимы доказательства :))
На 2000-м остаться не могу, т.к. имеется Office XP Developer и для клиентов будет устанавливаться Access XP Runtime.
Хотя если в общем, то в XP мне нравится больше.
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32185131
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>програмно заполняй "однозначную таблицу" и "команду синхронизации"

Програмно заполнить действительно получилось. Правда не понятно зачем это если набор статический. Глюк остался- после сортировки Me.Requery не работает.
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32185141
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Хотя если в общем, то в XP мне нравится больше.
Писать на ХР безусловно удобней , но отказатся от формата 2000 не всегда получается.Например у нас в центральном офисе более 100 машин , убедить сисадмина переустановить офис на всех было очень сложно , и даже когда убедил (через директора) прошло 4 месяца прежде чем исчехз последний юзер с MSO2000.
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32185172
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например у нас в центральном офисе более 100 машин , убедить сисадмина переустановить офис на всех было очень сложно , и даже когда убедил (через директора) прошло 4 месяца прежде чем исчехз последний юзер с MSO2000.

Вот поэтому и прошлось приобретать Office Developer.
Runtime вещь классная, причем прекрасно дружит MSO2000
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32185186
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2incold

Сколько будет весить установщик RunTime версии для Акеса2002 (mdb), если в проекте используются библиотеки DAO,ADO, mscomctl.ocx, микрософт object liblary - mco.dll, excel object liblary - excel.olb, ole atomation. хотя бы приблизительно.
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32185219
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сколько будет весить установщик RunTime версии для Акеса2002 (mdb), если в проекте используются библиотеки DAO,ADO, mscomctl.ocx, микрософт object liblary - mco.dll, excel object liblary - excel.olb, ole atomation. хотя бы приблизительно

Приблизительно:
Чистый Access Runtime 35 Mb
OSP - обновление системных файлов (Windows Installer, IE5 и прочая ерунда) 87 Mb

Если нужно создавать свой пакет с включением дополнительных библиотек, то используется Pakage Wizard и конечный пакет инсталляции может получится немного больше.
У меня получилось:
MSDE+Access Runtime+все рабочие файлы = 250-300 MB
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32185228
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Чистый Access Runtime 35 Mb

тогда в моем случае будет ~50 МБ - многовато для интернета.
Для CD - нормально. Может мне коробочную версию программ начать делать? :)
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32185251
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Senin Viktor
Зависит от (...впишите свой перечень...)
Но могу сказать что коробка она завсегда коробка - даже юзер, знакомый с процессом установки новых игрушек. Сможет установить программу упакованную в коробочную версию.
...
Рейтинг: 0 / 0
Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
    #32186099
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слушал я всех внимательно и с азаротом и понял...
- скорее всего ГЛЮК А2002!
- варианты решения сводятся к рекордсетно-листбоксово-субформенным!?

Немного дополнительно проясню. Хранимая процедура возвращает набор записей после ряда промежуточных обработок. И то, что отображается в субформе - суммарные итоги по группам. Создавать аналогичную процедуру для вывода общих итогов, как говорится, "влом" ("в ломак"). :))
В моей ситуации все упрощается тем, что юзеру не нужен доступ к самим общим итогам для корректировки и дальнейшей обработки. Поэтому в данном конкретном случае я просто значения итоговых полей субформы стал присваивать свойствам Caption двух лейблов на главной. Все работает. Отображается то, что надо. А понадобится для вычислений - можно будет "достать" и из лейблов. Хотя и жаль, что полями облом. :(((

>incold (17.06 13:26)
Попробовал без Requery - работает как часы. Похоже пора отказываться от "вредных привычек".
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Глюк или не Глюк? Вот в чем вопрос... ADP. Сумма в свободном поле = #Ошибка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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