# Native Code > برنامه نویسی در 6 VB >  مقایسه تاریخ بین چند تاریخ در چند رکورد

## vb341

با سلام 
من یک برنامه دارم که تو اون شماره پرسنلی نفرات با تاریخ رفت و برگشت در اون ثبت میشه 
حالا زمانیکه یک نفر چندبار ماموریت میره برنامه باید چک کنه که تاریخ تکراری نباشه و از همه مهمتر اینکه تاریخ ماموریت سوم و یا چهارم با تاریخهای قبلی تکراری نباشه و یا بین اون تاریخها تداخل نداشته باشه . تکراری نبودن تاریخ که حله . ولای اینکه چطور باید چک کنم که تاریخ ماموریتهای بعدی با تاریخهای قبلی تداخل نداشته باشه نمی دونم .

----------


## vb341

یه نکته خدمت دوستان عرض کنم و اون اینکه فرض کنید تاریخ شروع ماموریت یکنفر 84/1/1 و پایان اون 84/3/2 باشه و اگر ماموریت دیگری خواست ثبت بشه تاریخ شروع و پایان نباید تکرار بشه و از طرفی این نفر از 84/2/2 هم نمیتونه به یک ماموریت دیگه رفته باشه . چون تاریخ آخری بین دو تاریخ اول قرار داره . و از طرفی  هر نفر به تعداد N  دفعه میتونه ماموریت بره بشرط اینکه تاریخ شروع و پایان یکی نباشه و از طرفی تاریخ بین تاریخ شروع و پایان تا یک تاریخ دیگه باشه

----------


## vb341

دوستان خواهشن کمک کنید

----------


## hamid2002ir

باید از دستور max تئ کوری استفاده کنی
مثلا
Select Max(Date) as MaxDate from Table
با این دستور بیشترین تار&#17406ع و پایان ماموریت را توی یک رکورد %1ا 1/1/84 حالا شما باید چک کنی تاریخی شروع ماموریت بعدی از این تاریخ کوچکتر یا مساوی نباشه
به نظر من برای راحتی کارت هم باید شروع و پایان ماموریت را توی یک رکورد قرار نده برای هر کدوم یک رکورد درست کن چون من یک برنامه حضور و غیاب نوشته م و دیدم بهترین روش اینه

----------


## vb341

دوست عزیز یعنی شما میگی که اول تاریخ رفت ماموریت رو تو رکورد ذخیره کنم و بعد تاریخ برگشت اونو تو یه رکورد دیگه ذخیره کنم ؟در ضمن من بانک مربوطه رو برای مثال میزارم اگر فرصت کردین نگاه کنین و نظر بدین . نکته مهم فقط تو تداخل پیدا نکردن تاریخ رفت و برگشت می باشد

----------


## hamid2002ir

امیدوارم مشکلت با این برنامه حل بشه

----------


## vb341

از توجهتون ممنون . تست میکنم

----------


## vb341

دوست عزیز روش شما برا یک تاریخ بود . ولی من یک تاریخ رفت و یک تاریخ برگشت دارم که هر دو در یک رکورد ثبت میشن . و بعد از اینکه نفر دو الی سه بار ماموریت رفت باید سیستم چک کنه که اگر مثلا از تاریخ 84/1/2 تا 84/1/6 رفته  دیگه این نفر نمیتونه از 84/1/5  یه ماموریت دیگه رفته باشد و تاریخ تداخل نداشته باشه

----------


## hamid2002ir

شما کافیه یکی از فیلد های تاریخ چه رفت چه برگشت را چک کنید اگر وجود هر کدوم از رکورد ها پیدا بشه یعنی توی اون تاریخ ها قبلا به ماموریت رفته .
در ضمن شما توی یک رکورد هم می تونین جستجو کنین مثلا
Selcect * from Table where date1 < #84/1/1# Or date2 > #5/1/84#
حالا اگر رکوردی پیداشد قبلا ماموریت رفته اگر هم نشد یعنی توی این تاریخ ها وارد شده ماموریت نرفته اگر خواستی برنامه اش را بنویسم

----------


## vb341

اقا حمید دستت درد نکنه . من نمونه بانک برنامه رو بالا گذاشتم . اگر نگاه کنی متوجه میشی . فرمایش شما موقعی امکان داره که دقیقا همون تاریخ تکرار بشه . ولی اگه نفر 4 بار  ماموریت رفته باشه مثلا از 84/1/1 تا 84/1/3 و ماموریت دیگه از 84/1/12 الی 84/1/16 بوده باشه . حالا اگر برای بار سوم خواست ماموریت بره و تو لوحه ماموریت تاریخ 84/1/2 الی 84/1/10 زد و یا  از 84/1/6 الی 84/1/15 رفت چون هر دو تاریخ با تاریخ های اولی از لحاظ رفت و برگشت تداخل دارن برنامه قبول نکنه .

----------


## vb341

در ضمن تداخل اونجاست که ماموریت سوم از 84/1/2 شروع شده که بین تاریخ ماموریت اوله و ماموریت چهارم هم از 84/1/6 شروع شده و تاریخ پایان اون یعنی 84/1/15 با تاریخ ماموریت دوم تداخل داره

----------


## vb341

دوستان من نمونه برنامه رو گذاشتم . اگر کسی راه حلی به ذهنش رسید خواهشن به دلیل حساس بودن کار برای من  و نیاز فوری سریعا جواب بدین . هر کی مشکل منو حل کنه یه شیرینی توپ پیش من داره !!!

----------


## vb341

در ضمن فولدر مربوطه رو تو درایو e کپی کنین

----------


## vb341

دوستان کمک کنید

----------


## mahdi_farhani

دوست عزیز این تیکه برنامه رو چک کن ببین چطور 
من همه حالتهای به ذهنم نه رسید چند تا حالت چک کردم جواب داد ...
یه مشکل کوچیک که داره حقیقت وقتشو نداشتم اینم درست کنم
تاریخ برگشت اگه کوچکتر از تاریخ رفت باشه هم چک میکنه اینو دیگه خودت درست کن ....

Dim Start_Date As Boolean
Dim End_Date As Boolean
Dim Check As Boolean

For i = 0 To Val(Text2.Text)
    If (MaskEdBox1.Text < List1.List(i)) Or (MaskEdBox1.Text > List2.List(i)) Then
        Start_Date = True
    Else
        MsgBox "Warning"
        Start_Date = False
        Exit Sub
    End If
    If (MaskEdBox2.Text < List1.List(i)) Or (MaskEdBox2.Text > List2.List(i)) Then
        End_Date = True
    Else
        MsgBox "Warning"
        End_Date = False
        Exit Sub
    End If
Next
If Start_Date = True And End_Date = True Then MsgBox "Ok"

----------


## vb341

از توجه شما ممنون . چک کنم ببینم جواب میده یا نه

----------


## vb341

آقای فرهانی از لطفی که کردین بینهایت ممنون . مشکل حل شد . اگر در زمینه اکتیوایکس برا وی بی و دات نت چیزی خواستی برای تلافی و قدردانی من در خدمتم . یه سری چیزهای خوب دارم . برای تماس صبحا با شماره 09173688850  تماس بگیر

----------


## mahdi_farhani

مرسی ... امیدوارم بتونم بازم از این کارها بکنم ........

----------


## vb341

دستت درد نکنه . به هر حال یه سری چیزهای بدرد بخور برا وی بی 6 و وی بی دات نت دارم . اگر دوست داشتی تماس بگیر یا Pm بده

----------

