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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Починить запрос
 
 автор: Alex Pancho   (17.04.2016 в 11:42)   личное сообщение
 
 

Таблица SourceData
поля:
pid - персональный ИД пользователя (Длинное целое)
fDay - дата события (дата/время)
fTime - время события (дата/время)
punch - событие (1 - вход, 0 - выход)

Таблица atWT
поля:
id - счетчик, ключевое, для работы с запросами и пр.
pid - персональный ИД пользователя (Длинное целое)
fDay - дата события (дата/время)
fTime - время события (дата/время)
punch - событие (1 - вход, 0 - выход)

Собственно данные из SourceData запросом 1:1 переносятся в atWT после проверки корректности

Когда в atWT у меня такие данные:


pid fday ftime punch
66 05.11.2015 13:57:00 1
66 05.11.2015 23:18:00 0


а в SourceData такие данные:


pid fday ftime punch
66 05.11.2015 13:57:00 1
66 05.11.2015 23:18:00 0
66 06.11.2015 10:01:00 1
66 06.11.2015 19:10:00 0


То запрос, который я привожу ниже добавляет только нужные мне новые строки:

SELECT SourceData.pid, SourceData.fday, SourceData.ftime, SourceData.punch 
FROM (SELECT atWT.pid, atWT.fDay, atWT.fTime, atWT.punch 
FROM atWT INNER JOIN SourceData ON (atWT.pid = SourceData.pid) AND (atWT.fDay = SourceData.fday) 
WHERE ((SourceData.PID) Is Not Null) 
GROUP BY atWT.pid, atWT.fDay, atWT.fTime, atWT.punch 
) as Q2 
RIGHT JOIN SourceData ON Q2.pid=SourceData.pid 
WHERE ((Q2.fday) <> (SourceData.fday)) 
GROUP BY SourceData.pid, SourceData.fday, SourceData.ftime, SourceData.punch

Добавлены:
pid fday ftime punch
66 06.11.2015 10:01:00 1
66 06.11.2015 19:10:00 0


Но, если файл обработать повторно ( а такое может быть - ошибочное нажатие, например)
то данные добавляются еще раз, причем обе строки:


pid fday ftime punch
66 05.11.2015 13:57:00 1
66 05.11.2015 23:18:00 0
66 06.11.2015 10:01:00 1
66 06.11.2015 19:10:00 0
66 05.11.2015 13:57:00 1
66 05.11.2015 23:18:00 0
66 06.11.2015 10:01:00 1
66 06.11.2015 19:10:00 0


Поэтому, запрос мой неверен, а как нааписать правильный - уж мозг выкипел....

  Ответить  
 
 автор: Гоблин   (07.08.2016 в 00:25)   личное сообщение
 
 

С чего вдруг запрос не верен, коли он добавляет то, что надо. Попробуйте ограничить количество срабатываний. Например: прежде чем добавить, проверить есть ли данная информация уже в таблице. [ fday]&[ftime]&[punch]
И если в таблице такая запись есть, то запрос не добавляет.
Что-то типа If Dcount(.....)<1 then (запрос на добавление) else end if
Одинаковые данные хоть пять раз нажимай на кнопку, не добавятся.

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