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

JMK
Дата: 29.11.2006 16:41:03
день добрый всем
возник такой вопрос
есть база в Access 2000, в которую заносятся различные договоры. для каждого договора есть поле [Тип], у поля всего 2 значения - "Продажа" и "Аренда". еще есть поле [СуммаДоговара], которая для договоров "Продажа" вычисляется всегда по одной и той же формуле, а для договоров "Аренда" всегда по-разному.
можно ли сделать так, чтобы при выборе в поле [Тип] значения "Продажа" поле [СуммаДоговара] заполнялось бы по формуле автоматически, а при значении "Аренда" это же поле можно было бы заполнить вручную?
заранее спасибо
DiDis
Дата: 29.11.2006 16:50:08
на beforupdate поля [тип] можно поставить сл. код
if me.[полетип] = "Продажа" then me.[полеСумма] = 2+2
BULK INSERT
Дата: 29.11.2006 16:58:38
JMK
заранее спасибо



зря вы искусственно ограничиваете типы договоров - а если будет договор обмена или долевого выкупа или еще что - будете новую базу клепать?

лучше всего формулу расчета сумм по договору привязывать к конкретному типу договора

например

tblAgreements

AgreementID - код договора
AgreementTerms - условия договора
AgreementTypeID - тип договора

tblAgreementTypes

AgreementTypeID - код типа договора
AgreementType - тип договора
CalculateScheme - схема расчета сумм (алгоритм)
JMK
Дата: 29.11.2006 17:00:32
DiDis
на beforupdate поля [тип] можно поставить сл. код
if me.[полетип] = "Продажа" then me.[полеСумма] = 2+2
дело в том, что данные иногда импортируются из Excel, минуя форму ввода
можно ли как то реализовать это на уровне запроса?
mds_world
Дата: 29.11.2006 17:04:25
DiDis
на beforupdate поля [тип] можно поставить сл. код
if me.[полетип] = "Продажа" then me.[полеСумма] = 2+2
Этого недостаточно. По условию задачи - если Продажа, то ручной ввод исключен. Следовательно, мало вычислять это поле, надо еще в будущем предохранять его от ручной правки. Для этого надо в процедуре события Текущая запись (Current) проверять признак и если стоит Продажа, надо блокировать значение поля
If Me.Тип="Продажа" Then
   Me.[СуммаДоговара].Locked = True
End If
JMK
Дата: 29.11.2006 17:06:09
BULK INSERT
в том то и дело, что нет единого алгоритма расчета суммы для договора "Аренда"; сумма рссчитывается каждый раз по-разному, поэтому и нужно заносить ее вручную
JMK
Дата: 30.11.2006 13:53:09
может быть у кого-нибудь все-таки будут идеи, подскажите пожалуйста, знатоки
mds_world
Дата: 30.11.2006 14:10:14
А в импортируемых екселовских файлах тоже есть признак Продажа, Аренда?
Если да, то в предположении, что связь с ексел-файлом уже установлена, запрос может иметь вид:
Update tabl Inner Join ExcelTabl On tabl.Id = ExcelTabl.ID
Set tabl.[СуммаДоговара]= ВашаФункцияПреобразования()
Where ExcelTabl.[Тип]="Продажа"
Здесь ВашаФункцияПреобразования() это функция с атрибутом Public, которую вы должны определить в стандартном модуле. Эта функция выполняет нужное преобразование при Тип="Продажа". Когда Тип="Аренда", ничего не происходит.
rok
Дата: 30.11.2006 14:46:09
Я бы в обоих случаях рекомендовал автоматический подсчет,который исключает ошибки с созданием таблицы (может быть список) в которой(м) указывается порядок расчета или предоставляется выбор (или ввод) коэффициентов в необходимых пределах,а открытие формы или списка для выбора "послеОбновления" поля Тип.
JMK
Дата: 01.12.2006 12:33:36
спасибо всем кто откликнулся