View Full Version : نوشتن یک شرط خیلی مشکل در بانک اطلاعاتی
parisa.s
پنج شنبه 11 شهریور 1389, 13:00 عصر
سلام بچه ها
پروژه ی آخر ترمه من یک سیستم مکانیزه ی هتلداری
الان دارم واسه رزروش برنامه مینویسم
من میخوام بگم برای رزرو جدید بررسی کنه اگر کسه دیگه ای اتاق مورد نظر رو رزرو کرده پس بررسی کنه
تاریخ شروع اقامت اگر مساوی بگه اتاق پره
اگر بزرگتره بررسی کنه که این رزرو جدید اگه تا روزی که شروع اقامت نفره قبلیه پس اتاق رو بهش بدن
و بالعکس اگر تا تاریخ شروع اقامت رزرو جدید نفر قبلی از هتل میره اتاق رو رزرو کنه
If Adodc1.Recordset.RecordCount > 0 Then
If Adodc1.Recordset.Fields!por = True Then
a = MsgBox("otagh por ast")
End If
If Adodc1.Recordset.Fields!rezerv = True Then
@@@@@@@@ If (frmrezerv.Adodc1.Recordset.Fields!tarikheshoroegh amat = frmrezerv.txtshoro.Text) Then
a = MsgBox("dar in tarikh shakhse digari shoro be eghamat dar in otagh ra mikonad")
End If
If (frmrezerv.Adodc1.Recordset.Fields!tarikheshoroegh amat < frmrezerv.txtshoro.Text) Then
tarikhekhoroj = DateAdd("y", Val(frmrezerv.Adodc1.Recordset.Fields!modateghamat ), (frmrezerv.Adodc1.Recordset.Fields!tarikheshoroegh amat))
If tarikhekhoroj > frmrezerv.txtshoro.Text Or tarikhekhoroj = frmrezerv.txtshoro.Text Then
a = MsgBox("ta tarikhe eghamate jadid otagh khali nemishavad")
End If
If tarikhekhoroj < frmrezerv.txtshoro.Text Then
frmrezerv.lblroom.Caption = Adodc1.Recordset.Fields!shomareotagh
Adodc1.Recordset.Fields!rezerv = True
End If
End If
If (frmrezerv.txtshoro.Text) > (frmrezerv.Adodc1.Recordset.Fields!tarikheshoroegh amat) Then
tarikhkhoroj = DateAdd("y", Val(frmrezerv.txtmodat.Text), frmrezerv.txtshoro.Text)
If (tarikhkhoroj > frmrezerv.Adodc1.Recordset.Fields!tarikheshoroegha mat) Or (tarikhkhoroj = frmrezerv.Adodc1.Recordset.Fields!tarikheshoroegha mat) Then
a = MsgBox("tarikhe eghamate jadid ba moshtariye ghabli tadakhol darad")
End If
If (tarikhkhoroj < frmrezerv.Adodc1.Recordset.Fields!tarikheshoroegha mat) Then
frmrezerv.lblroom.Caption = Adodc1.Recordset.Fields!shomareotagh
Adodc1.Recordset.Fields!rezerv = True
End If
End If
End If
Else
frmrezerv.lblroom.Caption = Adodc1.Recordset.Fields!shomareotagh
Adodc1.Recordset.Fields!rezerv = True
End If
اینو نوشتم ولی بچه ها وقتی برنامه رو اجرا میکنم تو همون شرطی که @@ گذاشتم وایمیسه
چوا وقتی میخوام رزرو جدید بزنم addnew که کردم رکورد جاریم هم همونه
البته علت رو از خودم گفتم
بچه ها خاهش میکنم زود جواب بدین
کلی راه مونده تا این پروژه تموم شه
خواهش میکنم زود جواب بدین:گریه::ناراحت::افسرده:
asemaneab
پنج شنبه 11 شهریور 1389, 13:27 عصر
وایمیسه یعنی چی؟ خطایی حرفی چیزی...
یه break سر همون خط بذار ببین اون موقع که به اونجا میرسه مقدار داده هات درستند(تاریخ شروع اقامت و متن txtshoro)؟
کجا addnewکردی؟
parisa.s
پنج شنبه 11 شهریور 1389, 14:03 عصر
وایمیسه یعنی چی؟ خطایی حرفی چیزی...
یه break سر همون خط بذار ببین اون موقع که به اونجا میرسه مقدار داده هات درستند(تاریخ شروع اقامت و متن txtshoro)؟
کجا addnewکردی؟
break گذاشتم دیدم که txtshoro , تاریخ شروع اقامت همیشه مساوی میشه
وایمیسه یعنی همیشه اون شرط درسته و دستور اون شرط اجرا میشه
mds_boy
پنج شنبه 11 شهریور 1389, 14:43 عصر
If Adodc1.Recordset.Fields!rezerv = True Then
@@@@@@@@ If (frmrezerv.Adodc1.Recordset.Fields!tarikheshoroegh amat = frmrezerv.txtshoro.Text) Then
a = MsgBox("dar in tarikh shakhse digari shoro be eghamat dar in otagh ra mikonad")
End If
شرطه بالا را به شرطه پایین تغییر دهید ، کلا محتوایی فکر کنم شرطتون مشکل داشته باشه.
اول برید فلوچارتی فارسی برای آن بکشید، تا بیشتر برنامه ی خودتان را درک کنید.
If Adodc1.Recordset.Fields!rezerv = True Then
dim TEtmam as string
TEtmam=frmrezerv.Adodc1.Recordset.Fields!tarikheEt mam amat
If (frmrezerv.Adodc1.Recordset.Fields!tarikheshoroegh amat >= frmrezerv.txtshoro.Text and frmrezerv.Adodc1.Recordset.Fields!tarikheEtmam amat<=frmrezerv.txtshoro.Text) Then
MsgBox ("In otagh por Ast Va Tarikhe Etmame Rezerv An :" & TEtmam & " Mibashad")
end if
parisa.s
پنج شنبه 11 شهریور 1389, 14:59 عصر
کسی نمیخواد کمکم کنه مشکلم حل شه
خواهش میکنم اگه میتونین و میشه جوابمو بدین که چیکار باید بکنم
parisa.s
پنج شنبه 11 شهریور 1389, 15:06 عصر
If Adodc1.Recordset.Fields!rezerv = True Then
@@@@@@@@ If (frmrezerv.Adodc1.Recordset.Fields!tarikheshoroegh amat = frmrezerv.txtshoro.Text) Then
a = MsgBox("dar in tarikh shakhse digari shoro be eghamat dar in otagh ra mikonad")
End If
شرطه بالا را به شرطه پایین تغییر دهید ، کلا محتوایی فکر کنم شرطتون مشکل داشته باشه.
اول برید فلوچارتی فارسی برای آن بکشید، تا بیشتر برنامه ی خودتان را درک کنید.
If Adodc1.Recordset.Fields!rezerv = True Then
dim TEtmam as string
TEtmam=frmrezerv.Adodc1.Recordset.Fields!tarikheEt mam amat
If (frmrezerv.Adodc1.Recordset.Fields!tarikheshoroegh amat >= frmrezerv.txtshoro.Text and frmrezerv.Adodc1.Recordset.Fields!tarikheEtmam amat<=frmrezerv.txtshoro.Text) Then
MsgBox ("In otagh por Ast Va Tarikhe Etmame Rezerv An :" & TEtmam & " Mibashad")
end if
دوسته عزیز اگز این تکه کد رو که گذاشتم بخونید میبینید که من این کارو انجام دادم
ولی نه اینطور که شما نوشتید من فیلدی به اسم پایان اقامت ندارم
من فقط تاریخ شرو اقامت و مدت اقامت مشتری رو دارم که میخوام تاریخ اتمام اقامت رو داخل برنامه و کد نویسی به دست بیارم
این کارو کردم اگر نگاه کنید
مشکل من اینه که نمیدونم چه جوری بین اطلاعات داخل جدولم و این تکست باکسم مقایسه انجام بدم
امیدوارم بنونین کمکم کنین دوست عزیز
از توجهتون ممنون
بچه ها وقتم کمه
خواهش می کنم زودتر کمک کنین به جواب برسم
:ناراحت::افسرده:
parisa.s
پنج شنبه 11 شهریور 1389, 16:32 عصر
من تونستم با فیاتر این مقایسه رو انجام بدم
ولی تا وقتی درست جواب میده که سال و ماه تاریخ هام یکی باشه
بچه ها چه جوری بهش بفهمونم که 2010/5/5 کوچکتره از 2010/10/2؟
تو رو خدا این یکی رو زود جواب بدین
خواهههههههههش میکنم
parisa.s
پنج شنبه 11 شهریور 1389, 17:29 عصر
بچه ها کسی نمیخواد کمکم کنه
خواهش می کنم
زودتر کمک کنین از این قسمت برنامم تموم بشم
mds_boy
پنج شنبه 11 شهریور 1389, 22:42 عصر
دوسته عزیز وقتی فردی اتاقی رزرو میکنه مگه نباید تاریخ شروع و تاریخ پایان داشته باشه !!!؟؟؟
اگر فیلدی به عنوانه تاریخه پایانه رزرو ندارید برید بانکتون رو دستکاری کنید، یا که مدته اقامت رو به تاریخه اتمام تغیر نام دهید و با مقایسه دو تاریخ راحت میتونید بعدا تعداده روزه اقامت رو بدست آورید.
این کدی که بالا نوشتم بهترین روش بود، اگه خواستی به لینکهای پایین هم سر بزن ببین کارت راه میافته !:
http://www.barnamenevis.org/forum/showthread.php?t=124417
http://www.barnamenevis.org/forum/showthread.php?t=48835
parisa.s
جمعه 12 شهریور 1389, 13:34 عصر
دوسته عزیز وقتی فردی اتاقی رزرو میکنه مگه نباید تاریخ شروع و تاریخ پایان داشته باشه !!!؟؟؟
اگر فیلدی به عنوانه تاریخه پایانه رزرو ندارید برید بانکتون رو دستکاری کنید، یا که مدته اقامت رو به تاریخه اتمام تغیر نام دهید و با مقایسه دو تاریخ راحت میتونید بعدا تعداده روزه اقامت رو بدست آورید.
این کدی که بالا نوشتم بهترین روش بود، اگه خواستی به لینکهای پایین هم سر بزن ببین کارت راه میافته !:
http://www.barnamenevis.org/forum/showthread.php?t=124417
http://www.barnamenevis.org/forum/showthread.php?t=48835
دوست عزیز ممنونم که قصد دارین کمکم کنید تا مشکلم حل بشه
ولی یا من منظوره شما رو متوجه نمیشم یا شما
دوستم من داخل برنامم با تاریخ خروج مشکلی ندارم با تابع dateadd تاریخ خروج رو برام درست بدست میاره
مشکل من اینه که میخوام مقایسه بین تاریخ هام انجام بدم که با علامت ها کوچکتر و بزرگتر که این کارو انجام میدم درست جواب نمیده
ممنون میشم از همه ی استادای برنامه نویسی در این سایت که کمکم کنن
از شما هم ممنون
HjSoft
جمعه 12 شهریور 1389, 13:56 عصر
فکر می کنم دوتا ره واسه مقایسه داشته باشید :
1- استفاده از اکتوایکس MBT راجع به تاریخ
2- استفاده از خود اس کیو ال برای مقایسه . ( من از این روش که استفاده کردم راحت مقایسه می کنه )
parisa.s
جمعه 12 شهریور 1389, 14:06 عصر
[quote=HjSoft;1086089]فکر می کنم دوتا ره واسه مقایسه داشته باشید :
1- استفاده از اکتوایکس MBT راجع به تاریخ
2- استفاده از خود اس کیو ال برای مقایسه . ( من از این روش که استفاده کردم راحت مقایسه م
دوست عزیز میشه خواهش کنم یه مثال برام بذارین
با اس کیو ال چطور مقایسه کنم
ممنونم
M.T.P
جمعه 12 شهریور 1389, 14:17 عصر
وقتی تاریخ شروع اقامت و اتمام اقامت رو داشته باشین با فیلتر کردن یا انتخاب رکوردهای جدول بین این دو تاریخ میشه پی به رزرو اتاق ها برد.
Dim DateFrom As String
Dim DateTo As String
DateFrom = "1389/01/01"
DateTo = "1389/06/01"
If Rs.State = 1 Then Rs.Close
Rs.Open "Select * From Tabel Where DateStart > " & DateFrom & " And DateEnd < " & DateTo
خب دراین حالت اگه Recordcount صفر بود یعنی اینکه رزرو در کار نیست در غیر این صورت پیغام میدید که اتاق رزرو شده.
حتی میتونید یک And دیگه در دستور SQL بالا اضافه کنید و به یک اتاق خاص اشاره کنید.(که باید فیلد شماره اتاق رو هم اضافه کنید.)
موفق باشید.
M.T.P
جمعه 12 شهریور 1389, 14:22 عصر
شاید تو پست بالا متوجه منظورم نشید.
یه نمونه امروز براتون میزارم.
parisa.s
جمعه 12 شهریور 1389, 14:29 عصر
شاید تو پست بالا متوجه منظورم نشید.
یه نمونه امروز براتون میزارم.
دوست عزیز شاید واقعا متوجه نشدم
ولی میخواستم یه بار دیگه الگوریتمه شرطمو بذارم تا مرور کنین
ممنون
1-اگر اتاق پر است که امکان رزرو به هیچ وجه وجود ندارد
2-اگر اتاق رزرو شده است بررسی کنه که
1-2 اگر تاریخ رکورد جدید آیا مساوی تاریخ رکورد قبلی است که یعنی اتاق برای اون تاریخ پره و امکان رزرو نداره
2-2 اگر تاریخ رکورد جدید کوچکتر از تاریخ رکورد قبلی است( یعنی قبل از تاریخ موجود)باید بررسی کنه که آیا تاریخ خروج رکورد جدید با رکورد قبلی تداخل پیدا میکند که در اینصورت نمیتونه اتاق رو رزرو کنه و اگر قبل از تاریخ شروع اقامت رکورد قبلی اقامت رکورد جدید تمام میشود پس بتونه اتاق رو رزرو کنه
3-2اگر تاریخ رکورد قبلی کوچکتر از تاریخ رکورد جدید است( یعنی قبل از تاریخ جدید)باید بررسی کنه که آیا تاریخ خروج رکورد قبلی با رکورد جدید تداخل پیدا میکند که در اینصورت نمیتونه اتاق رو رزرو کنه و اگر قبل از تاریخ شروع اقامت رکورد جدید اقامت رکورد قبلی تمام میشود پس بتونه اتاق رو رزرو کنه
asemaneab
جمعه 12 شهریور 1389, 14:47 عصر
از تابع datediff نمی تونی استفاده کنی؟
parisa.s
جمعه 12 شهریور 1389, 14:56 عصر
از تابع datediff نمی تونی استفاده کنی؟
فکر نمیکنم
چون این تابع اختلاف دو تا تاریخ رو میگه که من با این اختلاف و طبق الگوریتمی که گفتم نمیتونم کاری بکنم
:عصبانی++::افسرده::گریه::نارا ت::عصبانی++::گریه:
asemaneab
جمعه 12 شهریور 1389, 15:08 عصر
اگه اشتباه نکنم مشکل شما مقایسه دو تا تاریخه
Datediff("d",d1,d2)
طبق تابع بالا اگر خروجی 0 باشه یعنی دو تا تاریخ مساوی اند.
اگر خروجی مثبت باشه یعنی d1 زودتره
اگر خروجی منفی باشه یعنی d2 زودتره
مگه همینو نمی خوای؟
parisa.s
جمعه 12 شهریور 1389, 16:24 عصر
اگه اشتباه نکنم مشکل شما مقایسه دو تا تاریخه
Datediff("d",d1,d2)
طبق تابع بالا اگر خروجی 0 باشه یعنی دو تا تاریخ مساوی اند.
اگر خروجی مثبت باشه یعنی d1 زودتره
اگر خروجی منفی باشه یعنی d2 زودتره
مگه همینو نمی خوای؟
دقیقا همینو میخواستم
دستت درد نکنه دوست عزیز
خیلی ازتون ممنونم
M.T.P
جمعه 12 شهریور 1389, 16:37 عصر
این برنامه هتل رو براتون نوشنم ببینید چطوره.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.