View Full Version : جستجو بین دو زمان
mohammad-gh
چهارشنبه 23 مرداد 1387, 14:16 عصر
با سلام خدمت دوستا ن یک سوال خیلی فوری و واجب دارم:
من می خواهم بین دو زمان که به فرمت (7:00) تا (21:00) ذخیره شده جستجو انجام بدهم .
مثلا می خواهم چک کنم و ببینم که شخصی بین این دو زمان ثبت شده است یا نه.
هنگام ذخیره من زمان را از کومبو باکسی که در آن زمان را یک ربع یک ربع نوشته ام گرفته و دخیره می کنم.
Meysamkh
چهارشنبه 23 مرداد 1387, 14:50 عصر
سلام دوست عزیز ;
اگه با دیتا بیستون sql server 2005 هست می تونید از نمونه ی زیر استفاده کنید و اون رو هر جا که خواستید مثلا توی دیتا گرید یا ... نشون بدید :
dim cmd as new sqlcommand
cmd.connection=sqlconnection1
cmd.commandtype=commandtext
cmd.commandtext=" select * from (table name ) where date between '---' and '---'
"
dim r as sqldatareader=cmd.executereader
do while r.read
for example : combobox.item.add(r(0))
loop
r.close
sqlconnection.close
موفق باشید.
mohammad-gh
پنج شنبه 24 مرداد 1387, 10:04 صبح
ممنون از توجهتون ولی من می خواهم بین دو زمانی که در بانک به صورت مثلا(7:00) و (8:30) ذخیره کرده ا م جستجو انجام دهم و چک کنم که ببینم اونجا ثبت شده است.
البته منظور من از بین دو زمان ، جستجو بین دو ساعت است که در دو فیلد جدا ذخیره می شوند.time 1 و time 2
mostafaaa
پنج شنبه 24 مرداد 1387, 11:39 صبح
سلام ببین این به دردت میخوره
SELECT Table1.F2
FROM Table1
WHERE F2 Between #6:00:00 AM# AND #12:00:00 PM#
mohammad-gh
پنج شنبه 24 مرداد 1387, 12:45 عصر
ممنون از لطفت آقا مصطفی ، ولی این اطلاعات از دو فیلد جستجو می شوند ، یعنی باید بگوییم زمان بین ساعت شروع تا ساعت پایان جستجو کند. که ساعت شروع در یک فیلد و ساعت پایان در فیلدی دیگر است.
اما در کدی که شما نوشته اید در یک فیلد جستجو می کند
mostafaaa
پنج شنبه 24 مرداد 1387, 17:33 عصر
میشه یه خورده بیشتر در مورد جدولت توضیح بدی .یا اینکه جدولت رو بزار تا ببینم فیلدهاش چطوری ؟
من هنوز متوجه نشدم شما چی میخوای!!
mohammad-gh
جمعه 25 مرداد 1387, 01:21 صبح
عرض به خدمتتون که من در برنامه ام در تعریف یک کلاس آموزشی ، زمان شروع و پایان آن کلاس را در یک اتاق مشخص در بانک ذخیره می کنم .
حال می خواهم در تعریف کلاسهای دیگر چک کنم و ببینم که در آن اتاق در آن زمان کلاسی تعریف کرده ام یا نه.
با زهم تکرار می کنم که که زمان شروع و پایان را در دو فیلد جدا ذخیره می کنم.
با زهم ممنون از توجهتون.
mostafaaa
جمعه 25 مرداد 1387, 18:40 عصر
این مثال رو نگاه کن فکر کنم به کارت بیاد.
21876
SELECT *
FROM Table1
WHERE ClassName IN (SELECT ClassName FROM Table1 WHERE @BegTiem BETWEEN F1 AND F2) OR ClassName IN (SELECT ClassName FROM Table1 WHERE @EndTime BETWEEN F1 AND F2) OR ClassName IN (SELECT ClassName FROM Table1 WHERE F1>@BegTiem AND F2<@EndTime);
mohammad-gh
جمعه 25 مرداد 1387, 19:06 عصر
ممنون آقا مصطفی امتحان می کنم.
نظر دیگری که به فکر خودم میرسد اینه که من ابتدا کلاسها رو در یک دیتا تیبل بریزم و سپس با یک حلقه جستجو کنم و ببینم که این بازه ساعت در جدول با کلاسی تداخل دارد یا نه ! اما نمی دانم چطور می توانم بین دو فیلد که به صورت hh:mm و با فرمت استرینگ ذخیره شده اند این عمل را انجام دهم چون حتما باید آنها را به فرمت عدد دربیاورم .
به صورت صریح تر باید بگویم که چطور hh:mm را به hhmm تبدیل کنم تا بتوانم به صورت یک عددد با آن رفتار نمایم(بین ساعت ودقیقه : را حذف کنم)
mostafaaa
جمعه 25 مرداد 1387, 19:28 عصر
اون کدی که بالا برات نوشتم اول چک میکنه که ساعت شروع کلاس جدیدت بین یه بازه زمانی توی رکوردهای قبلی نباشه
SELECT ClassName FROM Table1 WHERE @BegTiem BETWEEN F1 AND F2
بعد چک میکنه که ساعت پایان کلاست هم توی یه بازه زمانی توی رکوردهای قبلی نباشه
SELECT ClassName FROM Table1 WHERE @EndTime BETWEEN F1 AND F2
و در آخر هم چک میکنه که توی بازه زمانی کلاس جدیدت کلاس توی رکورد های قبلی وجود نداشته باشه.
SELECT ClassName FROM Table1 WHERE F1>@BegTiem AND F2<@EndTime
اگه این کوئری هیچ مقداری رو برنگردونه یعنی اینکه هیچ تداخلی بین بازه زمانی جدیدت با رکوردهای قبلی وجود نداره و میتونی رکورد جدید رو اضافه کنی.
راستی حتما فیلدهای ساعت شروع و پایانت رو از نوع Date/Time تعریف کن تا به راحتی بتونی توشون جستجو کنی.
ali_md110
شنبه 26 مرداد 1387, 02:23 صبح
SELECT Table1.TimeA, Table1.Timeb
FROM Table1
WHERE (((Table1.TimeA)=[@DateA]) AND ((Table1.Timeb)=[@DateB]));
توی اکسس اجرا کن و جوابشو ببین در ضمن نوع فیلدها هم text هست
یه جدول بساز بنام table1با دو فیلد TimeAو TimeB این کوئری رو کپی کن جواب میده
میتونی یک فیلد bolen تعریف کنی و هرزمان حالت true داشت یعنی اینکه دز این زمان کلاس تعریف کرده ای
mostafaaa
شنبه 26 مرداد 1387, 09:24 صبح
SELECT Table1.TimeA, Table1.Timeb
FROM Table1
WHERE (((Table1.TimeA)=[@DateA]) AND ((Table1.Timeb)=[@DateB]));
توی اکسس اجرا کن و جوابشو ببین در ضمن نوع فیلدها هم text هست
یه جدول بساز بنام table1با دو فیلد TimeAو TimeB این کوئری رو کپی کن جواب میده
میتونی یک فیلد bolen تعریف کنی و هرزمان حالت true داشت یعنی اینکه دز این زمان کلاس تعریف کرده ای
سلام دوست عزیز فکر کنم منظور دوستمون رو متوجه نشدی.اگه ساعت شروع یک کلاس 6:00 باشه و ساعت پایانش 8:00 باشه و یه کلاس جدید از ساعت 5:30 تا 7:30 بخوای توی همون کلاس بزاری کوئری شما بقول خودتون فالس برمی گردونه ولی زمان کلاسها با هم تداخل داره.
البته شایدم من بد متوجه شدم
mohammad-gh
شنبه 26 مرداد 1387, 09:43 صبح
نه آقا مصطفی شما درست متوجه شدین ، با کد علی آقا تداخل بررسی نمی شه.
در مورد اون کاری که می خواستم انجام بدم نظری ندارید ، منظورم تبدیل hh:mm به hhmm است.
mostafaaa
شنبه 26 مرداد 1387, 10:08 صبح
نه آقا مصطفی شما درست متوجه شدین ، با کد علی آقا تداخل بررسی نمی شه.
در مورد اون کاری که می خواستم انجام بدم نظری ندارید ، منظورم تبدیل hh:mm به hhmm است.
یکی از راه هاش اینه
Label1.Text = CInt(Strings.Replace("12:34", ":", ""))
mohammad-gh
شنبه 26 مرداد 1387, 10:21 صبح
آقا دستت درد نکنه خوب بود ، این تابع رو چند بار امتحان کردم ولی فرمت اون رو درست نمی زدم.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.