Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Исключение повторных данных
 
 автор: LexLut   (30.08.2014 в 15:39)   личное сообщение
 
 

Всем доброго времени суток!

Имеется база данных Access, в которой есть столбец ФИО. Можно ли сделать так, чтобы при вводе именно в этот столбец данных, которые в этом столбце уже есть они выделялись красным цветом? Ну или как угодно еще оповещал о повторе?
Версию, к сожалению, не посмотрел.

Заранее благодарю!

  Ответить  
 
 автор: Гоблин   (31.08.2014 в 09:45)   личное сообщение
 
 

Не можно, а нужно. Но желательно разделить. Фамилия - отдельное поле, Инициалы - в отдельное. Далее пол, дата рождения, так как фамилия с инициалами может быть одна и та же на разных лиц, лучше уж вводит их в поле, а по этим полям чуток ниже список, в котором будут появляться введенные.
Ввел в поле Иванов, и все Ивановы появляются в списке. Ввел инициалы, и все ИВановы с такими инициалами отсеялись. Там уж можно будет выбрать какой нужен по дате рождения, полу.
Рыженко И.В. - Ирина Владимировна, Игорь Вадимович. По полу отсеются либо те, либо другие.

Не стоит одного и того же вводить 2 и более раз.

  Ответить  
 
 автор: LexLut   (31.08.2014 в 11:44)   личное сообщение
 
 

База в виде таблицы. Вариант переделать отпадает отдельно фамилию, отдельно имя и отчество отпадает, да и пола там нет.
Там столбцы:
1. номер по порядку.
2. название организации.
3. ФИО
4. дата
ну и т.д.

Если можно, то прям по пунктам, как сделать чтобы оповещал об одинаковых значениях только в столбце ФИО?

  Ответить  
 
 автор: Гоблин   (31.08.2014 в 18:27)   личное сообщение
 
 

Пусть считает через count и если больше 1, то оповещает msgbox

  Ответить  
 
 автор: LexLut   (31.08.2014 в 21:34)   личное сообщение
 
 

Звучит здорово, но.... Я ничего не понял.
Не мог бы очень подробно описать куда нажимать, где что выбирать?

  Ответить  
 
 автор: Ramzes   (01.09.2014 в 00:10)   личное сообщение
 
 

А не проще поставить на столбец уникальный ключ, и Access сам ругаться будет

  Ответить  
 
 автор: kot_k_k   (01.09.2014 в 08:59)   личное сообщение
 
 

Count - это счетчик для запроса с группировкой
select fio, count(1) as Kol_vo from fio group by fio

посчитает кол-во однофамильцев.

2 Ramzes - а как быть с полными тезками Иванов Иван Иванович. - и фиг ключ позволит ввести второго такого.

в Вашем случае можно ФИО отсекать до первого пробела - получим Фамилию и по ней делать остальной поиск.
mid(fio,1,(instr(fio," ")-1))


трохы подумав - повтор данных контролировать надо не фамилией, а идентификационным кодом.

  Ответить  
 
 автор: ЛМВ   (03.09.2014 в 13:22)   личное сообщение
 
 

Вопрос в том, зачем нужно определять, есть повтор или нет. Если его надо определять в момент ввода ФИО при создании новой записи, тогда можно использовать поле со списком, список в котором формировать запросом на группировку по полю ФИО из той же таблицы, в которую Вы данные заносите. В этом случае, если еще на событие контрола "Изменение" навесить код
[Ваш контрол, где ФИО].Dropdown, при вводе очередных ФИО список сам будет услужливо подгонять самого похожего ФИО. А при переходе к след. записи - сделать Requery поля, где ФИО
А если нужно, чтобы все-таки красным - тогда "Условное форматирование". (Если А-2003 и выше)
Пример: DCount("От";"ЗАКУПКИ";"От='" & [От] & "'")>1 выделит нужным цветом в поле те "ячейки", содержимое которых встречается >1 раза в поле "От" таблицы "ЗАКУПКИ" при условии, что взяты не все записи из таблицы ЗАКУПКИ, а только те, значение которых равно искомому

  Ответить  
 
 автор: LexLut   (05.09.2014 в 23:29)   личное сообщение
 
 

Спасибо!

  Ответить  
 
 автор: Гоблин   (06.09.2014 в 09:32)   личное сообщение
 
 

Начали с фамилии, закончили складом.
Повторы всегда будут. Лучше ФИО, инициалы, пол, дату рождения вводить в отдельные поля. Причем в таблицу должно попадать либо по маске ввода, либо после функции Trim, дабы исключить лишние пробелы спереди и сзади. Юзвери любят одного и того же Иванова вводить с пробелом впереди, потом с двух пробелов, потом еще пробел сзади поставить. Извращаются как хотят. Кроме того, желательно обработку UCase поставить чтобы все буквы были прописные, или через left только первую, а остальные строчные.
Классификация клиента должна проходить не только по фамилии, а по всем параметрам вышеперечисленным. Отсеиваться в списке по ходу ввода. Иванов - все ивановы в списке. Инициалы И.И. - все ивановы и.и. со своими датами рождения и т.д.. Если нужный есть, щелкнуть по нему и продолжать работу дальше. Нет - пустой список - предложение проги ввести нового клиента. Если вводим, msgbox должен спросить, показав все введенное, типа точно ли этого кренделя, или где-то ошибка? Потом еще алгоритм правки этого кренделя придумать надо, чтобы через правку не получилось одного и того же 2 раза завести.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList