กระทู้เก่าบอร์ด อ.Yeadram
2,422 3
URL.หัวข้อ /
URL
ฟังก์ชั่นสร้างชุดอักษรเรียงลำดับ
โดยปกติ ในชีวิตประจำวันของพนักงานฝ่ายบัญชี จะรู้จักคำนี้ดีครับ
Batch Number และ Serial Number ครับ ซึ่งเป็นเรื่องของการเก็บสต็อกสินค้า
Batch Number เป็นเรื่องของการเก็บสต็อกแบบ First In First Out (FiFo)
ส่วน Serial Number เป็นการเก็บสต็อกแบบตัวเดียวอันเดียว (อิอิ ศัพท์ทางบัญชีเค้าเรียกอะไรก็ไม่รู้) ก็คือส่วนใหญ่จะเก็บรหัสแทนตัวสินค้าเพียง 1 ชิ้น เพื่อประโยชน์ในการส่งซ่อม ส่งเคลม หรือระบุที่มาที่ไป สินค้า
เช่น คอมพิวเตอร์ , มอนิเตอร์ , เครื่องแฟ็กซ์เป็นต้น (กรณีในหนังฝรั่ง ถ้ามีการตรวจสอบพบว่า เอกสารลึกลับส่งมาจากแฟ็กซ์รุ่นนี้ยี่ห้อนี้ เค้าจะตามสืบเอาตาม เลข serial กันเลย ว่าล็อตนี้มีกี่ซีเรียล แต่ละซีเรียลขายไปให้ลูกค้าคนใด)
ทีนี้มาว่ากันถึงส่วนที่มันเกี่ยวกับฟังก์ชั่นของผมดีกว่า อิอิ ชักนอกเรื่องไปไกลแล้ว
ลักษณะ ของ Serial Number หรือ Batch No. จะมีการรันอย่างมีรูปแบบ ตัวอักขระแต่ละตำแหน่งมักจะมีความหมายของมัน ซึ่งนั่นหมายความว่า ตัวอักขรที่ใช้ รันนิ่งจริงๆ อาจจะไม่ได้อยู่ที่ตำแหน่งสุดท้ายของมัน เช่น ปริ๋นท์เตอร์ cannon 7 เครื่อง มี serial ดังนี้ (สมมติ)
xyckw0208
xyckx0208
xycky0208
xyckz0208
xycla0208
xyclb0208
xyclc0208
ถ้าสังเกตให้ดี จะเห็นว่า เครื่องทั้ง 7 นี้ มี serial ต่อกัน แต่จุดที่รันไม่ได้อยู่ตำแหน่งสุดท้าย และอักขระที่ใช้ รัน ไม่ใช่ตัวเลข
การเขียนโปรแกรม เพื่ออำนวยความสะดวก ให้ user กรอกข้อมูล serial ที่ เข้า-ออก เป็นล็อตใหญ่ๆ และมี ซีเรียลที่ต่อเนื่องกันแบบนี้ ให้โค้ดช่วยรันให้ แทนที่จะให้ user กรอกเองทั้งล็อต น่าจะเป็นการดีใช่มั้ยครับ ซึ่งมีผลทำให้ความแน่นอนมีมากกว่า ป้องกัน error by user ได้อีกทาง
อะ ทีนี้เกริ่นมาเยอะแล้ว มาดูฟังก์ชั่นที่ผม คิดขึ้นมากันดีกว่า โดยผมไม่รู้ว่ามีของคนอื่นเค้าเขียนกันไว้บ้างหรือเปล่านะครับ ผมคิดๆ แล้วก็เขียนขึ้นมาเลย พอดีที่ทำงานต้องใช้ ซึ่งถ้าท่านอื่นๆ มีโค้ดที่สั้นกว่า ไวกว่า สะดวกกว่า อย่าลืมแนะนำบ้างนะครับ
หรือเห็นว่า ฟังก์ชั่นที่จะให้ไปนี้ ยังมีจุดบกพร่องตรงไหน ช่วยแก้ไขด้วยนะครับ
การวางกระบวนงาน คงไม่ขออธิบายเพิ่มนะครับ แล้วแต่ท่านจะวางกันเอาเอง แล้วพอถึงจะที่จะต้องการรัน ค่อยเรียกใช้ฟังก์ชั่นที่ว่านี้เอาครับ (สรุปง่ายๆ คือแล้วแต่ท่านจะเอาไปดัดแปลงเข้ากับโค้ดของท่านเองนะครับ) ... ตัวฟังก์ชั่นขอไปวางไว้ใน reply ต่อไป?ะครับ
Batch Number และ Serial Number ครับ ซึ่งเป็นเรื่องของการเก็บสต็อกสินค้า
Batch Number เป็นเรื่องของการเก็บสต็อกแบบ First In First Out (FiFo)
ส่วน Serial Number เป็นการเก็บสต็อกแบบตัวเดียวอันเดียว (อิอิ ศัพท์ทางบัญชีเค้าเรียกอะไรก็ไม่รู้) ก็คือส่วนใหญ่จะเก็บรหัสแทนตัวสินค้าเพียง 1 ชิ้น เพื่อประโยชน์ในการส่งซ่อม ส่งเคลม หรือระบุที่มาที่ไป สินค้า
เช่น คอมพิวเตอร์ , มอนิเตอร์ , เครื่องแฟ็กซ์เป็นต้น (กรณีในหนังฝรั่ง ถ้ามีการตรวจสอบพบว่า เอกสารลึกลับส่งมาจากแฟ็กซ์รุ่นนี้ยี่ห้อนี้ เค้าจะตามสืบเอาตาม เลข serial กันเลย ว่าล็อตนี้มีกี่ซีเรียล แต่ละซีเรียลขายไปให้ลูกค้าคนใด)
ทีนี้มาว่ากันถึงส่วนที่มันเกี่ยวกับฟังก์ชั่นของผมดีกว่า อิอิ ชักนอกเรื่องไปไกลแล้ว
ลักษณะ ของ Serial Number หรือ Batch No. จะมีการรันอย่างมีรูปแบบ ตัวอักขระแต่ละตำแหน่งมักจะมีความหมายของมัน ซึ่งนั่นหมายความว่า ตัวอักขรที่ใช้ รันนิ่งจริงๆ อาจจะไม่ได้อยู่ที่ตำแหน่งสุดท้ายของมัน เช่น ปริ๋นท์เตอร์ cannon 7 เครื่อง มี serial ดังนี้ (สมมติ)
xyckw0208
xyckx0208
xycky0208
xyckz0208
xycla0208
xyclb0208
xyclc0208
ถ้าสังเกตให้ดี จะเห็นว่า เครื่องทั้ง 7 นี้ มี serial ต่อกัน แต่จุดที่รันไม่ได้อยู่ตำแหน่งสุดท้าย และอักขระที่ใช้ รัน ไม่ใช่ตัวเลข
การเขียนโปรแกรม เพื่ออำนวยความสะดวก ให้ user กรอกข้อมูล serial ที่ เข้า-ออก เป็นล็อตใหญ่ๆ และมี ซีเรียลที่ต่อเนื่องกันแบบนี้ ให้โค้ดช่วยรันให้ แทนที่จะให้ user กรอกเองทั้งล็อต น่าจะเป็นการดีใช่มั้ยครับ ซึ่งมีผลทำให้ความแน่นอนมีมากกว่า ป้องกัน error by user ได้อีกทาง
อะ ทีนี้เกริ่นมาเยอะแล้ว มาดูฟังก์ชั่นที่ผม คิดขึ้นมากันดีกว่า โดยผมไม่รู้ว่ามีของคนอื่นเค้าเขียนกันไว้บ้างหรือเปล่านะครับ ผมคิดๆ แล้วก็เขียนขึ้นมาเลย พอดีที่ทำงานต้องใช้ ซึ่งถ้าท่านอื่นๆ มีโค้ดที่สั้นกว่า ไวกว่า สะดวกกว่า อย่าลืมแนะนำบ้างนะครับ
หรือเห็นว่า ฟังก์ชั่นที่จะให้ไปนี้ ยังมีจุดบกพร่องตรงไหน ช่วยแก้ไขด้วยนะครับ
การวางกระบวนงาน คงไม่ขออธิบายเพิ่มนะครับ แล้วแต่ท่านจะวางกันเอาเอง แล้วพอถึงจะที่จะต้องการรัน ค่อยเรียกใช้ฟังก์ชั่นที่ว่านี้เอาครับ (สรุปง่ายๆ คือแล้วแต่ท่านจะเอาไปดัดแปลงเข้ากับโค้ดของท่านเองนะครับ) ... ตัวฟังก์ชั่นขอไปวางไว้ใน reply ต่อไป?ะครับ
3 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R00062
ขอตัวอย่างเป็นไฟล์ได้ไหม มันจะออกมาเรียงยังไง
3 @R04073
c
Time: 0.4431s
Function RunWord(ByVal YourStr As String, ByVal RoundCount As Long)
Dim aaa, bbb, ccc As Long
Dim xxx, yyy, zzz As String
If RoundCount = 0 Then ' รอบแรกคืนค่าเดิม
RunWord = YourStr
Exit Function
End If
aaa = Len(Trim(YourStr))
xxx = StrReverse(YourStr)
zzz = ""
ccc = 1
For bbb = 1 To aaa
If ccc = 1 Then
yyy = RunChr(Mid(xxx, bbb, 1))
ccc = CLng(Right(yyy, 1))
zzz = Chr(CLng(Left(yyy, Len(yyy) - 2))) & zzz
Else
zzz = Mid(xxx, bbb, 1) & zzz
ccc = 0
End If
Next
RunWord = zzz
End Function
'--------------------------------------------------------------------------------------------------
Function RunChr(ByVal tR As String) As String
If Asc(tR) >= 48 And Asc(tR) < 57 Then ' ตัวเลข
RunChr = Asc(tR) + 1 & "-" & 0
Exit Function
ElseIf Asc(tR) = 57 Then
RunChr = 48 & "-" & 1
Exit Function
End If
If Asc(tR) >= 65 And Asc(tR) < 90 Then ' ตัวพิมพ์ใหญ่
RunChr = Asc(tR) + 1 & "-" & 0
Exit Function
ElseIf Asc(tR) = 90 Then
RunChr = 65 & "-" & 1
Exit Function
End If
If Asc(tR) >= 97 And Asc(tR) < 122 Then ' ตัวพิมพ์เล็ก
RunChr = Asc(tR) + 1 & "-" & 0
Exit Function
ElseIf Asc(tR) = 122 Then
RunChr = 97 & "-" & 1
Exit Function
End If
If Asc(tR) >= 161 And Asc(tR) < 206 Then ' อักษรไทย
RunChr = Asc(tR) + 1 & "-" & 0
Exit Function
ElseIf Asc(tR) = 206 Then
RunChr = 161 & "-" & 1
Exit Function
End If
RunChr = Asc(tR) & "-" & 0 ' ถ้าอักษรไม่อยู่ในกลุ่มทั้งสี่ คืนค่าอักษรเดิม
End Function