View Full Version : سوال: FastReport و یک مشکل با پیاده سازی یک کوئری
Elnaz.Etedali
سه شنبه 28 دی 1389, 12:24 عصر
سلام جدول بانک 2تا فیلد داره که یکی شماره پرسنلی و دومی تاریخ هست ، برای هر نفر در هر روز باید یک رکورد باشه .
کوئری لازم دارم که بتونم یک روز خاص را مشخص کنم و شماره پرسنلی هایی که در اون روز رکوردی براشون ثبت نشده را پیدا کنم
چکار کنم ؟
hossein_h62
سه شنبه 28 دی 1389, 14:50 عصر
سلام
اصولا غیر از جدول ثبت تاریخ برای پرسنل باید جدولی داشته باشید که کدهای پرسنلی در اون ثبت میشن،در این حالت با کوئری زیر میتونید به نتیجه مورد نظرتون برسید :
Select Pcode From Personel
Except
Select Pcode From DateReg
Where Date like '1389/10/28'
کوئری بالا پرسنلی که در تاریخ فرضی 28/10/1389 رکوردی براشون ثبت نشده رو نمایش میده.
* در ضمن دوست عزیز جای سوالتون اگه در تالار SQL بود بهتر بود.چون ربطی به گزارش سازی در دلفی نداره!
Elnaz.Etedali
سه شنبه 28 دی 1389, 15:25 عصر
مرسی تست می کنم ، تالار SQL پیدا نکردم ، بعدش هم من با فست ریپورت نیاز دارم
Elnaz.Etedali
سه شنبه 28 دی 1389, 15:37 عصر
تست کردم این کوئری را نمیتونه اجرا کنه ، من توی محیط فست ریپورت لازم دارم
hossein_h62
سه شنبه 28 دی 1389, 16:34 عصر
جدولاتون به چه شکل هست؟ بانکتون چیه ؟
آیا کوئری رو میخواین در Query Builder فست ریپورت بنویسید ؟
کوئری زیر رو هم تست کنید :
select pcode from personel where pcode not in(select pcode from dateReg where date like'1389/10/28')
pcode = فیلد کد پرسنلی
personel = جدول شامل مشخصات پرسنل
dateReg = جدول ثبت تاریخ و پرسنل
date = فیلد تاریخ در جدول dateReg
Elnaz.Etedali
سه شنبه 28 دی 1389, 17:12 عصر
مرسی آره در Query Builder فست ریپورت
بانک اکسس ، 2 تا جدول مثل همینی که خودتون گفتید
این کوئری اجرا میشه مشکل نداره اما خروجی درستی نمیده
Elnaz.Etedali
سه شنبه 28 دی 1389, 19:22 عصر
اشتباه از من بود درست کار میکنه مرسی
Elnaz.Etedali
دوشنبه 11 بهمن 1389, 17:33 عصر
خوب حالا مشکل بزرگتر شد ! با این کوئری لیست غایبین را درمیارم
select pcode from personel where pcode not in(select pcode from dateReg where date like'1389/10/28')
اما توی دیتابیس دوتا جدول دیگه با نام مرخصی و ماموریت داریم باید توی گزارش لیست کسایی را نشون بدم که واقعا غایب هستن ، یعنی مرخصی یا ماموریت هم نباشن و توی دو جدول اسمی از اونا نباشه
یعنی کوئری بالا را دوباره باید خروجیش را محدود تر کنم
hossein_h62
سه شنبه 12 بهمن 1389, 21:54 عصر
مشکلی نیست! اینجوری :
select pcode from personel where pcode not in(select pcode from dateReg where date like'1389/10/28' UNION Select pcode from Morkhasi where date like'1389/10/28' UNION Select pcode From Mamuriat where date like'1389/10/28')
Elnaz.Etedali
چهارشنبه 13 بهمن 1389, 20:25 عصر
مرسی یک مشکل اساسی داریم اونم اینه که توی جدول مرخصی و ماموریت یک فیلد تاریخ برای آغاز مرخصی/ماموریت و یک فیلد برای تاریخ پایان داریم ! بین این دو تاریخ باید چک بشه !!!
Elnaz.Etedali
چهارشنبه 13 بهمن 1389, 20:37 عصر
و همچنین زمان شروع و زمان پایان مرخصی یا ماموریت هم در جدول هست
hossein_h62
چهارشنبه 13 بهمن 1389, 21:09 عصر
خب بجای like'1389/10/28' از between استفاده کنید. مثلا :
... Select pcode from Morkhasi where Date Between startMor and EndMor
Elnaz.Etedali
چهارشنبه 13 بهمن 1389, 21:36 عصر
برای ساعت چی ؟ فرمت ساعت این شکلی هست 04:40
hossein_h62
پنج شنبه 14 بهمن 1389, 08:03 صبح
برای ساعت هم اگر با این فرمت ثبت شدن بهمین منوال عمل کنید، جواب میده.
Elnaz.Etedali
پنج شنبه 14 بهمن 1389, 08:55 صبح
نمیشه که ! ساعت شروع و ساعت پایان هست ، روز شروع و روز پایان هم هست ، اگر مرخصی 3 روز مثلا باشه ، ساعت شروع مال روز اول و ساعت پایان مال روز سوم هست ، مثلا شاید تاریخ شروع مرخصی 89/10/25 باشه و ساعت شروع مرخصی ساعت 07:00 ، تاریخ پایان مرخصی 89/10/27 و ساعت پایان مرخصی 06:00
hossein_h62
پنج شنبه 14 بهمن 1389, 09:16 صبح
شما در پست 13# این توضیحات رو ندادین، دقیق بگید چکاری میخواین انجام بدین ؟
ساعت و تاریخ شروع مرخصی و ساعت و تاریخ پایان مرخصی رو داریم. حالا بعدش چه کاری قرار انجام بشه ؟ اختلافش در بیاد ؟ یا چیز دیگه ؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.