PDA

View Full Version : جلوگیری از ثبت دو مقدار در بانک اطلاعاتی به صورت محدوده ای



mitra285
شنبه 14 خرداد 1390, 18:17 عصر
با سلام خدمت دوستان عزیز
من دارم رو یه برنامه سیستم مرخصی کار می کنم به یه مشکلی بر خوردم از دوستان می خوام که منو راهنمایی کنن.
من تو این برنامه دوتا فیلد دارم که ساعت شروع و پایان مرخصی ساعتی رو درخودش ذخیره می کنه حالا می خوام اگر کاربر به اشتباه خواست برگه مرخصی ساعتی را برای یک فردی به صورت اشتباه ذخیره کنه یعنی مرخصی ساعتی در همون محدوده مرخصی ساعتی قبلی باشه رو هم ثبت نکنه بزارید یه مثال بزنم:پ

مثلا کد پرسنلی 850272 یک مرخصی ساعتی برای روز 01/03/1390 از ساعت 14 الی 16 براش ثبت می کنن

حالا می خوام اگر خواستن به اشتباه برای همین کد پرسنلی یک مرخصی ساعتی به چهار صورت زیر ثبت کنن سیستم جلوگری کنه:
1 ـ تاریخ 01/03/1390 از ساعت مثلا 13:55 الی 16:10 یا
2ـ تاریخ 01/03/1390 از ساعت 14:10 تا 15:55 ( کد خودم این کار دوم رو انجام می ده اما اولی رو نه).
3ـ تاریخ 01/03/1390 از ساعت مثلا 13:55 الی 15:55
4ـ تاریخ 01/03/1390 از ساعت مثلا 15:55 الی 16:10

یعنی منظور این هست که تو محدوده مرخصی ساعتی ثبت شده اول چیزی ثبت نشه.
در ضمن زمان در بانک اطلاعاتی SQL به صورت char ذخیره می شه مثلا 14:20 به صورت 1420 ذخیره می شه.

هر شرطی نوشتم جواب نداده . دوستان کسی راه حلی داره برای این مشکل ممنون می شم.

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


Dim sd AsString
Dim sd2 AsString
Dim sd3 AsString
Dim tm1 AsString
Dim tm2 AsString
sd = MaskedTextBox1.Text.Substring(0, 4) & MaskedTextBox1.Text.Substring(5, 2) & MaskedTextBox1.Text.Substring(8, 2)
sd2 = MaskedTextBox2.Text.Substring(0, 4) & MaskedTextBox2.Text.Substring(5, 2) & MaskedTextBox2.Text.Substring(8, 2)
tm1 = MaskedTextBox4.Text.Substring(0, 2) & MaskedTextBox4.Text.Substring(3, 2)
tm2 = MaskedTextBox5.Text.Substring(0, 2) & MaskedTextBox5.Text.Substring(3, 2)
s1 = conString
Con = NewSqlConnection(s1)
Con.Open()
s2 = "select * from Prs_Morkhasi where az_Tarikh <='" & sd & "' and ta_Tarikh >='" & sd2 & "' and Personel_ID='" & TextBox1.Text & "' and KhedmatStatus_ID='04' and asSaat <='" & tm1 & "' and taSaat >='" & tm2 & "'"
Da = NewSqlDataAdapter(s2, Con)
Dim Dt AsNewDataTable
Da.Fill(Dt)
If Dt.Rows.Count <> 0 And ComboBox1.SelectedValue = "04"Then
MsgBox("برای این فرد در این تاریخ مرخصی ساعتی ثبت شده است", MsgBoxStyle.Critical, "کاربر محترم")
nshow()
Fill_Grid()
Close_con(conString)
Exit Sub
EndIf
EndIf