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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2009, 02:02   #1
ehoolu
 
Регистрация: 14.11.2009
Сообщений: 5
По умолчанию Помогите написать процедуру

Помогите, плиз, у меня есть таблица Сотрудники (КодСотрудника, ФИО, Должность), форма Сотрудники(с кнопками Открыть, Создать, Закрыть), форма ПодчиненнаяСотрудники (КодСотрудника, ФИО, Должность). При нажатии кнопки Создать, открывается другая форма СведенияОСотруднике и заполняются поля-ФИО, Должность. Так вот как сделать, чтобы при нажатии кнопки ОК на форме СведенияОСотруднике не добавлялся сотрудник, данные которого уже имеются. Пишу на VBA
Рrivate Sub ОК_Click()
If Not IsNull(Me!КодСотрудника) And (IsNull(Me!ФИО) Or Me!ФИО = "") Then
MsgBox "Введите ФИО Сотрудника!", vbOKOnly + vbExclamation
Else
If ("Сотрудники.ФИО " LIKE “& Me!ФИО”) Then ‘--не работает
MsgBox "ФИО Сотрудника уже существует!", vbOKOnly + vbExclamation
Else
Forms!Сотрудники!ПодчиненнаяСотрудн ики.Form.Requery
DoCmd.Close acForm, "СведенияОСотруднике"
End If
End If
End Sub
ehoolu вне форума Ответить с цитированием
Старый 14.11.2009, 08:54   #2
Abrakadabra
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 487
По умолчанию

Прежде чем исправлять Ваш код, попробуйте ответить сами себе на несколько вопросов (для понимания сути):
Цитата:
Сообщение от ehoolu Посмотреть сообщение
таблица Сотрудники (КодСотрудника, ФИО, Должность)
- У Вас должности сотрудников - константа, как дата рождения? Иными словами, разве сотрудник, принятый на определенную должность, не может быть переведен на другую? (подозреваю, что нужно вернуться к продумыванию структуры бд)...

Цитата:
Сообщение от ehoolu Посмотреть сообщение
If Not IsNull(Me!КодСотрудника) And (IsNull(Me!ФИО) Or Me!ФИО = "")
- Попытайтесь объяснить себе смысл этого выражения. "На всякий случай" налепили?


Цитата:
Сообщение от ehoolu Посмотреть сообщение
If ("Сотрудники.ФИО " LIKE “& Me!ФИО”) Then ‘--не работает
MsgBox "ФИО Сотрудника уже существует!", vbOKOnly + vbExclamation
- И не будет работать.. Вы где ищете?
Abrakadabra вне форума Ответить с цитированием
Старый 17.11.2009, 15:36   #3
lg140980bav
Пользователь
 
Аватар для lg140980bav
 
Регистрация: 22.09.2009
Сообщений: 20
По умолчанию

ehoolu, может быть, просто нужно в таблице данных о сотрудниках , добавить новое ключевое поле, обязательное к заполнению , к примеру , ИНН , а на форме СведенияОСотруднике выделить такое поле для заполнения 1-м :-)) (Ну чтоб наверняка не пропустить) при заведении нового клиента .
ИНН- 10 числовых символов, 2-х одинаковых гарантировано нет. Я так и сделал у себя . Нужен пример ,обращайтесь.
Стучите господа , и вам откроют.
С уважением Александр.
lg140980bav вне форума Ответить с цитированием
Старый 18.11.2009, 21:07   #4
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте ehoolu.
проверить существование записи строкой
If ("Сотрудники.ФИО " LIKE “& Me!ФИО”) Then ‘--не работает
нельзя, возможно поможет следующая доработка:
замените строку которая "не работает" подобной строкой
If bRecExists(Me, "ФИО", Me!ФИО & "”) Then '(текущую форму Me заменить на форму данные которой обрабатываются)
и разместите в проекте функцию:
Код:
Function bRecExists(fCtl As Form, sField$, sVal$) As Boolean
Dim r             As ADODB.Recordset
On Error Resume Next
    Set r = New ADODB.Recordset
    s = fCtl.RecordSource
    r.Open s, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    r.Find sField + " LIKE  '" + sVal + "*'"
    'r.Find sField + " = '" + sVal + "'"' уславие поиска может быть таким
    If Not r.EOF Then bRecExists 'существует
    r.Close:    Set r = Nothing
End Function
думаю у Вас все получится.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 20.11.2009, 06:58   #5
ehoolu
 
Регистрация: 14.11.2009
Сообщений: 5
По умолчанию

Спасибо всем, у меня уже все получилось. Сдела так : в форме "СведениеОСоттруднике" на поле ФИО повесила процедуру :
Private Sub ФИО_BeforeUpdate(Cancel As Integer)
If Not IsNull(DLookup("ФИО", "Сотрудники", "ФИО=""" & ФИО & """")) Then
Cancel = 1
MsgBox "Такой Сотрудник уже существует!", vbOKOnly + vbExclamation
DoCmd.Close acForm, "СведенияОСотруднике"
End If
End Sub

А для кнопки "Добавить"(на той же форме) процедуру:
Private Sub ОК_Click()
If IsNull(Me!КодСотрудника) And (IsNull(Me!ФИО) Or Me!ФИО = "") Then
MsgBox "Введите ФИО Сотрудника!", vbOKOnly + vbExclamation
Else
Forms!Сотрудники!ПодчиненнаяСотрудн ики.Form.Requery
End If
DoCmd.Close acForm, "СведенияОСотруднике"
End Sub
ehoolu вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите написать процедуру на delphi для работы со звуком smalsvoloch Помощь студентам 2 14.10.2009 21:48
Помогите правильно написать процедуру seasanya Microsoft Office Access 1 26.01.2009 22:02
Помогите написать процедуру на кнопку evrey Общие вопросы Delphi 1 16.06.2008 22:25
Как правильно написать процедуру Cold Went Компоненты Delphi 1 29.04.2008 14:21