จำกัดจำนวนเรคคอดที่รายงาน



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

12 พ.ค. 63 , 15:21:03
อ่าน 284 ครั้ง

Un

จำกัดจำนวนเรคคอดที่รายงาน
« เมื่อ: 12 พ.ค. 63 , 15:21:03 »
ผมมีข้อมูลอยู่ 70 เรคคอด
เอามาทำ รายงาน โดยที่ในแต่ละหน้า ต้องการเพียงแค่ 15 เรคคอด
แล้วตัดขึ้นหน้าใหม่ โดยแต่ละหน้า มีบรรทัด Sum ด้วย
ผมต้องตั้งค่าตรงไหน หรือ ทำอย่างไรบ้างครับ
ขอบคุณครับ

 
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

12 พ.ค. 63 , 15:34:05
ตอบกลับ #1

PNR

: จำกัดจำนวนเรคคอดที่รายงาน
« ตอบกลับ #1 เมื่อ: 12 พ.ค. 63 , 15:34:05 »
ข้อที่ 1 ผมมีข้อมูลอยู่ 70 เรคคอด เอามาทำ รายงาน โดยที่ในแต่ละหน้า ต้องการเพียงแค่ 15 เรคคอด
(จากตัวอย่าง 2 เรคคอร์ดนะครับแก้เป็น 15 แทน)
http://www.databasedev.co.uk/report_printing.html link

ข้อที่ 2 ขึ้นหน้าใหม่ โดยแต่ละหน้า มีบรรทัด Sum ด้วย

    Option Explicit     
    Dim curTotal As Currency 'กำหนดตัวแปรไว้บนสุดของโค้ด
ตรงส่วนของ PageHeader เลือกEvent  Format ใส่
    curTotal = 0             'กำหนดให้เท่ากับ 0 เมื่อขึ้นหน้าใหม่
ตรง  DetailSection เลือก Event  Print  ใส่
    If PrintCount = 1 Then
    curTotal = curTotal + Me.Amount  'Me.Amount คือชื่อ textbox
    End if
สร้าง  unbound control ตั้งชื่อ  PageTotal ใส่ Page Footer
ตรง PageFooter's Format ใส่
     Me.PageTotal = curTotal

  เครดิต Allen Browne.
http://allenbrowne.com/ser-11.html link
« แก้ไขครั้งสุดท้าย: 12 พ.ค. 63 , 15:51:07 โดย PNR »
:meaw: :grin: :shout:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Un

13 พ.ค. 63 , 13:46:44
ตอบกลับ #2

Un

: จำกัดจำนวนเรคคอดที่รายงาน
« ตอบกลับ #2 เมื่อ: 13 พ.ค. 63 , 13:46:44 »
อาจารย์ครับ ในส่วนของผลรวมมัน Erro ในแต่ละหน้า
แต่หน้าสุดท้าย รวมได้ครับ  ต้องแก้ไขตรงไหนครับ

« แก้ไขครั้งสุดท้าย: 13 พ.ค. 63 , 14:05:47 โดย Un »

 

13 พ.ค. 63 , 14:46:05
ตอบกลับ #3

Un

: จำกัดจำนวนเรคคอดที่รายงาน
« ตอบกลับ #3 เมื่อ: 13 พ.ค. 63 , 14:46:05 »
มาอ่านทบทวนไปมาทำได้แล้วครับ
แต่หน้าสุดท้าย ถ้าบรรทัดมันไม่เท่าที่กำหนด มันจะมีช่องว่างห่าง

เพิ่มเติมตรงนี้ให้อีกหน่อยครับอาจารย์

 

13 พ.ค. 63 , 14:54:33
ตอบกลับ #4

PNR

: จำกัดจำนวนเรคคอดที่รายงาน
« ตอบกลับ #4 เมื่อ: 13 พ.ค. 63 , 14:54:33 »
สร้าง textbox และใส่โค้ดแบบที่ผมโพสไปครับ
:meaw: :grin: :shout:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Un

13 พ.ค. 63 , 15:12:26
ตอบกลับ #5

PNR

: จำกัดจำนวนเรคคอดที่รายงาน
« ตอบกลับ #5 เมื่อ: 13 พ.ค. 63 , 15:12:26 »
หน้าตารายงานหน้าสุดท้าย แสดงแบบไหนครับ
ขอดูรูปหน่อย
:meaw: :grin: :shout:
 

13 พ.ค. 63 , 15:26:09
ตอบกลับ #6

Un

: จำกัดจำนวนเรคคอดที่รายงาน
« ตอบกลับ #6 เมื่อ: 13 พ.ค. 63 , 15:26:09 »


แบบนี้ครับอาจารย์ อยากให้มันตีเส้น จนครบเลยครับ

 

13 พ.ค. 63 , 18:06:03
ตอบกลับ #7

SakDa

: จำกัดจำนวนเรคคอดที่รายงาน
« ตอบกลับ #7 เมื่อ: 13 พ.ค. 63 , 18:06:03 »
ยื่นชำระภาษีหัก ณ ที่จ่าย แบบ ภงด3 53 แบบร้านเดียวกันแล้วแต่จดทะเบียนเป็นบริษัท อันนี้เป็น หจก อันนี้ไม่ต้องเสีย 7% ตอนนั้นผมทำก็สแกนเอกสารสรรพากรเลย ตอนคำนวณก็ ทำไปทำสูตรในตารางดี แล้วค่อยส่งออกมาพิมพ์

 

14 พ.ค. 63 , 10:16:01
ตอบกลับ #8

Un

: จำกัดจำนวนเรคคอดที่รายงาน
« ตอบกลับ #8 เมื่อ: 14 พ.ค. 63 , 10:16:01 »
ได้แล้วครับ  จากกระทู้นี้

https://www.thai-access.com/index.php?topic=882.0

ขอบพระคุณครับอาจารย์

 

14 พ.ค. 63 , 10:18:53
ตอบกลับ #9

PNR

: จำกัดจำนวนเรคคอดที่รายงาน
« ตอบกลับ #9 เมื่อ: 14 พ.ค. 63 , 10:18:53 »
ผม DIY เอานะครับ
ผมสมมุติตารางหลักชื่อ table1
          ตารางที่ออกรายงานชื่อ Table1Report โดยใช้การ Maketable โดยได้เพิ่ม Field Addrow มาด้วย
โดยใช้
totalRec = DCount("*", "table1") 'นับจำนวนแถวทั้งหมดของตาราง table1
totalRec = 15 - ([totalRec] Mod 15)  'เพื่อให้ได้ จำนวนแถวที่ขาดหายไป

แล้วใช้โค้ด Addnew เพื่อเพิ่มแถวที่ขาดหายไปยังตาราง Table1Report
เท่านั้นก็จะได้แถวครบ 15 แถวในหน้าสุดท้ายแล้วครับ โดยโค้ดสามารถดูได้จากปุ่ม เปิดรายงานบนฟอร์มนะครับ
โค๊ด: [Select]
Private Sub Command0_Click()
Dim totalRec As Integer
Dim RS As DAO.Recordset
Dim i As Integer
Dim sql As String
totalRec = DCount("*", "table1") 'นับจำนวนแถวทั้งหมดของตาราง table1
totalRec = 15 - ([totalRec] Mod 15)  'หาจำนวนแถวที่ขาดหายไปที่ไม่ครบ 15แถว
If Not totalRec = "15" Then
sql = "SELECT ' ' AS AddRow, Table1.* INTO Table1Report FROM Table1;" 'สั่งให้มีการสร้างตารางซัฟ ขึ้นมาเพื่อใช้แสดงรายงาน
        DoCmd.SetWarnings False
        DoCmd.RunSQL sql
        DoCmd.SetWarnings True

For i = 1 To totalRec
    Set RS = CurrentDb.OpenRecordset("table1Report", dbOpenDynaset) 'add แถวที่เหลือไปยังตาราง สำรอง
            RS.AddNew
            RS![Addrow] = " " & i
            RS.Update
  Next
    RS.Close
    Set RS = Nothing
   
    Else 'ถ้าเช็คแล้ว ไม่เกิน 15 คือครบทุกหน้าก็ให้ทำงานที่คำสั่ง ล่าง Else ครับ
    sql = "SELECT ' ' AS AddRow, Table1.* INTO Table1Report FROM Table1;" 'สั่งให้มีการสร้างตารางซัฟ ขึ้นมาเพื่อใช้แสดงรายงาน

        DoCmd.SetWarnings False
        DoCmd.RunSQL sql
        DoCmd.SetWarnings True

    End If
   
    DoCmd.OpenReport "rptdemo", acViewPreview
End Sub


และในส่วนของ รายงานแก้เป็นแบบนี้นะครับ
โค๊ด: [Select]
Private Sub รายละเอียด_Print(Cancel As Integer, PrintCount As Integer)
 If PrintCount = 1 Then curTotal = Nz(curTotal, 0) + Nz(Me.Amount, 0)
 End Sub
« แก้ไขครั้งสุดท้าย: 14 พ.ค. 63 , 11:38:15 โดย PNR »
:meaw: :grin: :shout:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Un

14 พ.ค. 63 , 10:57:37
ตอบกลับ #10

Un

: จำกัดจำนวนเรคคอดที่รายงาน
« ตอบกลับ #10 เมื่อ: 14 พ.ค. 63 , 10:57:37 »
ขอบคุณครับอาจารย์ เดี๋ยวจะลองแบบนี้ดูครับ

 

14 พ.ค. 63 , 11:37:07
ตอบกลับ #11

PNR

: จำกัดจำนวนเรคคอดที่รายงาน
« ตอบกลับ #11 เมื่อ: 14 พ.ค. 63 , 11:37:07 »
ขอบคุณครับอาจารย์ เดี๋ยวจะลองแบบนี้ดูครับ
จากโพสบนได้ปรับปรุงโค้ดนิดหน่อยนะครับ กรณีที่ครบ 15 ทุกหน้าก็ให้ทำงานตามปกติ ไม่ต้อง Addrow
:meaw: :grin: :shout:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Un

21 พ.ค. 63 , 15:30:09
ตอบกลับ #12

Un

: จำกัดจำนวนเรคคอดที่รายงาน
« ตอบกลับ #12 เมื่อ: 21 พ.ค. 63 , 15:30:09 »
อาจารย์ครับ มีโจทย์ใหม่
textbox ที่ชื่อ txtcount ผลรวมสะสมเลือกเป็นแบบทั้งหมด

ปัญหาคือ เวลาขึ้นหน้าที่ 2 อยากให้มันขึ้น 1 ใหม่ ทำได้มั้ยครับ

ทำอย่างไรครับ

 

21 พ.ค. 63 , 15:44:22
ตอบกลับ #13

Un

: จำกัดจำนวนเรคคอดที่รายงาน
« ตอบกลับ #13 เมื่อ: 21 พ.ค. 63 , 15:44:22 »
ลองทำดูไปเรื่อยๆ ได้แล้วครับ

สร้าง textbox ขึ้นมาใหม่ ใส่สูตรนี้ไป ได้เลย

=[txtcount]-(([Page]-1)*15)

 


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