Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Overflow при использовании dlookup / 5 сообщений из 5, страница 1 из 1
19.03.2016, 03:20
    #39195890
Tarasios
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Overflow при использовании dlookup
Доброго времени суток всем.
Уважаемые знатоки, подскажите пожалуйста, решение.

Есть образец базы, mdb, ещё формата Access 2000 (в прицепе).
У клиента есть реестр дисконтных карточек, причём их номера состоят из 12-ти символов.
Необходимо, что бы при вводе номера новой карточки программа проверяла его уникальность, и если такой номер уже введён, то, допустим, выдавала сообщение "Номер занят". А если такого номера в реестре ещё нету - появлялось сообщение "Номер свободен".
Таблица с номерами карточек "ТСкидкаРег", поле с номерами - "КодКарты" (тип поля - Числовой, размер - Действительное, точность - 18, с запасом).
В форме с реестром карточек FDiscontSpisok по нажатию кнопки "Новая карточка" открывается форма FRegDiscontKDir с полем для ввода нового номера Штрихкод (поле свободное). Вводим новый номер, жмём кнопочку "Регистрировать".
И по нажатию выполняется:

Private Sub Рег_Click()
Код& = Nz(DLookup("[КодКарты]", "ТСкидкаРег", "[КодКарты] =" & [Forms]![FRegDiscontKDir]![Штрихкод]), 0)
If Код = 0 Then
MsgBox "Номер свободен", vbOKOnly, "Предупреждение"
Else
MsgBox "Номер занят", vbOKOnly, "Предупреждение"
End If
End Sub

Этот способ отлично работает при числах до десяти цифр включительно. Но если вводим номер из 12-ти символов (по условию) - новый
номер обрабатывает правильно (Номер свободен). А если такой номер из 12-ти символов уже существует - выдаёт ошибку Overflow.

Пробовал изменить тип поля для номера карточки на текстовый и, соответственно, менял строку на
Код& = Nz(DLookup("[КодКарты]", "ТСкидкаРег", "[КодКарты] ='" & [Forms]![FRegDiscontKDir]![Штрихкод]& "'"), 0)
Результат - точно такой же, Overflow.
Перерыл кучу справок, форум, подозреваю, что как то надо явно указать тип данных - но ничего пока не получилось.
Спасите, просветите...

С уважением.
...
Рейтинг: 0 / 0
19.03.2016, 03:47
    #39195892
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Overflow при использовании dlookup
Tarasios,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub Рег_Click()
Dim Код As Variant
Код = Nz(DLookup("[КодКарты]", "ТСкидкаРег", "[КодКарты] =" & [Forms]![FRegDiscontKDir]![Штрихкод]), 0)
If Код = 0 Then
 MsgBox "Номер свободен", vbOKOnly, "Предупреждение"
Else
 MsgBox "Номер занят", vbOKOnly, "Предупреждение"
End If
End Sub
...
Рейтинг: 0 / 0
19.03.2016, 03:56
    #39195893
Tarasios
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Overflow при использовании dlookup
Спасибо огромное! Работает!
...
Рейтинг: 0 / 0
19.03.2016, 15:07
    #39196024
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Overflow при использовании dlookup
Tarasios,
лучше текст если имееются в первой позиции нули
...
Рейтинг: 0 / 0
19.03.2016, 15:09
    #39196025
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Overflow при использовании dlookup
sdku,
извиняюсь-неправ (лоб не наморщил)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Overflow при использовании dlookup / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]