แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - MAKI

หน้า: [1] 2 3
1
ไม่รู้ว่ามีฟังชั่นของ Access ในตัวมันเองหรือป่าว  แต่ทำฟังชั่นใช้เองก็ O ยุนะครับ  :cool: :cool: :cool: :cool:
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

2
ใช้โค๊ด Loopๆๆ  แกะดูนะครับ  ดูงงๆ หน่อย ผมก็ลอกมา  :shout: :shout: :shout: :shout: :shout:
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

3
กด shift ค้าง+เปิดโปรแกรม  ถ้าเข้าถึงได้  ก็ลองทำการซ่อมแซมฐานข้อมูลดูครับ
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

4
เวลาเกิด Error ก็ต้องไปแกะที่คำสั่งที่ละขั้นตอน ว่าเกิดจากขั้นตอนไหน
ระบบที่ไม่ซับซ้อนก็พอจะแกะได้ง่าย ระบบที่ซับซ้อนก็ยาก
บางครั้งเกิดจากโปรแกรมที่เขียน บางครั้งเกิดจาก User
และยิ่งถ้าปัญหามันเกิดจากข้อมูลด้วยแล้ว ยิ่งยากจะหา
ขอให้โชคดีครับ
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

5
ผมเคยเจอแบบนี้ หาวิธีแก้ไม่ได้ ถ้าไม่มี backup น่าจะต้องทำใจเลยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

6
เจอเว็บแอ็บที่สามารถเจน Promptpay ID แล้วระบุยอดเงินลงไปได้ ทำให้คนอื่นสามารถออก QR Code Promptpay ได้โดยที่ไม่ต้องเปิดแอ็บธนาคาร(ถ้าไม่กลัวคนอื่นใส่ Promptpay ตัวเองหรือโกงโอนเงินให้คนอื่นอ่ะนะ)
https://genpromptpay.web.app

ส่วนถ้าจะให้ Access ทำงานได้แบบนี้ก็พึ่ง vba ต้องลองถาม github
https://github.com/pheerathach/promptpay
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

7
เท่าที่ทราบเราทำได้ qr code ที่เป็น Prompt pay ครับ ส่วนถ้าเป็นแบบที่ร้านอาหารทำ เราต้องติดต่อธนาคาร เพราะระบบธนาคารเค้าจะ generate โค้ดมาให้เรา เราสร้างเองไม่ได้ ธนาคารเป็นคนสร้างครับ เป็นเรื่องความปลอดภัย
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

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

9
น่าจะต้องมีภาพประกอบด้วยนะครับ ดูไม่ออกติดตรงไหน Layout view กับ print preview
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

10
ถ้าต้องการจัดข้อความให้อยู่กึ่งกลางเซลล์ที่รวม ทั้งแนวตั้งและนอนด้วย เท่าที่คิดออกคือไปสั่งออกรายงานใน Excel แต่เขียนโค้ดเยอะทีเดียว ถ้าจะทำใน Access วิธีเท่าที่คิดออก เป็นแค่การหลอกตาเท่านั้น ข้อความในบรรทัดที่ซ้ำจะหายไปตามต้องการ แต่ข้อความจะยังคงอยู่ที่บรรทัดแรกเสมอ ไม่สามารถไปกึ่งกลางเซลล์ที่รวมได้

วิธีการคือ
- การซ่อนข้อความที่ซ้ำ ให้กำหนด Hide Duplicate property ของเท็กซ์บ็อกซ์ที่แสดง "เหตุผลที่ซื้อ" (สมมุติชื่อ txtReason) เป็น Yes แต่ข้อความนี้จะพิมพ์เสมอเมื่อเป็นบรรทัดแรกของหน้า
- การพิมพ์ขอบของเซลล์ที่รวม เราจะสร้างคอนโทรลของเส้น แทนการใช้กรอบของเท็กซ์บ็อกซ์ ดังนั้น Border Style ของ txtReason กำหนดให้เป็น Transparent ไป ให้สร้างเส้นแนวนอน lineUpper อยู่ที่ขอบบนของ txtReason และให้มีความยาวเท่ากันพอดี  เส้น lineLower วางอยู่ขอบล่าง  เส้น lineRight เป็นแนวตั้งวางอยู่ขอบขวา ส่วนขอบซ้ายคงไม่จำเป็นเพราะเท็กซ์บ็อกซ์ทางซ้ายจะพิมพ์เส้นนั้นอยู่แล้ว   เส้นทั้ง 3 ต้องจัดเลเยอร์ให้อยู่เหนือ txtReason ด้วยนะครับ
- lineUpper จะพิมพ์เมื่อ txtReason พิมพ์ (ซึ่งก็คือบรรทัดแรกของกลุ่มข้อความที่ซ้ำ) โดยเช็คได้จาก .IsVisible property
- lineLower จะพิมพ์เมื่อเป็นบรรทัดสุดท้ายในหน้า ซึ่งต้องใช้เทคนิคให้ระบบรันรายงาน 2 หน (ไม่ใช่เราสั่งพิมพ์ 2 หน) หนแรกเช็คได้จากค่า .Pages property ของ Report object จะเป็นศูนย์ เราใช้หนแรกเพื่อบันทึกว่าบรรทัดไหนเป็นบรรทัดสุดท้ายในแต่ละหน้า โดยบันทึกลงในตัวแปรอะเรย์ A  ค่าของ A(เลขที่บรรทัด) จะเป็น TRUE   ส่วนหนที่สองเพื่อตรวจกับ A ว่า ถ้าบรรทัดที่พิมพ์คือบรรทัดสุดท้ายในหน้านั้น ก็ให้พิมพ์ lineLower
- การบังคับให้ระบบรันรายงาน 2 หน ทำด้วยการสร้างเท็กซ์บ็อกซ์ที่มี Control Source เป็น =[Pages]  เอาไว้ใน Page Header section แต่เราไม่ได้ต้องการจะเห็นมัน เราก็กำหนด Visible property ของเท็กซ์บ็อกซ์ให้เป็น No 
- การที่จะรู้ว่าบรรทัดที่พิมพ์เป็นบรรทัดที่เท่าไหร่ ก็ให้สร้างเท็กซ์บ็อกซ์ txtSeq ที่มี Constrol Source เป็น =1, Running Sum property เป็น Over All และ Visible property เป็น No

อธิบายยืดยาว แต่โค้ดมีสั้นๆแค่
โค๊ด: [Select]
Option Compare Database
Option Explicit

Dim A() As Boolean

Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
    Me.lineUpper.Visible = Me.txtReason.IsVisible
    If Me.Pages <> 0 Then Me.lineLower.Visible = A(Me.txtSeq)
End Sub

Private Sub PageFooterSection_Format(Cancel As Integer, FormatCount As Integer)
    If Me.Pages = 0 Then
        ReDim Preserve A(Me.txtSeq)
        A(Me.txtSeq) = True
    End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

11
รอด้วยคนครับ อยากรู้พอดี
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

12
ผมไม่รู้ว่า กรอบแรกและกรอบที่สองจะเป็นข้อความเดียวกันหรือเปล่านะครับ เอาว่าถ้ามันแตกต่างกัน ผลลัพธ์ที่ต้องการจะหมายถึงอย่างนี้หรือเปล่าครับ
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

13
เจอเว็บ https://www.utteraccess.com/topics/1454249# เขาทำใว้ครับ

ปล.Pick Date ... ของไฟล์นี้จะไม่สามารถใช้งานได้บน 2007 ขึ้นไปเพราะ Access ตัดไลบารี่ MSCAL.OCX ออกครับ https://www.thai-access.com/yeadram_view.php?topic_id=3078
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

14
กำหนด Format ครับ
" รายการนำเข้า จำนวน"& Format([txtจำนวนเงิน], "Standard") &" บาท"

โค๊ด: [Select]
Format (210.6, "#,##0.00")
Result: '210.60'

Format (210.6, "Standard")
Result: '210.60'

Format (0.981, "Percent")
Result: '98.10%'

Format (1267.5, "Currency")
Result: '$1,267.50'
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

15
คือเราสร้าง จุดของตัวเอง ใน google map แล้วดึงมาลงบนฟรอม ให้แสดงไว้ดูเฉย
อยากจะเอา google map นั้นไปไว้ใน report

อาจจะใช้การ Snapshot  หรือ Print Screen ไปแสดงในรายงาน หรือ อาจจะใช้วิธีอื่นๆ ต้องดูก่อนว่าสร้างฟอร์มไว้แบบไหน
ถ้ามีตัวอย่างที่ทำไว้แล้ว สามารถเพิ่มเติมไปแสดงในรายงานให้ได้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

16
ถ้าเป็น text ไม่น่าจะมีปัญหานี้ได้เลย
ขอดู SQL ทั้งอันหน่อยและข้อมูลในตารางด้วย
หรือรีโมทไปแก้ให้ไหมครับ

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

17
เพิ่มโค้ดอีกนิดใช้การเช็คปีของการลงข้อมูลด้วยครับ

พอมันไปเจอปีใหม่ข้อมูลก็จะรันกลับมา 1 ใหม่ครับ
โค๊ด: [Select]
Sub AutoRunnumber()
Dim MaxNum As Integer
MaxNum = Nz(DMax("ID", "tb_คำสั่ง", "[ปีงบ] = '" & CStr(Format(วันที่ลง, "YYYY")) & "'"))
If MaxNum = 0 Then
MaxNum = 1
Else
MaxNum = MaxNum + 1
End If
Me.ID = MaxNum
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

18
ไม่แน่ใจแบบนี้ไหมนะครับ
เวลาจะดูข้อมูล จะกำหนดวันที่มาทำงานก่อน

ปล.จากฐานข้อมูลแนะนำให้ทำ ข้อมูลทั้ง In และ Out ให้อยู่แถวเดียวกันเพื่อไม่ให้เกิดปัญหาครับลองดูตัวอย่างการสร้างจาก
https://www.youtube.com/watch?v=aLpeCWOYmDU  ระบบบันทึกเวลาเข้าออก ของอาจารย์ TTT


หรือถ้าสร้าง ตารางแยกจากกันแบบในตัวอย่างของผม(ลองเลียนแบบจากชุดข้อมูลของคุณ Maki

ควรสร้าง ID หลักไว้ 1 อันไว้เพื่อใช้ในการ อ้างอิงความสัมพันธ์ของข้อมูล In กับ Out อันนี้ลองไปคิดดูว่าสร้างจากส่วนไหนได้บ้าง
เช่น เมื่อแสกนเข้าให้เก็บ ช่วงเวร และ ID อาจจะใช้ จากวันที่เริ่มทำงาน + กับ รหัสพนักงาน เช่น วันเดือนปี-รหัสพนักงาน ตัวอย่าง 01012563-001 เป็นต้น
มาทำ ID เพื่อต้องการให้ ID ทั้ง In และ Out คืออันเดียวกัน

ถ้ากรณีที่มี 2 ตาราง คือตารางIN และ ตาราง Out

ในตาราง In
           ID            ชื่อ              วันที่มา       เวลามา   ช่วงกะ
เช่น 01012020-001  /   นายก   / 01/01/2563 /  16.30 / บ่าย
ในตาราง Out
             ID            ชื่อ              วันที่ออก       เวลาออก   ช่วงกะ
เช่น 01012020-001  /   นายก   / 02/02/2563 /  08.30 / บ่าย

โดยกำหนดให้เมื่อถึงเวลาออกจากการทำงานที่เป็นเวรบ่ายคือ 08.30
เรากำหนดให้ ID = Right("00" & Trim(Str(Day(Date()))-1),2)+Right("00" & Trim(Str(Month(Date()))),2) & Trim(Str(Year(Date()))) & "-" & EmpID จะได้วันที่เดียวกับ วันที่มา ก็จะได้ ID เดียวกันนั้นเอง

แต่ถ้าเป็นเวรเช้า 
เรากำหนดให้ ID = Right("00" & Trim(Str(Day(Date()))),2)+Right("00" & Trim(Str(Month(Date()))),2) & Trim(Str(Year(Date()))) & "-" & EmpID  ได้เลยเพราะอยู่ในวันเดียวกัน


ข้อมูลทั้ง 2 ส่วนนี้ก็จะเชื่อมกันได้จาก ตารางOut.ID   Join กับ  ตารางIn.ID ได้เลย
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

หน้า: [1] 2 3