Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2009, 19:28   #1
Basil8
 
Регистрация: 13.12.2009
Сообщений: 4
Вопрос Вопрос по VBA

Значит задача такая: в некоторой базе данных в поле SEM заносится "Х" (холост), "Б" (в браке), "Р" (разведен).
В поле FAM заносится фамилия
В поле POL заносится значение "муж" или "жен".
Составить выражение таким образом, чтобы в поле ITOG выводилась фамилия и семейное положение.
Например:
Цитата:
Иванов холост
Смирнова не замужем
Петров женат
Васильева замужем
Сергеев разведен
Антонова разведена
Использовать функцию Iif(), событие "после обновления".
Все это делается в MS Access
Вот что у меня получилось:
Код:
Private Sub ITOG_Afterupdаtе()
IIf([Таблица1]![POL] = "муж", IIf([Таблица1]![SEM] = "Х", [Таблица1]![ITOG] = "& [Таблица1]![FAM] & холост", IIf([Таблица1]![SEM] = "Б", [Таблица1]![ITOG] = "& [Таблица1]![FAM] & женат ", [Таблица1]![ITOG] = "& [Таблица1]![FAM] & разведен")), IIf([Таблица1]![SEM] = "Х", [Таблица1]![ITOG] = "& [Таблица1]![FAM] & не замужем", IIf([Таблица1]![SEM] = "Б", [Таблица1]![ITOG] = "& [Таблица1]![FAM] & замужем ", [Таблица1]![ITOG] = "& [Таблица1]![FAM] & разведена))) 
End Sub
При вводе в VBA выдает ошибку и не запускает:
Цитата:
Compile error:
Expected: list separator or )
Ума не приложу зачем там еще одна запятая или скобка.
Basil8 вне форума Ответить с цитированием
Старый 13.12.2009, 20:30   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Basil8.
1. Выражение "в некоторой базе данных в поле SEM заносится..." не верно - у БД нет полей.
2. если речь о форме, логика построения IIf(...) верна, Вы ошиблись с её применением, оно может быть таким
Код:
Sub POL_Afterupdаtе()
   ITOG = IIf(...
End Sub
Евгений.
P.S. Форум не машина ответов, его участники живые люди, здесь принято задавать вопросы, спрашивать а не ставить задачи. "задача такая" - это Ваша задача в решении которой Вам нужна помощь, и потому выкладывая "такую задачу" не забывайте формулировать вопрос и обращаться к тем кому Вы его адресуете, не знаете как - можно просто поздоровавшись.
Teslenko_EA вне форума Ответить с цитированием
Старый 14.12.2009, 00:54   #3
Basil8
 
Регистрация: 13.12.2009
Сообщений: 4
По умолчанию

Спасибо большое за помощь.
Извините за бескультурность, первый раз здесь, теперь буду знать.
Basil8 вне форума Ответить с цитированием
Старый 14.12.2009, 10:26   #4
Abrakadabra
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 487
По умолчанию

ИМХО, слишком длинное выражение.
Если уж у Вас в задании обязательно применение IIf, то лучше использовать конструкцию If..Then.
А еще лучше.. привести все к нормальному виду (структуру бд) и работать с Case. Так быстрее будет
Abrakadabra вне форума Ответить с цитированием
Старый 14.12.2009, 14:38   #5
Basil8
 
Регистрация: 13.12.2009
Сообщений: 4
По умолчанию

Abrakadabra
да я бы с радостью использовал эти функции, их я знаю получше.
Но по заданию использовать можно только Iif()
Basil8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA вопрос насчет ComboBox qert Microsoft Office Excel 11 09.12.2009 17:20
Вопрос по excel/vba sergey_wckd Microsoft Office Excel 15 05.11.2009 16:07
Вопрос по VBA Maksik Microsoft Office Excel 9 29.06.2009 12:55
Вопрос VBA tat-besidovska Microsoft Office Excel 1 04.02.2008 10:49