Access : จุดเริ่มต้นที่ง่ายที่สุดสำหรับการเรียนรู้ ระบบฐานข้อมูล
Access : จุดเริ่มต้นที่ง่ายที่สุดสำหรับการเรียนรู้ การเขียนโปรแกรม
Access : เป็นได้ทั้งตัวเก็บฐานข้อมูล และตัวจัดการฐานข้อมูล
Thai Access : บอร์ดเสริมการเรียนรู้ Access ด้วยภาษาไทย

น้อมรำลึกในพระมหากรุณาธิคุณอันหาที่สุดมิได้ พระบาทสมเด็จพระปรมินทรมหาภูมิพลอดุลยเดชฯ พระผู้เสด็จสู่สวรรคาลัย

Back to Board : Thai Access Webboard New Topic    Reply
สร้างปุ่มรัน Autonumber

Topic by Message Posted : on : 7/6/2560 9:39:15
๋Jane  อยากสอบถามการสร้างปุ่มรันหมายเลขค่ะ
NAT000117 = NATคือค่าที่คงเดิม 0001คือ+1เรื่อยๆ 17คือปีคศ.

เรามีปุ่มที่เมื่อกดแล้ว จะให้ค่าไปใส่ในtextbox1
รบกวนหน่อยนะคะ

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

Reply by Message on : 7/6/2560 14:37:19
ปิยะพันธุ์
(R23534)
ส่งไฟล์ให้ดูหน่อยได้หรือเปล่าครับ
Piyaphan@Se-ed.com
Back to Top
Reply by Message on : 7/6/2560 16:48:29
Jane
(R23539)
Function AotoNo() As String
Dim x As Variant
Dim bk As String
    x = DMax("Left(QuotationID,4)", "Quotation_tbl", "Right(QuotationID,4) =" & Format(Now(), "mmyy"))
    x = DMax("Left(QuotationID,4)", "Quotation_tbl", "Right(QuotationID,4) =" & Format(Now(), "yy"))
                                                      
    If IsNull(x) Then bk = 1 Else bk = x + 1
    
    AotoNo = Format(bk, "0000") & "" & Format(Now(), "mmyy")
    Debug.Print "1"

End Function


ตอนนี้ทำได้แล้วค่ะ แต่ติดตรงตัวอักษร NAT ไม่รู้จะใส่ตรงไหนให้สอดคล้องกับDMax

ช่วยหน่อยนะคะ
Back to Top
Reply by Message on : 7/6/2560 16:49:46
Jane
(R23540)
*****แก้ไข ส่งผิดค่ะ

Function AotoNo() As String
Dim x As Variant
Dim bk As String
    
    x = DMax("Left(QuotationID,4)", "Quotation_tbl", "Right(QuotationID,4) =" & Format(Now(), "yy"))
                                                       
    If IsNull(x) Then bk = 1 Else bk = x + 1
     
    AotoNo = Format(bk, "0000") & "" & Format(Now(), "yy")
    Debug.Print "1"

End Function
Back to Top
Reply by Message on : 7/6/2560 16:57:24
ekkaphon
(R23541)
ใส่หลังAutoNoหรือเปล่าครับ ลองดู
AotoNo = "NAT" & Format(bk, "0000") & "" & Format(Now(), "yy")
Back to Top
Reply by Message on : 7/6/2560 17:19:50
Jane
(R23542)
ลองใส่แล้วค่ะ แต่รันได้ครั้งเดียว อีกครั้งErrorค่ะ TT
Back to Top
Reply by Message on : 7/6/2560 18:06:54
ekkaphon
(R23543)
ลองแก้ใหม่ดูครับ
ลบ
AotoNo = Format(bk, "0000") & "" & Format(Now(), "yy")

ใส่ใหม่
Me.Year = Format(Date, "yy")
AotoNo = "NAT" & Format(bk, "0000")& [Year]
Back to Top
Reply by Message on : 7/6/2560 18:19:30
ekkaphon
(R23544)
ขอโทษนะครับ ข้อมูลด้านบนผิดครับ

ตามนี้นะครับ
ต้องบังคับให้เปิดRecord ใหม่ด้วยครับ
DoCmd.GoToRecord , , acNewRec
......
.....
AotoNo = "NAT" & Format(bk, "0000") & "" & Format(Now(), "yy")

ถ้าไม่ได้อีกคงต้องวิธีนี่้ครับ
ในตารางสร้างฟิวด์3ฟิว
1.ฟิวด์ชื่อ bk กำหนดเป็น Number
2.ฟิวชื่อ Year กำหนดเป็น Date/Time
3.ชื่อฟิวด์ AotoNo กำหนดเป็น Text

ในฟอร์ม สร้างTextBox ทั้ง3ตัวตามด้านบน และสร้างปุ่มCommand ชื่อcmd1 ใส่โค้ดดังนี้ครับ
Public Sub cmd1_Click()
DoCmd.GoToRecord , , acNewRec
Me.Year = Format(Date, "yy")
AotoNo = "NAT" & Format(bk, "0000")& [Year]
End Sub
ลองปรับใช้ดูครับ
Back to Top
Reply by Message on : 7/6/2560 23:00:15
yeadram
(R23547)
คุณจะรันเลขที่ Quotation ใช่หรือไม่ ถ้าใช่
คุณจะรันในรูปแบบ NAT000117, NAT000217, NAT000317, ... ใช่หรือไม่ ถ้าใช่
ลองจินตนาการดูซิครับ ถ้าสมมติว่า คุณมีเลขที่เดิมในตาราง เขียนว่า NAT000117 เวลาจะหาเลขที่ล่าสุด คุณจะให้มันมองที่ตำแหน่งไหน มันไม่ใช่ Left() แน่ๆ

ที่คุณเขียนมา คือ "Left(QuotationID,4)"
ลองคิดดูใหม่ครับ

ตำแหน่งที่คุณจะนับ มันต้องข้ามอักขระ NAT ไปก่อนนะครับ นั้นคือให้มองข้ามไป 3 อักขระด้วยนะ
ควรจะเป็น Mid(QuotationID,4,4) หรือเปล่าครับ
Back to Top
Reply by Message on : 7/6/2560 23:06:04
yeadram
(R23548)
แต่ แนวคิดที่ให้ไปนั้น หมายถึงว่า มันต้องมีเลขที่เดิม ที่เคยมีรูปแบบนี้อยู่ก่อนแล้ว ในตารางนะ

ถ้าสมมติว่า โค้ดนี้ จะใช้เป็นครั้งแรก ทั้งๆ ที่ไม่มีข้อมูลเดิมอยู่เลยแม้แต่ เรคคอร์ดเดียว
มันอาจจะใช้ Mid() ไม่ได้ อันนี้ ก็ต้องคิดเพิ่มเอานะครับ

อาจต้องมีคำสั่งตรวจสอบเงื่อนไข ดักไว้ก่อน
If .... ถ้าไม่เคยมี เรคคอร์ด then
AotoNo = "NAT0001" & Format(Date(),"YY")
else
x = Dmax(.....
end if

เป็นต้น
Back to Top
Reply by Message on : 8/6/2560 10:11:58
Jane
(R23554)
ขอบคุณทุกคนมากค่ะ จากทำตามคำแนะนำตอนนี้ได้แล้วค่ะ

แต่มีอีกปัญหานึงค่ะ คือกดรันหมายเลขNumberได้แล้ว
แต่คราวนี้ในกรณีที่ผู้ใช้อยากกรอกใส่เอง อยากให้เปลี่ยนแปลงค่าที่รันหรือลบใส่ใหม่ได้

แต่ลองทำแล้วformatตัวหน้าต้องเหมือนกับformatที่กำหนดค่ะ
พอformatข้างหน้าตรง ข้างหลังจะกรอกอะไรต่อ สามารถบันทึกได้ แต่พอเปิดโปรแกรมมาใหม่มันรัน0001ใหม่ค่ะ เพราะมันเก็บค่าสุดท้ายที่กรอกเอง

มีวิธีไหนที่เมื่อเปลี่ยนค่าที่รัน,เรากรอกเอง พอเปิดโปรแกรมมารันเลขอีกครั้ง
จะจำเลขสุดท้ายที่รัน ไม่ใช่ที่กรอกเองไหมคะ




Back to Top
Page:   1 2 Next >>

Reply

 *Indicates required fields
Format:
Bold Under Line Italic Add Hyperlink Add Email Link Italic List Indent Add Image Emoticons Insert code Mode:
Message:*
Your Name*:
Normal word*: Please input : ไทยแอ็คเซส
+++ webboard source: ASPThai.Net Webboard 6.0 webbord +++++++ admin : yeadram +++