powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проверка дублирования значения
17 сообщений из 17, страница 1 из 1
Проверка дублирования значения
    #32208444
Перец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В форме хочу проверять дублирования значения в поле PDCode. PDCode- индексированное поле. Написал процедуру проверки.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub PDCode_BeforeUpdate(Cancel As Integer)

Dim rs As Recordset

Set rs = CurrentDb.OpenRecordset( "Product Details" , dbOpenTable)
rs.Index =  "PrimaryKey" 
rs.Seek  "=" , Me!PDCode
If Not rs.NoMatch Then
MsgBox  "Продукт с таким кодом уже существует" 
        Cancel = True
        End If
 rs.Close
    
End Sub


По идее, если ищю записи с помощью метода Seek, при нахождении записи, свойство NoMatch объекта RecordSet должно принимать значение False. Но что-то тут, похоже, напутал.. Короче, не работает :(
...
Рейтинг: 0 / 0
Проверка дублирования значения
    #32208596
Nick987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если используешь ADO, то проверяй "If rs.EOF Then"
...
Рейтинг: 0 / 0
Проверка дублирования значения
    #32208600
Перец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин, при компиляции выдает, что не может найти такой метод (NoMatch). Хотя, в документации я тут видел...
Уважаемые спецы, подскажите плиз как быть. :(
...
Рейтинг: 0 / 0
Проверка дублирования значения
    #32208615
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>при компиляции выдает, что не может найти такой метод (NoMatch).
попробуй
Dim rs As DAO. Recordset
похоже из-за хаоса в библиотеках
...
Рейтинг: 0 / 0
Проверка дублирования значения
    #32208617
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное, надо рекордсет как DAO.Recordset определить
Учись, студент, а то все время ключи подавать будешь :-)
...
Рейтинг: 0 / 0
Проверка дублирования значения
    #32208619
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Апаздал
...
Рейтинг: 0 / 0
Проверка дублирования значения
    #32208646
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если хаос в библиотеках, то как у него
Код: plaintext
Set rs = CurrentDb.OpenRecordset( "Product Details" , dbOpenTable)

отрабатывает???
Или DAO-шные рекордсеты научились ADO-шными прикидываться?
...
Рейтинг: 0 / 0
Проверка дублирования значения
    #32208665
Перец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рекордсет как DAO.Recordset определил. Отлично. Теперь метод есть.
А вот
Код: plaintext
1.
Set rs = CurrentDb.OpenRecordset( "Product Details" , dbOpenTable)

теперь не отрабатывет. Говорит, что объект "Product Details" не является ядром базы данных.
Чего делать?
...
Рейтинг: 0 / 0
Проверка дублирования значения
    #32209366
Перец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ой, сорри... Это я сглючил. Все практически нормально, только вот на строке
Код: plaintext
rs.Seek  "=" , Me!PDCode

выдается ошибка преобразования типа данных...
PDCode - текстовое поле.
Я с синтаксисом что-то напутал?
...
Рейтинг: 0 / 0
Проверка дублирования значения
    #32209374
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наверное надо
Код: plaintext
rs.Seek  "=" , str(Me!PDCode)
...
Рейтинг: 0 / 0
Проверка дублирования значения
    #32209381
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Лоху
>Или DAO-шные рекордсеты научились ADO-шными прикидываться?

Оказывается научились. Мутанты, блин
==
Скорее всего rs становился (или остался) равным Nothing. Молчком.

2Перец
Ты уверен что текстовое поле PDCode есть PrimaryKey и и состоит из одного столбца?
...
Рейтинг: 0 / 0
Проверка дублирования значения
    #32209432
Перец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Senin Viktor, очень важное замечание... в таблице у меня поля (ID, PDCode, PDDescriprion...). ID - autonumber, PDCode -string...
ID ключевое поле. Но как тогда задать текущий индекс?
...
Рейтинг: 0 / 0
Проверка дублирования значения
    #32209504
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перец - ты попался!

PrimaryKey у тебя - ID, а ищешь по PDCode - что не есть правильно :)

Просто создай индекс для поля PDCode, если логика позволяет - то лучше уникальный. Имя этого индекса (можно назвать PDCode) и будешь указывать в
rs.Index ="rs.Index"
...
Рейтинг: 0 / 0
Проверка дублирования значения
    #32209518
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очепятка, следует читать

...и будешь указывать rs.Index ="PDCode"
...
Рейтинг: 0 / 0
Проверка дублирования значения
    #32209533
Перец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Супер, Виктор. Только подскажите, пож-та, как создать этот самый индекс :)
...
Рейтинг: 0 / 0
Проверка дублирования значения
    #32209539
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при редактировании таблицы
Вид->Индексы
:)
...
Рейтинг: 0 / 0
Проверка дублирования значения
    #32209542
Перец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А спасибо!
Уже не надо... Сам разобрался...
Спасибо.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проверка дублирования значения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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