MS Access SQL Sorgusu: Son 1 Saatte Giriş Çıkış Yapan Personel

mdagistanli

Altın Üye
Katılım
5 Mayıs 2014
Mesajlar
124
Excel Vers. ve Dili
Excel Pro Plus 2019 TR
Altın Üyelik Bitiş Tarihi
13-05-2026
Merhabalar.

Sentez PDKS uygulamasının parmak izi giriş çıkış verilerini, db'den okuyorum. Gircik adlı tabloda GSaat (Giriş) ve CSaat (çıkış) sütunları var, saat formatı hh:mm şeklinde.

Son 1 saat içinde giriş veya çıkış yapmış personeli listelemek istiyorum. Getdate ve Dateadd konularına baktım ama maalesef çözemedim.

Yardımcı olabilir misiniz?
 
Katılım
2 Temmuz 2014
Mesajlar
242
Excel Vers. ve Dili
2021 Türkçe, 64bit
where kısmını aşağıdaki gibi düzenleyip dener misiniz
Kod:
SELECT G.Kartno, G.GSaat, G.CSaat, G.Tarih
FROM Gircik AS G
WHERE (((G.GSaat)>=Format(Now()-TimeValue("01:00:00"),"Short Time") And (G.GSaat)<=Format(Now(),"Short Time")) AND ((G.Tarih)=Date())) OR (((G.CSaat)>=Format(Now()-TimeValue("01:00:00"),"Short Time") And (G.CSaat)<=Format(Now(),"Short Time")) AND ((G.Tarih)=Date()));
 
Son düzenleme:
Katılım
2 Temmuz 2014
Mesajlar
242
Excel Vers. ve Dili
2021 Türkçe, 64bit
yada
Kod:
SELECT G.Kartno, G.GSaat, G.CSaat, G.Tarih
FROM Gircik AS G
WHERE ((G.Tarih)=Date()) and 
(((G.GSaat)>=Format(Now()-TimeValue("01:00:00"),"Short Time") And (G.GSaat)<=Format(Now(),"Short Time"))or ((G.CSaat)>=Format(Now()-TimeValue("01:00:00"),"Short Time") And (G.CSaat)<=Format(Now(),"Short Time")) );
 

mdagistanli

Altın Üye
Katılım
5 Mayıs 2014
Mesajlar
124
Excel Vers. ve Dili
Excel Pro Plus 2019 TR
Altın Üyelik Bitiş Tarihi
13-05-2026
yada
Kod:
SELECT G.Kartno, G.GSaat, G.CSaat, G.Tarih
FROM Gircik AS G
WHERE ((G.Tarih)=Date()) and
(((G.GSaat)>=Format(Now()-TimeValue("01:00:00"),"Short Time") And (G.GSaat)<=Format(Now(),"Short Time"))or ((G.CSaat)>=Format(Now()-TimeValue("01:00:00"),"Short Time") And (G.CSaat)<=Format(Now(),"Short Time")) );
İkisi de oldu, teşekkür ederim. Dün gece 01:00'de denediğimde saati nasıl tutturacağımı çözemediğim için boş sorgu gelmişti :)
 
Katılım
12 Aralık 2015
Mesajlar
1,214
Excel Vers. ve Dili
Türkçe Ofis 2007
Alternatif mantık aynı ama biraz kısa
Kod:
SELECT *
FROM Gircik
WHERE (Date()+[GSaat]>=DateAdd("h",-1,Now()) And Date()+[GSaat]<=Now()) Or (Date()+[CSaat]>=DateAdd("h",-1,Now()) And Date()+[CSaat]<=Now());
 
