Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/79: Рейтинг темы: голосов - 79, средняя оценка - 4.58
4 / 4 / 0
Регистрация: 23.11.2009
Сообщений: 53

Проверка на дублирование записи в форме

23.11.2009, 11:14. Показов 16643. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Очень нужно:
Возможно ли в программе Access 2003 в форме, в поле задать условие на значение для избежания ввода одинаковых значений? если да то как?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.11.2009, 11:14
Ответы с готовыми решениями:

Дублирование записи в подчиненной форме
Существует главная форма, в ней подчиненная ленточная форма с наборами значений для данных в главной форме (один ко многим). По нажатию...

Проверка на дублирование и переход к записи
Доброго времени. Всё что мог перерыл, прошу помощи. Есть текстовое поле (Индексированное, совпадения не допускаются). Есть контрол...

Проверка данных в форме перед созданием записи в таблице
Здрасте. Вот пришлось делать базу но так как я в этом ламер и самоучителя по Access 2003 в моё вопросе аж никак не хватает, а желанием...

29
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
23.11.2009, 11:30
Цитата Сообщение от Fire6i9 Посмотреть сообщение
Возможно ли в программе Access 2003 в форме, в поле задать условие на значение для избежания ввода одинаковых значений
лучше в таблице
но можно и в форме, через ВБА. повесить на поле проверку на наличие при обработке события BeforeUpdate
0
4 / 4 / 0
Регистрация: 23.11.2009
Сообщений: 53
23.11.2009, 14:58  [ТС]
А можно по подробнее...
структура базы не позволяет совершить это в таблице наиболее верное решение сделать это через форму однако я в этом юзер но многое уже знаю. по этому короткий ответ меня вводит в заблуждение хотелось бы пошагово "куда открыть зачем вставить". и если можно то по проще не через вба, а просто значением в поле.
за ранее благодарю.
0
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
23.11.2009, 15:34
Цитата Сообщение от Fire6i9 Посмотреть сообщение
структура базы не позволяет совершить это в таблице
че там сложного, или несколько полей анализируется?
Цитата Сообщение от Fire6i9 Посмотреть сообщение
и если можно то по проще не через вба, а просто значением в поле.
не, через не басик не получится. только ВБА
Цитата Сообщение от Fire6i9 Посмотреть сообщение
по этому короткий ответ меня вводит в заблуждение
называй вещи своими именами
а вот поподробнее
0
4 / 4 / 0
Регистрация: 23.11.2009
Сообщений: 53
23.11.2009, 16:12  [ТС]
для начала Огромное спасибо!
суть башни такова в таблице архивируются занесенные данные которые время от времени повторяются по этому разрешается повторение данных. А в форме в реальном времени они не должны повторяться в этом и была вся загвоздка.
я решил эту проблему немного другим способо вставив функцию "BeforeUpdate" в свойствах поля в строку "Условие на значение" вроде работает

И еще один маленький вопросик.
где можно найти информацию об этих функциях
заранее, благодарю.

Добавлено через 24 минуты
Во оказывается так просто даже кошки не родятся. новые данные в форму тоже не заносятся.
а как это в вба делается тобиш пример не покажите?
0
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
23.11.2009, 16:41
Цитата Сообщение от Fire6i9 Посмотреть сообщение
в таблице архивируются занесенные данные которые время от времени повторяются по этому разрешается повторение данных. А в форме в реальном времени они не должны повторяться в этом и была вся загвоздка
идея: сделай 2 таблицы -
1 - реального времени там ключ поставь неповторяющийся
и 2 - архив, куда данные из таблицы реального времени заносятся

и пару запросов: 1 - на добавление данных в 2 из 1
2 - на удаление данных из 1

Добавлено через 35 секунд
Цитата Сообщение от Fire6i9 Посмотреть сообщение
вставив функцию "BeforeUpdate" в свойствах поля в строку "Условие на значение"
0
4 / 4 / 0
Регистрация: 23.11.2009
Сообщений: 53
24.11.2009, 07:08  [ТС]
спс
0
4 / 4 / 0
Регистрация: 23.11.2009
Сообщений: 53
22.12.2009, 15:52  [ТС]
и как не могу расшарить код Вба для запрета повторно вводимых записей в форме. Вернее код есть только он ссылается на проверку строк таблицы а не формы..., что приводит к нежелательным последствиям.
В приложении имеется код проверки записи с использованием таблицы.

