รบกวนพี่ๆ ทุกคนด้วยค่ะ อยากได้ Code วิธีการ generate id ค่ะ เอาไปทำโปรเจค
สวัสดีครับ
แหมให้เขียนให้กันเลยเหรอครับ กล้าขอก็กล้าทำให้ครับแต่แนะนำ ให้ลองทำดูก่อนนะครับ แล้วติดตรงไหนก็ค่อยมาถามอีกทีจะดีกว่ามากครับ
เริ่มต้นเลยนะครับ
.เตรียมพร้อม
1. ไฟล์ ASP ชื่อ userid.asp ครับ
2.ฐานข้อมูล ไม่รู้น้องใช้อะไรนะครับ แต่ในตัวอย่างนี้พี่ใช้ ฐานข้อมูล เป็น Access ชื่อ DB.mdb มี Table ชื่อ staff แล้วก็จะทำงานกับ field staff_id นะครับ ใช้อย่างอื่นก็ปรับเอาเองนะครับ ตรงส่วนการ connection
+-----------------------------------+
| DB.mdb |
+-----------------------------------+
| staff-table |
+------------------------------------+
| Field | Type |
+------------------------------------+
| staff_id | num |
+-------------------------------------+
| date_in | date/time |
+--------------------------------------+
Coding
1.สร้าง Form ที่ส่งค่าครับ ในตัวอย่างนี้ คือ
<form method="POST" action="userid.asp">
<select size="1" name="select_T">
<option value="" selected>Please Select</option>
<option value="1">T1</option><option value="2">T2</option><option value="3">T3</option><option value="4">T4</option>
</select><p><input type="submit" value="Submit" name="btn1"></p>
</form>
2. ส่วนของโปรแกรม
2.1 ตรวจสอบค่าที่ส่งมาครับ ถ้าไม่มีการส่งค่ามาก็ไม่เข้าทำงาน (ในที่นี้ คือตรวจจับ select_T เพราะมีการส่งค่ามาแค่อย่างเดียวอ่ะ ) ถ้ามีตัวอื่นก็ แล้วแต่กรณีนะครับ
If Request.Form("select_T")<>"" Then
ทำงานนนน
เดี๋ยวจะยาวอ่านยากดูหัวข้อต่อไปครับ
Wiwat Keawsook
MSN : [email protected]
Yahoo : [email protected]
Google Talk : [email protected]
QQ : 67176
ICQ : 36338120
Date :
20 ม.ค. 2549 03:39:40
By :
Wiwat K.
ต่อ..
2.2 ติดต่อฐานข้อมูล โดยเอาวันที่ปัจจุบัน ไปตรวจสอบกับ field date_in ในฐานข้อมูลครับ
Set Conn=Server.CreateObject("ADODB.Connection")
Set RS=Server.CreateObject("ADODB.Recordset")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.Mappath("db.mdb")
SQL="SELECT * FROM staff WHERE date_in = #"& date &"#"
RS.Open SQL,Conn,1,3
2.3 ตรวจสอบ ว่ามีค่าออกมาหรือไม่ ถ้าไม่มีแสดงว่า เจ้าคนที่เพิ่มเข้ามาต้องได้ 001 ไปแน่ๆ ง่ายละ หุหุ
If RS.Eof Then
2.4 สร้างตัวแปรควบคุมเกี่ยวกับวันที่ ในกรณีนี้ ขอให้ลองตรวจสอบดูก่อนว่าได้ ค่าปีเป็น 06 หรือไม่เพราะบางเครื่อง Server อาจเก็บปี แต่ต่างกันครับ เช่น ไทย 2549 จะออกเป็น 49 ก้อได้ ให้ตรวจสอบดูก่อน โดยการ
Response.Write Right(year(date),2)
ส่วนค่า 6 หลักแรก มี การ Coding ดังนี้
IDdate=Right(year(date),2) '== สร้าง ID 1-2 ด้วยหลักหน่วยและหลักสิบของ ค.ศ.
If len(Month(date))=1 then '== สร้าง ID 3-4 ด้วย ค่าเดือนและเช็คหลักด้วย ถ้าีมีหลักเดียวก็ เติม 0
IDdate=IDdate & "0" & Month(date)
Else
IDdate=IDdate & Month(date)
End If
If len(day(date))=1 then '== สร้าง ID 5-6 ด้วย ค่าวันและเช็คหลักด้วย ถ้าีมีหลักเดียวก็ เติม 0
IDdate=IDdate & "0" & day(date)
Else
IDdate=IDdate & day(date)
End If
2.5 นำค่าที่ส่งมากับ Form มาแปะ กับ 001 ส่งให้ Field "Staff_id" ได้เลย
RS.AddNew
RS("staff_id")=IDdate & Request.Form("select_T") & "001"
RS("date_in")=date
RS.Update
จบไป อีก 1 ส่วน
เดี๋ยวดูอีกส่วนคือการเอาค่าไป แปะ ในกรณีที่ ไม่ใช่เป็น number แรกของวันครับ
Wiwat Keawsook
MSN : [email protected]
Yahoo : [email protected]
Google Talk : [email protected]
QQ : 67176
ICQ : 36338120
Date :
20 ม.ค. 2549 03:50:10
By :
Wiwat K.
ต่อครับ
มาถึง ส่วนที่ ตรวจสอบแล้ว user ในวันที่ปัจจุบันสมัครเข้ามาแล้ว ก็ทำงานดังนี้ครับ
1. ในส่วน 6 หลักแรก ที่เกี่ยวกับวันที่ คงเดิม
2. เพิ่ม Code ในส่วนการสร้างค่า ID ดังนี้
'=========ส่วนการสร้าง ID ในขอบข่าย จำนวน
IDstaff=cInt(Right(RS("staff_id"),3))+1 '=== นำค่า 3 ตัวของ ID มา แปลงเป็นเลขจำนวนเต็ม
If len(IDstaff)=1 Then
IDstaff="00" & IDstaff
ElseIf len(IDstaff)=2 Then
IDstaff="0" & IDstaff
End If
RS.AddNew
RS("staff_id")=IDdate & Request.Form("select_T") & IDstaff
RS("date_in")=year(date)+543&"/"&month(date)&"/"&day(date)
RS.Update
เรียบร้อย ครับ
Wiwat Keawsook
MSN : [email protected]
Yahoo : [email protected]
Google Talk : [email protected]
QQ : 67176
ICQ : 36338120
Date :
20 ม.ค. 2549 05:22:26
By :
Wiwat K.
สิ่งที่ต้องระวัง
1. วันที่ใน access เรื่อง ปีไทย พ.ศ. กับ ปี ค.ศ. สำหรับผม ต้องเพิ่ม 543 เพื่อ เป็นพ.ศ.เวลาเก็บ แต่เวลาค้นค่า ต้องค้นเป็น ค.ศ.
RS("date_in")=year(date)+543&"/"&month(date)&"/"&day(date) ตอนเก็บค่า
SQL="SELECT * FROM staff WHERE date_in = #"& year(date)&"/"&month(date)&"/"&day(date) &"#"
ตอน Query ค่า
2. เรื่องวันที่ เก็บ เป็น yyyy/mm/dd เพื่อป้องกัน Access จัดการกับค่าวันที่ของเราผิดๆ
3. Code ทั้งหมดสามารถ Download ได้ที่
http://www.mangkhud.com/exam/thaicreate/exam145.zip
Wiwat Keawsook
MSN : [email protected]
Yahoo : [email protected]
Google Talk : [email protected]
QQ : 67176
ICQ : 36338120
Date :
20 ม.ค. 2549 05:26:03
By :
Wiwat K.
ยังมีการดักค่าบางตัวครับ ที่ไม่ได้บอกไว้ ในกระทู้ เช่น
1. ตรวจสอบค่า ในฐานข้อมูลเทียบกับ ค่าลักษณะงาน เพื่อจะได้เพิ่มได้ถูกต้อง
2. เมื่อตรวจสอบถูกต้องนำค่าไปหาค่า max เพื่อนำมาเพิ่ม
ลองทำๆ ดูนะครับ ก็ดูในตัวอย่างจะทำไว้สมบูรณ์ แต่ ถ้าลองแก้ปัญหาด้วยตัวเองได้จะดีมากเลยนะครับ
Wiwat Keawsook
MSN : [email protected]
Yahoo : [email protected]
Google Talk : [email protected]
QQ : 67176
ICQ : 36338120
Date :
20 ม.ค. 2549 06:43:15
By :
Wiwat K.
ขอบคุณ พี่Wiwat K. มากเลยค่ะ ยังไงจะลองทำดูตามที่แนะนำนะค่ะ
Date :
20 ม.ค. 2549 09:15:29
By :
top
Load balance : Server 04