สอบถามการรันเลขที่เอกสารแบบ ปี+ตัวอักษร
กระทู้เก่าบอร์ด อ.Yeadram

 11,477   18
URL.หัวข้อ / URL
สอบถามการรันเลขที่เอกสารแบบ ปี+ตัวอักษร

หนูมีปัญหารบกวนท่านอาจารย์และผู้รู้อีกแล้วค่ะ คือว่าหนูอยากใช้เลขที่เอกสารให้มันรัน Auto โดยที่หนูมีเลขที่เอกสารหลายๆ Table แต่หนูอยากให้มันรันต่อไปเรื่อยๆไม่ว่าจะคีย์ที่ Table ไหนจะสามารถทำได้ไหมคะ ตัวอย่างงานนะคะ

เลขที่เอกสาร = ปี + AA1 ตัวอย่างนะคะ

ปี 2010 ก็ให้เอาเลข 10 เป็นตัวขึ้นต้นพอเปลี่ยนปีก็รันเลขปีต่อไปค่ะ คือเลข 11 ต่อไปเรื่อยๆค่ะ แล้วก็ให้เริ่มรันจาก AA1 ไปเรื่อยๆอย่างนี้ค่ะ

10AA1
10AA2
10AA3

อย่างนี้ไปเรื่อยจนพอถึงที่ 10AA9 ก็ให้รันเป็นตัวที่ 2 แทนคือ 10AB1 และรันต่อไปเรื่อยๆน่ะค่ะจนกระทั้งครลหมวด B ก็ขึ้น C น่ะค่ะ
พอรันจนครบถึง 10AZ9 ก็ให้ขึ้นรันตัวแรกคือ 10BA1 และก็ให้รันไปเรื่อยๆจนกระทั้งถึง 10ZZ9 ทีนี้ก็ให้เอาตัวเลขขึ้นนำแทนคือ 101AA การรันอย่างนี้หนูสามารถทำได้ไหมค่ะ ต้องใช้ฟังชั่นไหนอย่างไร พอดีหนูค้นดูแล้วมันก็ยังงงน่ะคะ รบกวนท่านอาจารย์และผู้รู้ช่วยหนูด้วยนะคะ ขอบคุณมากๆเลยค่ะ

18 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R07204
ลืมไปเรื่?งนึงค่ะ การให้มันรันโดยใช้ปีเป็น 2010 นั้น หนูต้องตั้ง Text ที่รัน วันที่ต้องเปลี่ยนเป็นรันแบบ 18/11/2010 ด้วยหรือไม่ค่ะหรือว่าไม่ต้อง เพราะตอนนี้มันรันเป็น 18/11/2553 อยู่น่ะค่ะ ขอบคุณค่ะ
2 @R07222
ไม่ทราบว่าวิธีนี้สามารถทำได้ไหมคะ หรือว่าต้องปรับเปลี่ยนอาย่างไร รบกวนด้วยนะคะ
3 @R07223
ค้นกระทู้เก่าๆ ครับ เอาไปประยุกต์
- การรันนิ่งแบบนี้ ค้น "autorun" "autonumber" "เลขที่อัตโนมัติ"
- การบังคับเก็บข้อมูลเลขปี ให้เป็นรูปแบบ คริตศักราช ค้น "mYear" "bYear"
4 @R07225
ผมเคยทำ autonumberแต่เป็นลักษณะวันที่+เวลา + วินาที ครับ แต่ไม่มี text เข้ามาผสม ตั้งค่า Format(Date(),"yymmdd") & Format([screen_datetime],"hhnnss") ประมาณนี้ครับ
5 @R07226
ขอบคุณสำหรับทุกกระทู้ที่ช่วยตอบให้หนูค่ะ ตอนนี้หนูลองค้นหาจากข้อมูลเก่าได้มาหนึ่งตัวอย่างค่ะ เป็นตัวอย่างที่ง่ายและใกล้เคียงกับงานของหนูมากที่สุดค่ะ หนูลองเอามาปรับแต่งแล้วค่ะออกมาเป็นอย่างนี้ค่ะ

หนูสร้างเทเบิลขึ้นมาให้ชื่อว่า tbAutoRunPo
มีฟิลด์ No เก็บข้อมูล ตัวเลขที่รัน เริ่มต้นที่ 0 ค่ะ
มีฟิลด์ Year เก็บข้อมูล ปีค่ะ
มีฟิลด์ DocNo สำหรับใส่ข้อมูล [Year] & "AA" & [No] ค่ะ
แล้วหนูก็สร้างฟอร์มขึ้นมาใช้ชื่อว่า frmDocuments ในฟอร์มสร้างปุ่มขึ้นมา ใช้ชื่อว่า AddPo แล้วก็ใส่โค๊ดที่ได้มาจากตัวอย่างลงไปที่ปุ่มดังนี้ค่ะ

Private Sub AddPo_Click()
Me.No = Format(DMax("[No]", "tbAutoRunPo") + 1, "0")
Me.Year = Format(Date, "yy")
Me.DocNo = [Year] & "AA" & [No]
End Sub

ผลอกมาใน Text DocNo = 53AA1 ค่ะ ซึ่งก็ใกล้เคียงกับงานของหนูมากขึ้นแล้วตอนนี้หนูมีปัญหาอยากรบกวนสอบถามเพิ่มเติมค่ะ

1. หนูต้องแก้ไขโค๊ดส่วนไหนให้ปีจาก 53 (2553) เปลี่ยนเป็น 10 (2010) ได้บ้างคะ แล้วจากวิธีนี้พอขึ้นปีใหม่เลขปีจะรันให้ใหม่ไหมคะ

2. หนูไม่ทราบว่าตัวอักษร AA1สามารถทำให้มันรันที่ละแถวเริ่มจากด้านหลังไปเรื่อยๆได้อย่างไรค่ะ ตัวอย่างนะคะ
AA1, AA2,,,,,พอถึง AA9 ก็เริ่มรันในแถวที่ 2
AB1, AB2,,,,,AB9
เสร็จแล้วพอถึง AZ9 ก็เริ่มในแถวที่ 1 ค่ะ ตัวอย่างนะคะ
BA1, BA2,,,,,BA9
BB1, BB2,,,,,BB9
จนกระทั้งรันถึง ZZ9 ก็ให้นำตัวเลขมาขึ้นหน้าแทนค่ะ ตัวอย่างนะคะ
1AA, 1AB,,,,,,1AZ
2AA, 2AB,,,,,,2AZ
ที่เขียนให้ออกมาเป็นรูปแบบนี้เพราะหนูต้องจำกัดให้ไม่เกิน 5 ตัวอักษรแล้ววิธีนี้จะสร้างมารถรันใบงานได้มากพอสำหรับ 1 ปีค่ะ

3. พอขึ้นปีใหม่หนูอยากให้เริ่มที่เลขที่ใหม่ได้เลยไหมคะ อยากให้รันออกมาแบบนี้ค่ะ 54AA1, 54AA2, 54AA3

4. พอหนูสั่งรันไปเรื่อยๆจนถึง 53AA9 มันรันกลายเป็น 53AA10 เลยน่ะคะแล้วก็รันไปที่ 53AA10 ไปเรื่อยๆเลยค่ะ หนูต้องแก้โค๊ดตรงไหนค่ะ เพราะหนูต้องการให้ตัวอักษรไม่เกิน 5 ตัวค่ะ
รบกวนท่านอาจารย์ทุกท่านด้วยนะคะ หนูก็พยายามหาข้อมูลเพิ่มเติมค่ะ ขอบคุณค่ะ
6 @R07227
สอบถามท่านอาจารย์ yeadram คือหนูค้นไปเจอวิธีเปลี่ยน พ.ศ. เป็น ค.ศ. ตามกระทู้นี้ค่ะ

