Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
6 / 1 / 0
Регистрация: 11.07.2013
Сообщений: 48
1

Проверка на дублирование строк

29.08.2013, 17:13. Показов 2031. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!

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

PS:если что не понятно объяснила, пишите
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.08.2013, 17:13
Ответы с готовыми решениями:

Проверка на дублирование строк в таблице
Вообщем делаю базу (см.сложение) долго курил форум но так и не нашел ответ на ряд вопросов. 1) Как...

Проверка на дублирование записи в форме
Очень нужно: Возможно ли в программе Access 2003 в форме, в поле задать условие на значение для...

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

Запрос на дублирование строк
Доброго времени суток. Нужна помощь в запросе, есть таблица. Мне нужно сделать запрос так, чтобы...

12
Эксперт 1С
476 / 413 / 93
Регистрация: 26.09.2012
Сообщений: 1,917
29.08.2013, 17:25 2
Нужно подсчитать в запросе количество записей по условию ( запись = Иванов - Авансовый отчет), если их количество больше одного, значит есть повторения
0
6 / 1 / 0
Регистрация: 11.07.2013
Сообщений: 48
29.08.2013, 17:37  [ТС] 3
Цитата Сообщение от Joker_vad Посмотреть сообщение
Нужно подсчитать в запросе количество записей по условию ( запись = Иванов - Авансовый отчет), если их количество больше одного, значит есть повторения
не совсем понятно. можно на примере?
0
Эксперт 1С
476 / 413 / 93
Регистрация: 26.09.2012
Сообщений: 1,917
29.08.2013, 17:43 4
SQL
1
2
3
4
SELECT COUNT([Главная таблица].Компания) AS [Count-Компания]
FROM [Главная таблица]
GROUP BY [Главная таблица].Компания
HAVING ((([Главная таблица].Компания)=[ыфв]));
0
6 / 1 / 0
Регистрация: 11.07.2013
Сообщений: 48
29.08.2013, 18:00  [ТС] 5
все стало еще запутаннее
0
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
29.08.2013, 18:04 6
Цитата Сообщение от Юлия555 Посмотреть сообщение
все стало еще запутаннее
проверка наличия записи
1
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
29.08.2013, 18:52 7
Цитата Сообщение от Юлия555 Посмотреть сообщение
Существует форма с полями Дата, Сумма, Сотрудник, Статья затрат. Необходимо, чтобы при внесении в поле Статья затрат значения "Авансовый отчет" происходила проверка по полю Сотрудник и если существует запись, например, Иванов - Авансовый отчет, выводилось бы сообщение о невозможности добавления строки, т.к. сотрудник не отчитался за предыдущий авансовый отчет.
Если сотрудник может несколько раз получать аванс, то ваша схема не годится, поскольку запрещает в любом случае вторичное получение аванса. Видимо, нужно еще поле типа дата погашения аванса и, если оно не заполнено, то только тогда можно отказать в следующем авансе.
1
6 / 1 / 0
Регистрация: 11.07.2013
Сообщений: 48
30.08.2013, 09:39  [ТС] 8
Цитата Сообщение от mobile Посмотреть сообщение
Если сотрудник может несколько раз получать аванс, то ваша схема не годится, поскольку запрещает в любом случае вторичное получение аванса. Видимо, нужно еще поле типа дата погашения аванса и, если оно не заполнено, то только тогда можно отказать в следующем авансе.
Дело в то, что когда сотрудник отчитался за предыдущий авансовый отчет, статья затрат меняется.
А данная проверка необходима как раз для того, чтобы отслеживать отчитался ли сотрудник
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
30.08.2013, 17:31 9
Цитата Сообщение от Юлия555 Посмотреть сообщение
Дело в то, что когда сотрудник отчитался за предыдущий авансовый отчет, статья затрат меняется.
А данная проверка необходима как раз для того, чтобы отслеживать отчитался ли сотрудник
Теперь понятно. Проверку уместно проводить в процедуре BeforeUpdate поля СтатьяЗатрат.
Visual Basic
1
2
3
4
5
6
7
8
Private Sub СтатьяЗатрат_BeforeUpdate(Cancel As Integer)
    Dim s
    s = "select count(*) from Таблица where СтатьяЗатрат='Авансовый отчет' and КодСотрудника=" & Me.КодСотрудника
    If CurrentProject.Connection.Execute(s).Fields(0) > 0 Then
        MsgBox "Еще не сдал прежний отчет"
        Cancel = True
    End If
