แสดงกระทู้

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
Private Sub Text185_GotFocus()
If Isnull(Me.txt_shop_id) Then
    MsgBox "ป้อนข้อมูล สาขา ก่อนนะ"
    Me.txt_shop_id.SetFocus
    End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

2
หลักการคือ พอขึ้นเรคอร์ดใหม่ปั๊ป ก็เอา "กล่องเป้าหมาย" ของบรรทัดสุดท้ายมาใส่พร้อมบันทึกเรคอร์ดครับ ก็ใส่โค้ดนี้ลงไปใน Form_Current event procedure

โค๊ด: [Select]
Private Sub Form_Current()

    Dim RS As DAO.Recordset
   
    If Me.NewRecord Then
        Set RS = Me.RecordsetClone
        If RS.RecordCount > 0 Then
            RS.MoveLast
            If Not IsNull(RS("ชื่อฟิลด์กล่องเป้าหมาย")) Then
                Me.ชื่อเท็กซ์บ็อกซ์กล่องเป้าหมาย = RS("ชื่อฟิลด์กล่องเป้าหมาย")
                DoCmd.RunCommand acCmdSaveRecord
            End If
        End If
        RS.Close
    End If
           
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

3
Me.QU_No = "QU" & Right([txtDateTH], 2) & Right("00" & DMax("[QU_No]", "[T_Quot v7]", "Left([QU_No],4) = 'QU'") & Right([txtDateTH], 2) + 1, 2)

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

4
ทำไม่ได้ค่ะ
เรา ต้องการให้ขึ้น Record ใหม่ แล้วให้เลขเป็น Autorun แล้วมันไม่ข้ามเลขค่ะ
ปกติถ้าลบ record ทิ้ง เลขที่เป็น Autorun จะรันข้ามไปเรย
Autorun ไม่จำเป็นว่าจะใช้ Datatype แบบ AutoNumber อย่างเดียวครับ ใช้แบบ Number แทนก็ได้เหมือนกัน

โดยเราสามารถใช้การสร้าง การรันตัวเลขไป ตามลำดับได้ โดยใช้ Event ของ ฟอร์มโดยใช้ Function Dmax เพื่อหาค่าสูงสุด นำมา +1 เพื่อให้ได้ลำดับต่อๆไปครับ
ผมจะทำตัวอย่างให้ได้ ลองส่งรูปตัวอย่าง Table รูปตัวอย่างฟอร์มที่ทำอยู่มาดูหน่อยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

5
ลองเข้าไปดูที่นี่นะคะ อ. TTT มีคำตอบอยู่ค่ะ

https://www.thai-access.com/topic_post.asp?CategoryID=1&TopicID=5420
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

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

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

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

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

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





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

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

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

9
ที่จริงฟอร์ม ต้นฉบับหรือ ฟอร์มสำเนา ไม่ต้องเปิดขึ้นมาเพื่อจะพิมพ์ก็ได้คับ
ผมสมมุติ ฟอร์มต้นฉบับชื่อ 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

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

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


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

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

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

13
แก้คอลัมน์ 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

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


ที่ 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

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

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

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

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

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

หน้า: [1] 2