http://www.thai-access.com/yeadram_view.php?topic_id=337&page=1

หนูอ่านแล้วไม่รู้ว่าต้องเอาโค๊ดไปวางไว้ที่ไหนหรือคะ รบกวนช่วยอธิบายด้วยได้ไหมคะ ขอบคุณค่ะ
7 @R07229
คุณแป้งครับ ในเลขที่อัตโนมัติที่คุณแป้งต้องการให้เป็นนั้น ดูเหมือนคุณแป้งต้องการให้นำหน้าด้วย "เลขสองตัวสุดท้ายของปี พ.ศ." (ไม่ใช่ปี ค.ศ.)
แต่ในขณะเดียวกัน คุณแป้งต้องการให้ปีในฟิลด์อื่น (ซึ่งไม่ใช่ฟิลด์เลขที่อัตโนมัติ) หรือฟิลด์วันที่ของคุณแป้งนั้น เป็นปี ค.ศ.

ขอกระซิบบอกไว้อย่างครับ อย่าสนใจข้อมูลที่เก็บในตาราง (ฟิลด์วันที่) ว่ามันจะเป็น พ.ศ. หรือค.ศ. ครับ มันจะเปลี่ยนไปเองตามการกำหนดใน System Date ของ OS ครับ เช่นถ้าคุณใช้วินโดวส์ และตั้งค่า System Date ของวินโดวส์ให้แสดงเป็นปี พ.ศ. ข้อมูลในตารางของคุณก็จะเป็น พ.ศ. ครับ

ในขณะเดียวกัน ถ้าคุณนำไฟล์เดียวกันนี้ไปรันในคอมพิวเตอร์เครื่องอื่น ที่เขาตั้งค่า system Date เป็น ปี ค.ศ. ข้อมูลในตาราง มันก็จะเป็นปี ค.ศ. ไปเองครับ
เพราะฉะนั้น คุณไม่ต้องไปซีเรียสกับรูปแบบการแสดงผลในตาราง จริงๆแล้ว ไม่ควรสนใจรูปแบบมันด้วยซ้ำ

ทีนี้มาว่ากันถึงฟอร์ม หรือรายงานครับ (ส่วนที่จะแสดงผลให้คนดู)
คุณต้องการให้มันแสดงเป็นแบบไหนล่ะ ก็ไปปรับใน system Date เลยครับ ง่ายสุดแล้ว

ฟังก์ชั่นที่ผมหาไว้ หรือแนะนำไว้ในลิงค์ที่คุณแป้งนำมานั้น มันคือการแก้ปัญหาในรูปแบบอีกแบบหนึ่งครับ ดูเหมือนจะไม่ใช่สิ่งที่คุณแป้งกำลังจะต้องการใช้เลยครับ แต่ถ้าต้องการนำไปศึกษาหรือประยุกต์จริงๆ ในกระทู้นั้น บอกทั้งที่มาของความต้องการ บอกทั้งวิธีประยุกต์ใช้ บอกจนถึงกับว่าวางที่ไหน ใช้อย่างไร (ถ้าอ่านทุกความเห็นจริงๆ นะ) แล้ว...จะให้ผมอธิบายอะไร หรืออย่างไรอีก ผมไปไม่เป็นครับ
8 @R07230
ขอบคุณค่ะอาจารย์ yeadram ตามที่ท่านอาจารย์ได้แนะนำมา หนูได้เอาไปปรับปรุงเรียบร้อยแล้วค่ะ โดยที่ใช้เป็นปี พ.ศ. คือนำเลข 53 (2553) เป็นตัวนำค่ะ ก็แก้ปัญหาจากคำแนะนำของอาจารย์ได้หนึ่งข้อแล้วค่ะ หนูอยากเรียนถามท่านอาจารย์ถึงวิธีเขียนโค๊ดรันตัวอักษร AA1 ตามตัวอย่างที่หนูได้ให้ไป ไม่ทราบว่าสามารถทำได้ไหมคะ หรือว่าถ้าหนูปรับปรุงโครงสร้างเป็น AAA แล้วรันต่อไปจะง่ายกว่าค่ะ รบกวนสอบถามด้วยค่ะ
9 @R07231
อาจารย์ yeadram หนูค้นเจอวิธีการสร้างชุดอักษรเรียงลำดับ ตามกระทู้นี้ค่ะ
http://www.thai-access.com/yeadram_view.php?topic_id=14

