|
|
|
C# จะเช็คค่าวันที่จากฐานข้อมูล แล้วนำมาแสดงค่าคับ มัน Error คับ |
|
|
|
|
|
|
|
Code (C#)
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
//sb.Remove(0, sb.Length);
sb = new StringBuilder();
sb.Append("SELECT Human.HID,Human.FullName,WorkType.WorkTypeName, ");
sb.Append(" Human.Telephone,Human.FirstDate,Humanschedule.Date,Humanschedule.HID, ");
sb.Append(" Humanschedule.Time_IN , Humanschedule.Time_OUT");
sb.Append(" FROM Human,WorkType,Humanschedule");
sb.Append(" WHERE (Human.WID = WorkType.WID)");
sb.Append(" AND (Human.HID=Humanschedule.HID)");
sb.Append(" AND (Human.IsLeave='0')");
sb.Append(" AND (Humanschedule.Date=@Date)");
string sqlSearch;
sqlSearch = sb.ToString();
com = new SqlCommand();
com.Parameters.Clear();
com.Parameters.Add("@Date", SqlDbType.DateTime).Value = dateTimePicker1.Value;
com.CommandText = sqlSearch;
com.CommandType = CommandType.Text;
com.Connection = Conn;
dr = com.ExecuteReader();
if (dr.HasRows)
{
DataTable dtHuman = new DataTable();
dtHuman.Load(dr);
//dgvHumanList.Columns.Clear();
colName.DataPropertyName = "Fullname";
ColPosition.DataPropertyName = "WorkTypeName";
colTel.DataPropertyName = "telephone";
colStart.DataPropertyName = "FirstDate";
colIn.DataPropertyName = "Time_IN";
colOut.DataPropertyName = "Time_OUT";
dgvHumanList.DataSource = dtHuman;
dgvHumanList.DataSource = dtHuman;
int countdt = dtHuman.Rows.Count;
//MessageBox.Show(Convert.ToString(countdt));
for (int i = 0; i <= countdt - 1; i++)
{
string dateStr = dtHuman.Rows[i]["FirstDate"].ToString();
dateStr = Convert.ToDateTime(dateStr).ToString("yyyyMMdd"); // ใช้การจัดรูปแบบสตริงแทน
//MessageBox.Show(dateStr);
string sub1 = dateStr.Substring(0, 4);
string sub2 = dateStr.Substring(4, 2);
string sub3 = dateStr.Substring(6, 2);
int sub4 = Convert.ToInt32(sub1) - 543;
int sub5 = Convert.ToInt32(sub2);
int sub6 = Convert.ToInt32(sub3);
//MessageBox.Show(Convert.ToString(sub4));
//MessageBox.Show(Convert.ToString(sub5));
//MessageBox.Show(Convert.ToString(sub6));
DateTime myDate = new DateTime(sub4, sub5, sub6);
DateTime ToDate = DateTime.Now;
DateDifference dDiff = new DateDifference(myDate, ToDate);
//MessageBox.Show(Convert.ToString(dDiff));
string totalworkage;
totalworkage = Convert.ToString(dDiff);
// MessageBox.Show(totalworkage);
dgvHumanList.Rows[i].Cells["ColWorkAge"].Value = totalworkage;
RunSchedule();
}
CountWorkTime();
fommatdgv();
}
else
{
MessageBox.Show("ไม่มีข้อมุลตารางงานวันนี้", "ผิดพลาด", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
dr.Close();
}
}
คือเลือกวันที่ตรงกับที่มีในฐานข้อมูลแล้วคับ แต่มันก็ยังขึ้นไม่มีข้อมูลตารางงานวันนี้น่ะคับ ไม่ทราบว่าผมใส่เงื่อนไข sql ผิดรึป่าวคับ
Tag : .NET, C#, VS 2005 (.NET 2.x)
|
|
|
|
|
|
Date :
2012-02-27 05:32:22 |
By :
maxxana |
View :
1433 |
Reply :
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คุณลองเอา Query คุณไปทดสอบดูครับ โดยสมมุติวันที่กเลือกจริง ๆ ดูว่ามันมี Result ออกมาตามที่ต้องการหรือไม่ ถ้าไม่มีแสดงว่า Query คุณผิดครับ หรือไม่ลองตรวจสอบพวก Format ของ DateTime ด้วยครับ
|
|
|
|
|
Date :
2012-02-27 14:27:50 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คับ ขอบคุณมากคับ เอ่อแล้วเราสามารถตั้ง format ของ datetime ใน sql server ให้รับค่าแต่วันที่ แบบไม่เอา time ได้ไหมคับ
ต้องทำอย่างไรคับ
|
|
|
|
|
Date :
2012-02-28 17:06:43 |
By :
maxxana |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้และคับ ขอบคุณมาก ๆ เลยคับ
|
|
|
|
|
Date :
2012-02-28 17:12:01 |
By :
maxxana |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตกลงแก้ยังไงครับ
|
|
|
|
|
Date :
2012-02-28 17:18:25 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|