Son düzenleme:
Katılım
2 Temmuz 2014
Mesajlar
242
Excel Vers. ve Dili
2021 Türkçe, 64bit
Date() yerine tarih alanının olması gerekmez miydi hocam (Tarih+[GSaat]>=.... gibi
 

mdagistanli

Altın Üye
Katılım
5 Mayıs 2014
Mesajlar
124
Excel Vers. ve Dili
Excel Pro Plus 2019 TR
Altın Üyelik Bitiş Tarihi
13-05-2026
Alternatif mantık aynı ama biraz kısa
Kod:
SELECT *
FROM Gircik
WHERE (Date()+[GSaat]>=DateAdd("h",-1,Now()) And Date()+[GSaat]<=Now()) Or (Date()+[CSaat]>=DateAdd("h",-1,Now()) And Date()+[CSaat]<=Now());
"Ölçüt ifadesinde veri türü uyuşmazlığı"
 
Katılım
12 Aralık 2015
Mesajlar
1,214
Excel Vers. ve Dili
Türkçe Ofis 2007
Date() yerine tarih alanının olması gerekmez miydi hocam
Haklısın, baştan öyle idi kafam karışmış.
Kod:
SELECT *
FROM Gircik
WHERE ((([Tarih]+[GSaat])>=DateAdd("h",-1,Now()) And ([Tarih]+[GSaat])<=Now())) OR ((([Tarih]+[CSaat])>=DateAdd("h",-1,Now()) And ([Tarih]+[CSaat])<=Now()));
 

mdagistanli

Altın Üye
Katılım
5 Mayıs 2014
Mesajlar
124
Excel Vers. ve Dili
Excel Pro Plus 2019 TR
Altın Üyelik Bitiş Tarihi
13-05-2026
Haklısın, baştan öyle idi kafam karışmış.
Kod:
SELECT *
FROM Gircik
WHERE ((([Tarih]+[GSaat])>=DateAdd("h",-1,Now()) And ([Tarih]+[GSaat])<=Now())) OR ((([Tarih]+[CSaat])>=DateAdd("h",-1,Now()) And ([Tarih]+[CSaat])<=Now()));
Yine aynı hatayı verdi. Veri gg/aa/yyyy biçiminde işleniyor, DateAdd ile çağırdığımız tarih biçimi ise: a/g/yyyy. Sorun bu olabilir mi?
 
Katılım
2 Temmuz 2014
Mesajlar
242
Excel Vers. ve Dili
2021 Türkçe, 64bit
[GSaat] ve [CSaat] ifadeleri metin
Yine aynı hatayı verdi. Veri gg/aa/yyyy biçiminde işleniyor, DateAdd ile çağırdığımız tarih biçimi ise: a/g/yyyy. Sorun bu olabilir mi?
aklıma gelen 2 sorun var:
1 - [GSaat] ve [CSaat] alanları metin formatında olduğu için sistem saat olarak yorumlayamamış olabilir
[GSaat] ve [CSaat] yerine timevalue([GSaat]) ve timevalue([CSaat]) kullanmayı deneyebilirsiniz.
2 - [GSaat] ve [CSaat] alanları boş ise timevalue(...) kullansanız bile hatalı dönüşüm yaptığından koşul kısmında soruna sebep olabilir.
not: giriş yada çıkış alanı boş ise bu durumda ne yapılacağı belli değil; varsayılan olarak "00:00:00" verilmesi giriş-çıkış yapmamış birine giriş-çıkış ataması yapılmış olacak. gece yarısı "son 1 saatte kim ne yapmış" gibi bir şey yapmayacaksanız sorun yok
 

mdagistanli

Altın Üye
Katılım
5 Mayıs 2014
Mesajlar
124
Excel Vers. ve Dili
Excel Pro Plus 2019 TR
Altın Üyelik Bitiş Tarihi
13-05-2026
Evet saatler kısa metin olarak tanımlı ve timevalue parametresi saati 01:00:00 biçimine çevirdi ama henüz çıkış sütunu boş olduğu için çıkış kısmında hata verdi.
 
Katılım
12 Aralık 2015
Mesajlar
1,214
Excel Vers. ve Dili
Türkçe Ofis 2007
Alanları aşağıdaki gibi formatlayarak, mesaj #8 deki sql metnini deneyin

Alan

Veri Türü

Biçim

Tarih

Tarih/Saat

Kısa Tarih

GSaat

Tarih/Saat

Kısa Saat

CSaat

Tarih/Saat

Kısa Saat

 
Katılım
2 Temmuz 2014
Mesajlar
242
Excel Vers. ve Dili
2021 Türkçe, 64bit
@alicimri hocamın kodunu aşağıdaki gibi düzenleyip dener misiniz?
SQL:
SELECT G.Id, G.Kartno, G.Tarih, G.GSaat, G.CSaat
FROM Gircik AS G
WHERE (((CDate([G].[Tarih] & ' ' & [G].[GSaat]))>=DateAdd("h",-1,Now()) And (CDate([G].[Tarih] & ' ' & [G].[GSaat]))<=Now())) OR (((CDate([G].[Tarih] & ' ' & [G].[CSaat]))>=DateAdd("h",-1,Now()) And (CDate([G].[Tarih] & ' ' & [G].[CSaat]))<=Now()));
 
Üst