หนูพยายามอ่านหลายๆรอบมากเลยค่ะ แต่ไม่ทราบจริงๆว่าจะประยุกเข้ากับงานหนูยังไง หนูงงจริงๆค่ะ รบกวนอาจารย์ช่วยหนูหน่อยได้ไหมค่ะ ว่าต้องสร้างโค๊ดอย่างไรแล้วต้องไปวางไว้ที่ไหน รบกวนด้วยนะคะท่านอาจารย์
10 @R07232
เรียนท่านอาจารย์ yeadram ค่ะ จากที่ได้ติดตามผลงานของอาจรย์มาซักระยะหนึ่ง หนูได้โค๊ดที่ตรงกับข้อมูลของหนูแล้วค่ะ โดยลองใช้โค๊ดของอาจารย์ดังนี้ค่ะ
Private Sub cmdnewid_Click()
Me.documentsno = AutoNo
End Sub

Function AutoNo() As String
Dim x As Variant
Dim bk As String
        x = DMax("Right(documentsno,3)", "inv_NameStock", "left(documentsno,4) = " & Year(Now()))
        If IsNull(x) Or CInt(x) = 0 Then bk = 1 Else bk = x + 1
    AutoNo = Year(Now()) & "/" & Format(bk, "000")
End Function

โดยหนูยอมรับเลยว่าลอกของการตอบกระทู้ของอาจารย์มาลองทำเลยค่ะ
ผลที่ออกมาจะเป็นในลักษณะ 2010/001 ค่ะ โดยที่หนูยอมรับเลยค่ะว่าหนูไม่รู้เรื่องโค๊ดเลย ท่านอาจารย์พอมีข้อแนะนำไหมคะ ถ้าจะปรับให้เข้ากับงานของหนูอย่างไร ขอบคุณค่ะ
11 @R07234
คุณแป้งครับ คุณได้พยามตามลิงค์ต่างๆ แล้วแต่ไม่สามารถนำไปประยุกต์ได้ ผมก็เลขเอาทั้งหมดนั้น มาประยุกต์ให้ดูครับ
ทำเป็นตัวอย่างมาให้ดูนะครับ ส่งไปที่ gmail แล้วครับ

www.gmail.com
user : accboard
pwd : accgmail
subject : รันเลขที่เอกสาร คุณแป้ง
attachment : PaengRunning.mdb

เป็น Access เวอร์ชั่น 2002
มี 3 ออบเจค
table : table1
Form : Form1
Module : module1

โค้ดทั้งหมดคือการนำ ของเก่าๆ (ซึ่งคุณไปค้นเจอแล้ว) มาประยุกต์ทั้งสิ้น
12 @R07235
ขอบคุณอาจารย์ yeadram มากเลยค่ะที่กรุณาหนู ตอนนี้หนูเปิดแล้วมันขึ้นอย่างนี้ค่ะ



หนูก็ไม่ทราบว่าเป็นเพราะอะไรค่ะ รบกวนอาจารย์ด้วยนะคะ ขอบคุณค่ะ
13 @R07238
- เคลียร์ error นี้ทิ้งไปก่อน
- เปิดหน้าต่าง VBA ขึ้นมา (อาจจะดับเบิ้ลคลิ๊กที่ Module1 หรือ กด alt+F11 อย่างใดอย่างหนึ่ง)
- ไปที่เมนู Tools > References..
- ให้ดูว่า Libraries ตัวไหนที่นำหน้าด้วย คำว่า Missing ถ้าแก้ไขได้ด้วยตัวเองให้แก้ไขได้เลยครับ ถ้าแก้ไขไม่ได้ ให้จับภาพหน้าจอตรงจุดนี้มาดูอีกทีครับ โปรดแจ้งด้วยว่า คุณนำมันไปรันใน Access เวอร์ชั่นอะไร
14 @R07240
อาจารย์คะ หนูจับภาพหน้าจอมาให้แล้วค่ะ หนูใช้ Microsoft Office Access 2003 ภาษาไทยค่ะ ขอบคุณค่ะ

15 @R07243
รายการที่ขึ้น MISSING น่ะครับ ติ๊กมันออก
- เดาว่า คงไม่ได้ใช้มันหรอก เพราะฉะนั้นไม่ต้องหาตัวมาแทนมัน กด OK ปิด dialog ไปได้เลย แล้วลองรันดูใหม่

- แต่ถ้าคิดว่าได้ใช้ คอมโพเน้นท์ตัวนี้ ก็ไปหาตัวมาแทนมันครับ เลื่อนลงไปข้างล่าง (มันเรียงตามตัวอักษร) มองหารายการที่ขึ้นต้นด้วย Microsoft Office ... แล้วลงท้ายด้วย Web Component ซึ่งคำตรงกลางที่ผมละไว้ มันจะสัมพันธ์กับเวอร์ชั่นของโปรแกรมออฟฟิศที่คุณใช้ครับ มันอาจจะใช้คำว่า 2003 หรือไม่ก็คำว่า 11.0 > ถ้าเจอก็ติ๊กเลือกมันครับ > กด OK แล้วปิด dialog ไปได้เลย > ลองทำงานดูอีกครั้งครับ
16 @R07246
ได้แล้วค่ะ ขอบคุณอาจารย์ yeadram มากๆเลยค่ะ หนูได้ลองปรับเปลี่ยนเป็นเรียงเฉพาะตัวหนังสือค่ะจาก AA1 เป็น AAA แทนค่ะ ทำให้ได้เลขที่เอกสารมากขึ้นเลยค่ะ เท่าที่หนูดู หนูต้องนำ Module1 มาสร้างไว้ในงานของหนูด้วยถูกต้องใช่ไหมคะ แล้วหนูรบกวนแนบไฟล์รูปให้อาจารย์ช่วยแนะนำด้วยนะคะ ว่าทำไมภาษาที่หนูคาดว่าน่าเป็นภาษาไทยที่อาจารย์เขียนอธิบายให้หนูถึงเป็นแบบนี้คะ หนูต้องไปตั้งค่าที่ไหนหรือว่าเป็นเพราะวินโดส์ที่บริษัทหนูเองคะ ขอบคุณมากคะ

17 @R07252
ในหน้าต่าง VBA ครับ
Tools > options
ตั้งค่าการแสดงผลตัวอักษรครับ
ตั้งค่าการแสดงผลด้วย   font ชื่อ cordiaUPC ขนาด 14 ครับ

เป็น font ชนิดเดียวกันกับที่ผมใช้อยู่และเขียนให้ไป
ลองปรับเป็นแบบอื่นไปก็ได้ เท่าที่ต้องการ
แต่ต้องตระหนักไว้อย่างครับ ว่า บาง font ไม่รองรับภาษาไทยครับ
18 @R07253
ขอบคุณมากๆเลยค่ะสำหรับงานที่อาจารย์ yeadram ได้ให้ความกรุณาหนูเขียนมาให้หนู ถ้าไม่ได้อาจารย์ yeadram หนูคงทำไม่ได้แน่เลยค่ะ ขอบคุณมากๆค่ะ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2265s