Добавлено через 8 минут
если более подробнее есть таблица 1
есть запрос который берет данные из таблицы 1 и отсеивает ненужные записи
есть форма которая отображает отобранные записи запросом.
смысл очень прост в форме отображаются записи реального времени однако в реальном времени не допускается повторение записей, а в таблице 1 допускаются.
пример
в таблице:
болт - сломан
болт - сломан
болт - сломан
болт - целый
гайка - сломан
гайка - целая

в форме
болт - целый
гайка - целая


фильтр отсеивает сломанные запчасти и более не показывает их в форме


Просьба поглядеть имеющуюся вложенную программку и подсказать как сделать так шоб она обращалась не на проверку таблицы а просто проверяла все записи в форе и при внесении одинакового значения выдавала сообщение.
заранее благодарю.


текст программы:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub №блока_BeforeUpdate(Cancel As Integer)
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("122 Блока", dbOpenTable)
rs.Index = "PrimaryKey"
rs.Seek "=", №блока
If Not rs.NoMatch Then
MsgBox "Скважина с таким идентификатором уже существует в базе"
Cancel = True
End If
rs.Close
End Sub
0
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
22.12.2009, 16:04
чо у тя здесь
Цитата Сообщение от Fire6i9 Посмотреть сообщение
"122 Блока"
?
0
4 / 4 / 0
Регистрация: 23.11.2009
Сообщений: 53
23.12.2009, 05:11  [ТС]
Имя таблицы в которой находиться список блоков
0
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
23.12.2009, 10:40
а где выборка по полю сломан/целый?
заделай запрос с параметром ВХЕРЕ (WHERE), и используй его вместо таблицы
0
4 / 4 / 0
Регистрация: 23.11.2009
Сообщений: 53
23.12.2009, 11:20  [ТС]
Вариантов много... просто хотелось бы узнать что можно сделать с существующим текстом программы чтобы он обращался не к таблице а вел проверку строк в открытой форме!!!
0
 Аватар для Елена
2454 / 797 / 24
Регистрация: 18.08.2009
Сообщений: 1,697
23.12.2009, 11:40
немного не понятно, Ваша форма основана на таблице, в ней выводятся данные по фильтру..по Вашему заданию получается, что в таблице записи могут повторяться? Что Вы делаете в форме: вносите данные или выводите для просмотра? Не пойму: как это
Цитата Сообщение от Fire6i9 Посмотреть сообщение
в форме отображаются записи реального времени однако в реальном времени не допускается повторение записей, а в таблице 1 допускаются
0
4 / 4 / 0
Регистрация: 23.11.2009
Сообщений: 53
23.12.2009, 16:04  [ТС]
так оно и есть. в таблице содержится весь список, допустим:
5 числа 1 насос стоял в 1 комнате (метка: архив),
6 числа 1 насос стоял во 2 комнате(метка: архив),
5 числа 2 насос стоял во 2 комнате (метка: архив),
6 числа 2 насос стоял в 1 комнате (метка: архив),
7 число 1 насос стоит в 3 комнате (метка: на данный момент),
7 число 2 насос стоит в 4 комнате (метка: на данный момент),

в форме отображаются данные из фильтра который выводит записи с меткой "на данный момент".
однако при большом количестве насосов и комнат появляется возможность ввода ошибочных данных таких как:

7 число 1 насос стоит в 3 комнате
7 число 2 насос стоит в 3 комнате
ошибка заключается в том, что в одной комнате на данный момент не может стоять два насоса

или

7 число 1 насос стоит в 3 комнате
7 число 1 насос стоит в 4 комнате

ошибка заключается в том, что один насос не может находиться сразу в двух комнатах

таким образом, в таблице находятся все архивные данные за весь период, а в форме отображаются только реальные данные, а проверка на повторение записей в форме позволит избежать ошибок при вводе данных.
0
 Аватар для Елена
2454 / 797 / 24
Регистрация: 18.08.2009
Сообщений: 1,697
23.12.2009, 18:56
Можно по событию прописать такой код
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Dim dbs As DAO.Database
Dim dba As DAO.Recordset
 Dim flg_v As Boolean
 
Set dbs = CurrentDb()
 
Set dba = dbs.OpenRecordset("122 Блока")
 
flg_v = False ' переменная-флаг есть/нет
dba.MoveFirst
   Do Until dba.EOF
 
If ((dba![Одно поле таблицы].Value = Me.[Поле вашей формы].Value) And (dba![Другое поле таблицы].Value = Me.Другое поле формы.Value)) Then
 
flg_v = True ' данные есть
Mbox = MsgBox("повторяются данные!", vbOKOnly)
If (Mbox = vbOK) Then
    Me.[Поле формы обнулить].Value = Null ' можно обнулить несколько полей или редактировать'
