แสดงกระทู้

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 - ศรี-นคร

หน้า: [1] 2
1
ในความเห็นของผม
ถ้าจะให้ถูกตามหลักการ เกี่ยวกับเลขที่ Inv ถ้าถูกใช้แล้ว หากต้องการยกเลิก ควรจะมีฟิลด์สักอันหนึ่งเป็นตัวมาร์คว่า  Cancel
เป็นต้นว่า InvCancel = (Y/N)
เพราะจะได้ทราบว่า Inv เลขที่ดังกล่าวโดน Cancel ในระบบไปแล้ว แต่ตัวเอกสารจริงอาจจะไปถึงมือ หรือ อยู่ในมือลูกค้า
หากมีประเด็นก็จะได้ทราบว่า เอกสาร เลขที่ดังกล่าวโดนยกเลิกไปแล้ว
ถ้าลบ ก็จะเป็นการลบร่องรอยของเอกสารที่ออกไป
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

2
ก็ลองทำเป็นตัวอย่างออกมาให้แกะตัวอย่างโค๊ต และนำไปประยุกต์ต่อนะครับ
ส่วนหนึ่ง ต้องลองฝึกแกะโค๊ตด้วยครับ จะได้เข้าใจหลักการ ไม่กล้าก็ไม่เกิดครับ

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

3
มีน้องอีกคน ไม่ทราบวิธี Save As ไฟล์จาก accdb --> mdb
ผมรบกวนเข้าไปแนะนำหน่อยครับ
https://www.thai-access.com/index.php?topic=2436.msg16060#new
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

4
ถ้า Save เป็น mdb ไฟล์ไมไ่ด้ผมก็คงช่วยไม่ได้
คงต้องรบกวน กูรูท่านอื่นครับผม
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

5
รบกวน Save as ไฟล์ตัวอย่างเป็น Accdb --> MDB ไฟล์ แล้ว Upload ดข้ามาให้ด้วยครับ
พอดีผมใช้ access 2002

ข้างใน Zip ไฟล์ที่ส่งมายังเป็น Accdb อยู่ครับ ขอเป็น mdb ไฟล์ครับ

แต่เท่าที่อ่านดู ใจความสำคัญคือ นับวันอบรม ไม่นับวันอาทิตย์ Weekday()
โดยฟังค์ชั่นนี้ จะนับวันอาทิตย์ = 1 เรื่อยไป เสาร์ = 7

เราก็สามารถใช้ประโยช์จากตรงนี้มาประยุกต์ใช้งานได้ครับผม
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

6
ลอง Zip ไฟล์ก่อนแนบไฟล์ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

7
รบกวน Save as ไฟล์ตัวอย่างเป็น Accdb --> MDB ไฟล์ แล้ว Upload ดข้ามาให้ด้วยครับ
พอดีผมใช้ access 2002
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

8
ใช้ DAO ร่วมกับคำสั่ง Do While

Do while not rst1.EOF
   เงื่อนไขที่ 1

   เงื่อนไขที่ 2

   เงื่อนไขที่ 3

  rst1.movenext
Loop
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

9
Function GenInvNo()
    Dim rst1, rst2, rst3 As DAO.Recordset
    Dim vStkID, vInvID, vInv1, vInv2, IntMax, vValRef As Long
    Dim vStkNo, vInvNo, vInv As String
   
    Dim dbs As Database
    Set dbs = CurrentDb()
   
    If IsNull(Me.INvNo) Or (Me.INvNo = "") Then
        'สร้างเลขที่ Inv ใบใหม่
        vInv = "IV" & Format(Date, "yy") & Format(Date, "MM")
        If DCount("Val(Right([InvNo],4))", "[tbl_main]", "Mid([InvNo],1,6) = '" & vInv & "'") = 0 Then
            vInvNo = vInv & "0001"
           
        Else
            IntMax = DMax("Val(Right([InvNo],4))", "[tbl_main]", "Mid([InvNo],1,6) = '" & vInv & "'")
            vInvNo = vInv & Format(IntMax + 1, "0000")
           
        End If
       
        'ใส่ค่าลงไป
        Me.INvNo = vInvNo
   
    End If
   
End Function

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

10
อันนี้ต้องทำหน้าแยกเพิ่มขี้นมาอีกอันในการยกเลิกรายการ โดยอาศัยหลักการเดียวกัน เพียงแต่จากบวกเพิ่มเป็นลบ

      rst2.Edit
      rst2!Qty = rst2!Qty - 1
      rst2.Update

หรือจะไปกำหนดให้ User ไปแก้จำนวนเอาก็ได้ที่ SubForm โดยไปดูที่ Property ของ SubForm : Editting แต่มีความเสี่ยงตรงแก้ผิด
วิธีที่ปลอดภัยสุดคือ ยิงด้วยเลขที InvNo --> ยิงบาร์โค๊ต เพื่อให้ระบบวิ่งไปตรวจสอบความถูกต้องแล้ว ค่อยลดจำนวน

ลองฝึกทำครับ แค่ประสบการณ์จะบังเกิด
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

11
ผมมีปรับตัวอย่างเพิ่ม เป็น Sample3.Zip
หากต้องการลบ รายการไหนให้คลิ๊เลือกแบบนี้แล้วกด Del

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

12
ให้ Download ตัวอย่างไฟล์อีกครั้งครับ
ผมมีการปรับให้ใหม่แล้ว
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

13
ได้ทำตัวอย่างมาให้ศึกษาเป็นแนวทางแล้วนะครับ
โดยมีการแก้ไขซื่อฟิลด์ที่ซื่อ ID ในบาง Table เพื่อให้มือใหม่ได้ตามถูก
เนื่องจากตัวอย่างต้นฉบับที่ได้มาใช้ฟิลด์ ชื่อ ID เหมือนกันหลาย Table อาจจะทำให้เกิดความสับสนได้

โดยตัวอย่างที่ทำให้มีทำตัวอย่างฟังค์ชั่นอื่นเพิ่มให้นิดหน่อย เพื่อ่ให้มองเห็นภาพได้เร็วขี้น
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

14
สามารถทำได้ครับ โดยใช้ DAO ช่วยจะทำให้ง่ายขี้น
แต่เนื่องจากไฟล์ตัวอย่างที่ให้มานั้นเป็นเวอร์ชั่นใหม่ รบกวน Convert ลงเป็น Access2002
ที่มีนามสกุล mdb แล้ว Upload เข้ามาใหม่ครับ เพราะผมใช้เวอร์ชั่นเก่า เลยไม่สามารถทำเป็นตัวอย่างให้ได้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

15
หาจนเจอครับ มันเป็นรูปแบบของ UnixTime ซึ่งเป็นรูปแบบวันที่ บน MySQL
จึงเอามาฝากใว้ให้เพื่อนสมาชิก เผื่อว่า ติดปัญหาเดียวกัน
vDate =  ([StartTime]/86400)+#01/01/1970#

แหล่งที่มา
https://codebeautify.org/unix-time-stamp-converter
โพสต์นี้ได้รับคำขอบคุณจาก: Un, Max

16
ลองศีกษาฟังชั่น DateDiff() ดูครับ สิ่งที่จะได้คือเวลาที่สาย
จากนั้นใช้คำสั่ง If เพื่อใช้คัดกรองผู้ที่มาสาย = 1

ลองเพิ่มรูปแบบคำสั่งนี้เข้าไปใน Query ดูครับ LateChk: IIf(DateDiff("n",[StrtWrk],"08:00")<0,"1","")





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

17
ปัญหานี้น่าจะเหมือนกับที่ผมเคยใช้ Tab Delimit เป็นตัวแบ่งข้อมูลใน Text file ที่ส่งออกทำให้การนำเข้าข้อมูลข้อไฟล์นี้ผิดพลาดไป
ปัจจุบันนี้ผมเปลี่ยนมาใช้เครื่องหมายคอมม่า (,) แทนยังไม่เจอปัญหาดังกล่าวเลย

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

18
โดยมากแล้วผู้ถามจะออกมาในลักษณะเดียวๆ กันคือ อยากถาม แต่ตั้งคำถามไม่เคลียร์ หรือให้ข้อมูลไม่ครบถ้วน ทำให้ไม่มีคนตอบ หรือนานกว่าจะตอบ หรือบางทีก็ไม่อยากตอบซะงั้น
จึงอยากจะแจ้งให้เพื่อนมิตรรักแฟนเพลงทุกท่าน หากต้องการจะให้มีคนตอบคำถามของท่าน ควรให้ข้อมูลและรายละเอียดให้ครบถ้วน
คนที่จะให้คำแนะนำจะได้เข้ามาตอบคำถามที่ท่านสงสัยได้เร็วขี้น

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

หน้า: [1] 2