สมัครสมาชิก

แสดงกระทู้

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 - UnKnown

หน้า: [1] 2
1
แต่ถ้าเราเขียนคำสั่งที่จะทำ ให้อยู่ในบรรทัดเดียวกับ If ... Then ได้ เราก็ไม่ต้องมี End If ครับ เช่น

If A=1 Then B=2: C=3 Else B=4: C=5

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

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

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





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

3
ถ้าใช้การสร้าง Unbound Control ไว้ส่วนหัวแล้วกรอกข้อมูลจากบนนี้ น่าจะพอทำได้คับ
ส่วนการให้ข้อมูลล่าสุดมาแสดงบนสุด ผมใช้การสร้างฟิลล์ อีกฟิลล์ datatype Date/Time กำหนด ค่าเริ่มต้นเป็น Now แล้วกรองค่าจากมากไปหาน้อยครับ
หรือถ้ามี ID แบบ Autonumber ก็เอามากรองได้เลยครับไม่ต้องสร้างฟิลล์เพิ่ม
ตัวอย่างด้านล่าง

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

4
ที่จริงฟอร์ม ต้นฉบับหรือ ฟอร์มสำเนา ไม่ต้องเปิดขึ้นมาเพื่อจะพิมพ์ก็ได้คับ
ผมสมมุติ ฟอร์มต้นฉบับชื่อ Frm_original
           ฟอร์มสำเนาชื่อ Frm_Copy

คำสั่งที่จะนำไปวางที่ Event ที่ต้องการคือ
โค๊ด: [Select]
Private Sub BtnPrint_Click()

    DoCmd.SelectObject acForm, “Frm_original”, True
    DoCmd.PrintOut , , , , 1
    DoCmd.SelectObject acForm, “Frm_Copy”, True
    DoCmd.PrintOut , , , , 1

End Sub
เท่านี้ก็จะทำการปริ้น ทั้ง 2 ฟอร์ม โดยไม่ต้องเปิดฟอร์มขึ้นมาก็ได้คับ
หมายเหตุ ตรง DoCmd.PrintOut , , , , 1  การกำหนดจำนวนว่าจะปริ้นกี่แผ่นนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

5
ยินดีครับ thai access บอร์ดแห่งการแชร์ประสบการณ์ การแบ่งปันและการเรียนรู้ครับ ผมเริ่มจากไม่เป็นเลยได้เรียนรู้จากบอร์ดนี้แหละครับ จนพอที่จะแนะนำได้บ้าง :meaw:
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

6
x \ y = จำนวนเต็มของ x / y
x Mod y = เศษเหลือจาก x / y เป็นจำนวนเต็ม


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

7
มีแบบส่งรายบุคคลมั้ยครับพี่

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

8
แก้คอลัมน์ RGB ในตารางแล้วครับ
กลายเป็นว่า access มอง RGB เป็นฟิลด์ (ใช่มั้ยครับ)


edit:
ตอนนี้ทำได้แล้วครับ ผมใช้วิธีแปลง RGB เป็น Hex แล้วค่อยใช้โค้ดของคุณ UnKnown

โค๊ด: [Select]
Me.MxColor.BackColor = "&H" & Right$(strColor, 2) & Mid$(strColor, 3, 2) & Left$(strColor, 2)

เผื่อใครสนใจแปลง rgb to hex
โค๊ด: [Select]
Function RGBtoHEX(R As Byte, G As Byte, B As Byte) As String

    If R < 16 Then
        HEX1 = 0 & Hex(R)
    Else
        HEX1 = Hex(R)
    End If
   
    If G < 16 Then
        HEX2 = 0 & Hex(G)
    Else
        HEX2 = Hex(G)
    End If
   
    If B < 16 Then
        HEX3 = 0 & Hex(B)
    Else
        HEX3 = Hex(B)
    End If
   
    RGBtoHEX = HEX1 & HEX2 & HEX3

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

9
ขอเพิ่มเติมอีกวิธีนะครับ


ที่ Module ใส่โค้ดนี้เข้าไป
โค๊ด: [Select]
Function MyHexColor(ByVal StrHex)
 
    If Len(StrHex) = 7 Then StrHex = Mid(StrHex, 2, 6)
    If Len(StrHex) = 6 Then

        num_array = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f")
        char1 = LCase(Mid(StrHex, 1, 1))
        char2 = LCase(Mid(StrHex, 2, 1))
        char3 = LCase(Mid(StrHex, 3, 1))
        char4 = LCase(Mid(StrHex, 4, 1))
        char5 = LCase(Mid(StrHex, 5, 1))
        char6 = LCase(Mid(StrHex, 6, 1))
        For i = 0 To 15
            If (char1 = num_array(i)) Then position1 = i
            If (char2 = num_array(i)) Then position2 = i
            If (char3 = num_array(i)) Then position3 = i
            If (char4 = num_array(i)) Then position4 = i
            If (char5 = num_array(i)) Then position5 = i
            If (char6 = num_array(i)) Then position6 = i
        Next
        If IsEmpty(position1) Or IsEmpty(position2) Or IsEmpty(position3) Or IsEmpty(position4) Or IsEmpty(position5) Or IsEmpty(position6) Then
            MyHexColor = -1
        Else
            MyHexColor = RGB(position1 * 16 + position2, position3 * 16 + position4, position5 * 16 + position6)
        End If
    Else
        MyHexColor = -1
    End If
End Function

ที่ฟอร์มกำหนดค่า ในส่วนของ Detail
โค๊ด: [Select]
Private Sub รายละเอียด_Paint()
If Not IsNull(Me.HEX) Then
    Me.COLOR.BackColor = MyHexColor(HEX)
    Else
    Me.COLOR.BackColor = MyHexColor("#FFFFFF")
 End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

10
ลองเล่นๆ การส่ง line notify ส่งข้อความ รูปภาพด้วย VBA ไปเจอบทความดีดี ที่นี่เลยเอามาลองเล่นครับ

ขอขอบคุณแหล่งที่มา :
http://white5168.blogspot.com/2017/01/line-notify-6-line-notify.html#.XHvsT4gzbIV link
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

11
ห้อง MS Access / : การใช้คำสั่ง iifซ้อน iif
« เมื่อ: 10 ธ.ค. 61 , 14:25:36 »
ที่บอกว่า "มันเหมือนเกินขีดจำกัด และขึ้น error" มันมีปัญหายังไงหรือครับ เท่าที่ดูทั้งการใช้ IIF() หรือใช้ฟังก์ชั่น Switch() มันก็ใช้ได้นะครับ ผมเคยเขียนซ้อนกันเยอะกว่านี้อีก

@UnKnown ทำให้ผมนึกถึงรูปที่เค้าล้อคนที่ชอบเขียน If ซ้อน If กันเยอะๆ รูปนี้เลยครับ

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

12
ทดสอบเปลี่ยนเดือน เลขสามตัวท้ายไม่กลับไปเริ่มนับ 001 นะครับ (ฉบับมาโครก็เช่นเดียวกัน)

  RunnungNum    myDate    Data 
  6107001   26-07-18    11
  6107002   26-07-18    22
  6108003   01-08-18    33
  6108004   01-08-18    44
  6109005   01-09-18    55
  6109006   01-09-18    66


ก็ไม่เปลี่ยนสิครับ เพราะลืมทำเงื่อนไขนั้นไว้

ลองดูไฟล์ใหม่ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

13
ลองดูตัวอย่างนี้ครับ Fix พศ ไว้ตลอด
โค๊ด: [Select]
Private Sub Data_AfterUpdate()
Dim fixyear As String
If GetUserLocaleInfo(GetSystemDefaultLCID(), &H1009) = 7 Then
Me.RunnungNum = Format(Me.txtDate, "YY") & Format(Me.txtDate, "MM") & Right("00" & DCount([myDate], "[tblRunningNumber]") + 1, 3)
ElseIf GetUserLocaleInfo(GetSystemDefaultLCID(), &H1009) <> 7 Then
fixyear = bYear(Me.txtDate)
Me.RunnungNum = Right(fixyear, 2) & Format(Me.txtDate, "MM") & Right("00" & DCount([myDate], "[tblRunningNumber]") + 1, 3)
End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

14
ผม test ทั้งมาโครและโมดูลของคุณปิ่นณรงค์แล้วไม่พบปัญหาใดๆ

การตั้งค่า Windows ผมก็ตั้งเหมือนกับของคุณ

ผมใช้ Office 365 (2016) ปัญหาน่าจะอยู่เครื่องคุณแล้วล่ะ

ลองตั้งค่า Access ของคุณเป็นภาษาอังกฤษดีกว่าครับ

File > Options > Language
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

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

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

หน้า: [1] 2