|
автор: ???? (30.11.-1 в 00:00) |
|
| При работе с данными типа "=[port1]-[port2]" в форме все в порядке, выдает результат, но в таблицу из которой форма берет данные не пишет результат. Подскажите как правильно работать с такими вариантами. В Excelе формулы писал - все в порядке, а как писать на Акссессе не знаю. | |
|
| |
|
автор: osmor (30.11.-1 в 00:00) |
|
| Если Вы хотите сохранить результат нужно на события "после обновления" обеих полей (port1 и port2) написать
me!полеРезультата = nz(me!port2,0) - nz(me!port2,0)
где "полеРезультата" имя поля в источнике данных формы в котором Вы хотите сохранить результат.
..но вообще... в принципе... не рекомедуется сохранять в таблицах данные которые можно легко посчитать, т.е. показать пользователю в форме - это да... а сохранять в таблице зачем? | |
|
| |
|
автор: ???? (30.11.-1 в 00:00) |
|
| Re: Если Вы хотите сохранить результат нужно на события "после обновления" Дело в том, что в дальнейшем требуется выдать отчеть, основываясь на данных имеющихся в таблице, включая этот самый результат | |
|
| |
|
автор: osmor (30.11.-1 в 00:00) |
|
| Вот когда будете формировать отчет, тогда в запросе и посчитаете и покажете результат в отчете | |
|
| |
|
автор: ???? (30.11.-1 в 00:00) |
|
| Re: Если Вы хотите сохранить результат нужно на события "после обновления" Спасибо, помогло. Если можно, еще вопрос. Есть два поля, в каждом по одной букве скажем Г и В, так же есть три поля с суммами в рублях. Первая и вторая вводится вручную, в третьем поле автоматически просчитывается разность этих сумм. Появилась задача - создать четвертое поле в котором автоматически по формуле Первое поле - Второе поле + третье поле отобразиться сумма, но требуется, чтобы если в самых первых полях буква имеется только в одном из них, то получившуюся сумму надо разделить на два, а если в обоих полях буквы, то так сумму и оставить. | |
|
| |
|
автор: osmor (30.11.-1 в 00:00) |
|
| в свойстве данные поля4 пишите =[ТретьеПоле]*iif((nz(поле1;"")="") and (nz(поле2;"")="");1;2) | |
|
| |
|
автор: ???? (30.11.-1 в 00:00) |
|
| Re: в свойстве данные поля4 пишите Неправильно считает. Видимо я не верно описал проблему.
Значит так.
Поля x1, x2, x3, x4, x5, x6, x7, x8
x1 и x2 - списки с буквами от а до я
x3 - сумма (вводится вручную)
x4 - сумма (вводится вручную)
x5 - автоматическая сумма по формуле "x3-x4"
x6 - сумма (вводится вручную)
x7 - сумма (вводится вручную)
x8 - автоматическая сумма по формуле "если x1 и x2 заполнены, то x8=x5+(x6-x7), после чего x8=x8/2" или "если заполнена только x1 или x2, то x8=x5+(x6-x7)" | |
|
| |
|
автор: osmor (30.11.-1 в 00:00) |
|
| в свойстве "Данные" поля х8 пишите =(nz([x5];0)+(nz([x6];0) - nz(x7;0)))/iif((nz(x1;"")<>"") and (nz(x2;"")<>"");2;1) | |
|
| |
|
автор: ???? (30.11.-1 в 00:00) |
|
| Re: в свойстве "Данные" поля х8 пишите Работает, спасибо огромное. А каким образом сделать, чтобы этот результат писался в таблицу? | |
|
| |
|
автор: Explorer (30.11.-1 в 00:00) |
|
| Re[1]: чтобы этот результат писался в таблицу? зачем? | |
|
| |
|
автор: ???? (30.11.-1 в 00:00) |
|
| Re[1]: чтобы этот результат писался в таблицу? Дело в том, что задача, чтобы все данные учитывались ОБЯЗАТЕЛЬНО в таблице. Просто именно так поставлена задача. | |
|
| |
|
автор: Explorer (30.11.-1 в 00:00) |
|
| а если поменяются слагаемые - как вы предополагаете менять сумму? | |
|
| |
|
автор: ???? (30.11.-1 в 00:00) |
|
| Re: а если поменяются слагаемые - как вы предополагаете менять сумму? Слагаемые точно не изменятся, так как данные забиваются стопроцентно один раз и больше не меняются ни при каких условиях. Подскажите пожалуйста, как получившийся результат занести в таблицу. Очень надо, я в Accesse на уровне форму создать :). А требуется именно на нем и именно так. | |
|
| |
|
автор: Explorer (30.11.-1 в 00:00) |
|
| Form AfterUpdate SummaryValueFieldName = FirstValueFieldName + SecondValueFieldName | |
|
| |
|
автор: Explorer (30.11.-1 в 00:00) |
|
| Form BeforeUpdate | |
|
| |
|
автор: osmor (30.11.-1 в 00:00) |
|
| в свойстве "данные" полей х5 и х8 указываете соответствующие поля таблицы т.е. убираете те формулы которые там написаны
В модуле формы пишите функцию
function MyCalc()
me!x5= nz(me!x3,0) - nz(me!x4,0)
me!x8 = (me!x5+(nz(me!x6,0) - nz(me!x7,0)))/iif((nz(me!x1,"")<>"") and (nz(me!x2,"")<>""),2,1)
end function
на событие "после обновления" ВСЕХ полей которые учавствуют в расчетах и вводятся руками пишите вызов этой функции. | |
|
| |
|
автор: ???? (30.11.-1 в 00:00) |
|
| Re: в свойстве "данные" полей х5 и х8 указываете соответствующие поля таблицы Вы уж извините... Все сделал, вто только как именно "на событие "после обновления" ВСЕХ полей которые учавствуют в расчетах и вводятся руками пишите вызов этой функции" | |
|
| |
|
автор: osmor (30.11.-1 в 00:00) |
|
| Для каждого поля: - открываете свойства
- переходите на закладку "события"
- выбиратете событие "после обновления"
- пишите
=ИмяФункции()
Переходите с следующему полю | |
|
| |
|
автор: Explorer (30.11.-1 в 00:00) |
|
| на работу успели сегодня? | |
|
| |
|
автор: ???? (30.11.-1 в 00:00) |
|
| Re: на работу успели сегодня? :) почти, подскажите, как создать отчет, с предварительным выбором по дате от какого числа до какого и определенной частью столбцов из таблицы. | |
|
| |
|
автор: osmor (30.11.-1 в 00:00) |
|
| даже успел заскочить домой, посмотреть MASH, позавтракать и выпить чаю | |
|
| |
|
автор: ???? (30.11.-1 в 00:00) |
|
| Re: даже успел заскочить домой, посмотреть MASH, позавтракать и выпить чаю :) Ну не издевайтесь, да - не знаю я Access. Ну что я могу сделать. Вот учусь по возможности. | |
|
| |
|
автор: Explorer (30.11.-1 в 00:00) |
|
| да никто и не издевается - я просто форум перепутал | |
|
| |
|
автор: osmor (30.11.-1 в 00:00) |
|
| Не обижайтесь. Этот вопрос о работе был мне. | |
|
| |
|
автор: Explorer (30.11.-1 в 00:00) |
|
| Cool :) | |
|
| |
|
автор: ???? (30.11.-1 в 00:00) |
|
| Re: Для каждого поля: Спасибо большое. Подскажите, как создать отчет, с предварительным выбором по дате от какого числа до какого и определенной частью столбцов из таблицы. | |
|
| |
|
автор: osmor (30.11.-1 в 00:00) |
|
| создайте запрос с условием отбора и включите в него только нужные столбцы. | |
|
| |
|
автор: ???? (30.11.-1 в 00:00) |
|
| Re: создайте запрос с условием отбора и включите в него только нужные столбцы. можно на пальцах? :) И именно чтобы отбор по дате был. Просто запрос с определенными столбцами я понимаю как создать, а вто чтоб с отбором по дате... с этим у меня жестко... | |
|
| |
|
автор: ???? (30.11.-1 в 00:00) |
|
| Re[1]: создайте запрос с условием отбора и включите в него только нужные столбцы. Только чтоб порядок: указываю период времени -> появляется отчет для печати (поянтно, что через запрс, только не знаю как) | |
|
| |
|
автор: osmor (30.11.-1 в 00:00) |
|
| в конструкторе запроса, в каждом столюце есть строка "условие" туда, для поля в котором у вас дата, пишите
>=[Дата С] and <=[дата По]
Когда построите отчет на этом запросе он при октрыти будет спрашивать даты. | |
|
| |
|
автор: Explorer (30.11.-1 в 00:00) |
|
| ну-у-у. на пальцах не получится стандартный метод (типовое решение) предполагает, что при вызове на просмотр или печать отчета, пользователю будет предложено ввести нужные параметры - указать диапазон дат и выбрать нужные поля.
самое простое, если такая форма бдет содержать МалтиСелект ListBox (или два таких лист бокса, если последовательность отбора полей имеет значение) и два поля ввода, задающих начальную и конечную даты (ввод данных в поля диапазона дат лучше организовать при помощи ActivX элемента Calendar Control)
на основе введенных и отобранных пользователем значений нужно сформировать стринг SQL запроса вида:
SELET RecordDate <набор отобранных пользователем полей в ListBoxe формы отбора> FROM <Имя таблицы содержащей записи> WHERE RecordDate Between <начальная дата указанная пользователем в поле поле формы отбора> AND <конечная дата указанная пользователем в поле формы отбора>
этот запрос можно передать в отчет при открытии отчета
или присвоить форме отбора записей, тогда на открытии отчета нужно будет забрать этот стринг запроса из формы и определить как источник записей для отчета.
на пальцах - все | |
|
| |
|
автор: Major (30.11.-1 в 00:00) |
|
| Re: Небольшая проблема в разности идеологий Excel и Access | |
|
| |
|
автор: Explorer (30.11.-1 в 00:00) |
|
| тогда уж пожалуй Электронных Таблиц и Реляционных Баз Данных хотя в действительности в электронных таблицах - в Эксель например, ячейка, в которой вычисляется сумма двух других ячеек тоже не содержит вычисленного значения - она содержит формулу и отображает результат вычисления по формуле.
т.е по сути дела это тоже представление, как например, запрос в Аксесс
никто же (кроме клинических или особо специальных случаев) не озадачивается заменой формулы в ячейке электронной таблицы на вычисленное по этой формуле значение...
однако, как ни странно, вопрос как сохранить такое вычисленное по формуле значение в поле таблицы БД встречается очень часто.
полагаю проблема не в "разности идеологий" | |
|
| |
|
автор: Major (30.11.-1 в 00:00) |
|
| Re[2]: Небольшая проблема в разности идеологий Excel и Access Я имел ввиду немного другое. До сих пор сталкиваюсь с людьми которые работают только с Excel, и в течении нескольких лет ведут учёт и тому подобное.
Как мне кажется в некоторых случаях это является одной из проблем при попытках начать работу в Access. По этому пользуясь случаем хочу передать огромное спасибо уважаемому OSMOR за недавно предосавленные рекомендации для тех кто серьезно решил заняться реляционными БД | |
|
| |
|
автор: ???? (30.11.-1 в 00:00) |
|
| Re: Небольшая проблема Всем огромное спасибо за помощь. Все работает! Удачи всем! :) | |
|
| |