End If
 
End If
 
dba.MoveNext
   Loop
If Not flg_v Then ' данных нет
 
'внести новые данные'
End If
2
4 / 4 / 0
Регистрация: 23.11.2009
Сообщений: 53
24.12.2009, 07:10  [ТС]
прошу прощение!
я с программированием как мышка с котом)))
уже все извилины в голове запутались. попробовал запустил а этот телик мне все время одну и туже фразу повторяет: "Элемент не обнаружен в данном семействе". (я ему даже пальцем показывал))))).
Может для более понятного расклада вы посмотрите саму базу. я бы был очень благодарен!
Вложения
Тип файла: rar Учет насосов.rar (2.15 Мб, 74 просмотров)
0
 Аватар для Елена
2454 / 797 / 24
Регистрация: 18.08.2009
Сообщений: 1,697
24.12.2009, 09:19
Посмотрите вложение. Вы задали код для свойств формы "ю На блоках1", а необходимо выбрать ,по-моему, какое-либо поле или несколько после ввода данных в которые надо проверить совпадение введенных данных в форме данным в таблице, куда идет запись. Если, например, по трем полям (которые Вы определяете) идет совпадение, то надо удалить запись из формы, предварительно предупредив о повторяющихся значениях. Я изменила код в соответствии с Вашей формой и таблицей "311 Общий список", посмотрите поле формы "Дата монтажа". Я сделала обнуление полей, дальше смотрите сами. Сейчас работает так: если вы ввели информацию в первых три поля формы (№ скважины блока, № насоса,Дата монтажа) и значения совпадают с записью в таблице, то выходит предупреждение и записи обнуляются
Вложения
Тип файла: rar Учет насосов.rar (485.6 Кб, 169 просмотров)
1
4 / 4 / 0
Регистрация: 23.11.2009
Сообщений: 53
24.12.2009, 13:55  [ТС]
Да, вы правы. Только есть один момент.
на данный момент форма ищет повторение по 3 записям (по номеру скважины, номеру насоса и по дате)
Весь смысл заключался в том что должен быть поиск по отдельным полям так как в форме вообще не должны повторялись записи.
то есть:
1. в столбце "номер насоса" не должно быть одинаковых насосов
2. в столбце "номер скважины" не должно быть одинаковых скважин
а дату можно не учитывать.

PS: на примере таблицы выглядело бы все гораздо проще можно было бы в каждом поле выставить свойство (Да (совпадение не допускаются) в "Индексированное поле".
0
 Аватар для Елена
2454 / 797 / 24
Регистрация: 18.08.2009
Сообщений: 1,697
24.12.2009, 14:42
Цитата Сообщение от Fire6i9 Посмотреть сообщение
в форме
болт - целый
гайка - целая
-разговор шел о двух полях: "гайка, болт","целый", я сделала по аналогии.
Вы можете задавать этот код для каждого поля формы, я привела его как пример.. ну уберите сравнение еще двух полей формы со значениями в строках таблицы

Добавлено через 25 минут
Попробуйте введите значение для одного поля Вашей формы и не закрывая ее, откройте таблицу "311 Общий список", увидите введенное значение, т.е. все, что Вы записываете в форму - попадает в таблицу, т.е. сравнивать надо форму с таблицей или сделать форму не основываясь на таблице
1
4 / 4 / 0
Регистрация: 23.11.2009
Сообщений: 53
24.12.2009, 15:26  [ТС]
Огромейнейшее спасибо за помощь!!!
Ваша помощь была для меня неоценимой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.12.2009, 15:26
Помогаю со студенческими работами здесь

Дублирование записи в определенном поле при добавлении новой записи
Добрый день. Подскажите пожалуйста, есть у меня запрос на создание таблицы где в созданной таблице в первом поле проставляется значение 2....

Дублирование строк в форме
Всем привет) У меня появилась проблемка, попробую, как можно точнее, описать ее. Есть 2 таблицы в базе Interbase, Firebird, допустим: ...

проверка на дублирование
здравствуйте всем. была куплена бд по товарам. записей в бд около 700 000. но так же имеется не мало дублированных записей. подскажите...

Проверка на дублирование
Подскажите, пожалуйста, как можно осуществить проверку на дублирование записи в бд?

Проверка на дублирование строк
Добрый день! В очередной раз прошу о помощи. Существует форма с полями Дата, Сумма, Сотрудник, Статья затрат. Необходимо, чтобы при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru