บอร์ดเรียนรู้ Access สำหรับคนไทย

Thai Access Webboard => ห้อง MS Access => ข้อความที่เริ่มโดย: BARBIEKA ที่ 08 ก.พ. 62 , 02:15:56

หัวข้อ: จะสั่งปริ้นท์จากรหัสสินค้าโดยนับจำนวนสินค้ายังไงคะ
เริ่มหัวข้อโดย: BARBIEKA ที่ 08 ก.พ. 62 , 02:15:56
คำถามงงๆหน่อยนะคะคือต้องการปริ้นท์สติ๊กเกอร์บาร์โค๊ด โดยในแผ่นนั้นจะมี รายละเอียดสินค้า บาร์โค๊ด และต้องการให้ปริ้นท์ว่า รหัสสินค้านี้เป็นสินค้าที่ลำดับเท่าใหร่ อย่างเช่น รหัสสินค้านี้มี 100 ชิ้น ต้องการปริ้นท์โดยมีตัวเลขกำกับที่ 1-100 คะ
ตอนนี้สร้างตารางและฟอร์มง่ายๆให้กรอกข้อมูลและสั่งปริ้นท์ได้แล้วคะ แต่ยังทำให้ปริ้นท์ลำดับสินค้าไม่ได้คะ

ขอบคุณคะะ
หัวข้อ: : จะสั่งปริ้นท์จากรหัสสินค้าโดยนับจำนวนสินค้ายังไงคะ
เริ่มหัวข้อโดย: OddyWriter ที่ 08 ก.พ. 62 , 09:54:11
ใส่ฟิลด์ลำดับสินค้าเข้าไปในสิ่งที่จะพิมพ์ด้วยครับ และแนะนำว่าใช้คำสั่ง Label เพื่อสร้างสติ๊กเกอร์ครับ

(https://www.thai-access.com/tiupld/images/pml6px-99718f.png)
หัวข้อ: : จะสั่งปริ้นท์จากรหัสสินค้าโดยนับจำนวนสินค้ายังไงคะ
เริ่มหัวข้อโดย: ศรี-นคร ที่ 09 ก.พ. 62 , 09:06:10
ขออนุญาตร่วมตอบข้อสงสัยครับ
เทคนิคทีผมใช้อยู่นี้จำไม่ได้ว่า เอาจากตัวอย่างจากเว็บต่างประเทศหรือของ อ. สุภาพ ไชยา แต่อย่างไรเสียคือขอนำมาเล่าสู่กันฟังนะครับ
หลักการเดิมมีอยู่ว่า ถ้าเราต้องการเอาข้อมูลที่ต้องการพิมพ์ออกทางรายงานนั้น โดยปกติคือจะเป็นข้อมูลที่เราเลือกเท่านั้นครับ และเป็นเพียงหน้า Report 1 ชุดเท่านั้น
แต่โจทย์นี้คือต้องการพิมพ์ข้อมูลต้นขั้วเดิมที่เลือก แต่ต้องการสำเนาตามจำนวนที่ต้องการพร้อมรันเลขที่ด้วย

เทคนิคที่ผมจะแนะนำวันนี้คือ เราจะมีการสร้าง Temp Table วางคู่แทรกเข้าไปในข้อมูลที่ต้องการสร้าง Label ในตัวอย่างนี้คือ LabelRun

(https://www.thai-access.com/tiupld/images/pmmy05-2d13c2.jpg)

จำนวน Label จะเกิดนั้นมีตามจำนวน record ที่เรา Add เข้าไปใน Table : LabelRun และใน Table ก็จะมีฟิลด์ที่ชื่อ LabelNo

(https://www.thai-access.com/tiupld/images/pmmy86-24fd4b.jpg)

ส่วนที่หน้าจอสำหรับ User นั้นเราก็สร้าง textbox เพื่อให้ผู้ใช้กรอกจำนวนที่ต้องการพิมพ์ได้ตามต้องการ

(https://www.thai-access.com/tiupld/images/pmmyc2-091dc1.jpg)

และใส่ Code เข้าใน CommandButton โดยอาศัยคำสั่ง For..Next
Private Sub Command0_Click()
    Dim rst1 As DAO.Recordset
   
    Dim vNo As Long
   
    Dim dbs As Database
    Set dbs = CurrentDb()
   
    DoCmd.SetWarnings False
    DoCmd.RunSQL "DELETE * FROM LabelRun"
    DoCmd.SetWarnings True
   
    Set rst1 = dbs.OpenRecordset("SELECT * FROM LabelRun")
   
    For vNo = 1 To Me.Text1 Step 1
        rst1.AddNew
        rst1!LabelNo = vNo
        rst1.Update
    Next
   
    rst1.Close
    Set rst1 = Nothing
   
    DoCmd.OpenReport "Report1", acViewPreview
   
End Sub

และสิ่งที่ต้องทำเพิ่มเติมคือเปิด DAO library ขื้นมาใช้ด้วย เนื่องจากมีการอ้างอิงเพื่อใช้ Recordset โดยเลือกจากเมนู Tools-->Reference

(https://www.thai-access.com/tiupld/images/pmmylk-aaac84.jpg)

เมื่อลองคลิ๊กดูก็จะได้รายงานออกมาหน้าตามประมาณนี้ครับ
ไม่ต้องแปลกใจนะครับ ถ้าเปิดออกมาแล้วจะเห็นแค่ Label อันเดียว ซึ่งมันเป็น Defualt ของ Access ที่จะให้โชว์หน้าแรก ส่วนหน้าอื่นต้องเลื่อนเอา แต่ถ้าเราสั่งพิมพ์มันก็จะพิมพ์ออกมาทุกหน้า

ส่วนรูปที่ผมแสดงให้เห็นนี้คือผมเลือกให้มีการแสดงหน้า Report หลายหน้าพร้อมกันโดยเลือกจากเมนูข้างบนครับ

(https://www.thai-access.com/tiupld/images/pmmynj-2da47a.jpg)

ขอขอบคุณความรู้เกี่ยวกับ MS-Access จาก อ. สุภาพ ไชยา
ก็ฝากไว้เผื่อจะสามารถช่วยให้มิตรรักแฟนเพลงท่านหนึ่งท่านใด ก้าวพ้นปัญหาที่กำลังแก้อยู่ได้เร็วขึ้น


หัวข้อ: : จะสั่งปริ้นท์จากรหัสสินค้าโดยนับจำนวนสินค้ายังไงคะ
เริ่มหัวข้อโดย: BARBIEKA ที่ 09 ก.พ. 62 , 16:42:46
ขอบคุณมากๆค่ะ จะลองทำนะคะ  :love: :love:
หัวข้อ: : จะสั่งปริ้นท์จากรหัสสินค้าโดยนับจำนวนสินค้ายังไงคะ
เริ่มหัวข้อโดย: ศรี-นคร ที่ 11 ก.พ. 62 , 18:57:39
ไม่ทราบว่าผมตรงคำถามที่ต้องการหรือเปล่า เมื่อย้อนกลับไปดูเหมือนว่าจะผิดไปหน่อยหนึ่ง