End Sub
0
6 / 1 / 0
Регистрация: 11.07.2013
Сообщений: 48
01.09.2013, 19:07  [ТС] 10
[QUOTE=mobile;5002815]Теперь понятно. Проверку уместно проводить в процедуре BeforeUpdate поля СтатьяЗатрат.

И снова не получается....что не так?
Вложения
Тип файла: rar Н проба.rar (411.9 Кб, 16 просмотров)
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
01.09.2013, 19:51 11
Нда...

Пробуйте
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Статья_затрат_BeforeUpdate(Cancel As Integer)
    Dim s
    s = "select count(*) from [Движение денежных средств] " _
    & " where [Статья затрат]='Авансовый отчет'" _
    & " and nz(Сотрудники,'')='" & Nz(Me.Сотрудники, " ") & "'"
    If CurrentProject.Connection.Execute(s).Fields(0) > 0 Then
        MsgBox "Еще не сдал прежний отчет"
        Cancel = True
    End If
End Sub
0
6 / 1 / 0
Регистрация: 11.07.2013
Сообщений: 48
01.09.2013, 20:23  [ТС] 12
Цитата Сообщение от mobile Посмотреть сообщение
Нда...

Пробуйте
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Статья_затрат_BeforeUpdate(Cancel As Integer)
    Dim s
    s = "select count(*) from [Движение денежных средств] " _
    & " where [Статья затрат]='Авансовый отчет'" _
    & " and nz(Сотрудники,'')='" & Nz(Me.Сотрудники, " ") & "'"
    If CurrentProject.Connection.Execute(s).Fields(0) > 0 Then
        MsgBox "Еще не сдал прежний отчет"
        Cancel = True
    End If
End Sub
все хорошо, но вот только это сообщение постоянно выскакивает, нельзя данные редактировать дальше пока не закроешь форму. нужно так: например беру Матина, ввожу новую строку со значением Ав.отч., мне пишет что "Еще не сдал прежний отчет", после нажатия ОК, ищу предыдущую строку со значением Ав.отч. и в статье затрат проставляю иное значение, после чего могу заводить на Матина новый ав.отч.
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
01.09.2013, 20:38 13
Цитата Сообщение от Юлия555 Посмотреть сообщение
все хорошо, но вот только это сообщение постоянно выскакивает, нельзя данные редактировать дальше пока не закроешь форму. нужно так: например беру Матина, ввожу новую строку со значением Ав.отч., мне пишет что "Еще не сдал прежний отчет", после нажатия ОК, ищу предыдущую строку со значением Ав.отч. и в статье затрат проставляю иное значение, после чего могу заводить на Матина новый ав.отч.
Так это совсем другая постановка задачи. Но решается легко - уберите команду Cancel=True из процедуры.
1
01.09.2013, 20:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2013, 20:38
Помогаю со студенческими работами здесь

Разделение, дублирование строк в запросе
Не очень разбираюсь в Sql запросах. Помогите. Имеется такая таблица в Access 2003: ...

Дублирование базы , или дублирование информациии
Доброго времени суток ! Поставлена задача: мне нужно либо при изменении или добавлении данных...

Проверка на дублирование строк при добавлении новой строки
Здравствуйте! Возникла проблема. Когда добавляю новую строку в базу данных нужно проверить, чтобы ...

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru