Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Небольшая проблема
 
 автор: ????   (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: Небольшая проблема Всем огромное спасибо за помощь. Все работает! Удачи всем! :)

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList