แสดงกระทู้

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

หน้า: [1]
1
อ้างถึง
ข้อมูลเบื้องต้นผมแบ่งตารางออกเป็น 2 ส่วน คือ id อยู่ตารางหนึ่ง คะแนนอยู่อีกตารางหนึ่ง โดยอีกตารางหนึ่งเชื่อมความสัมพันธ์ โดย id_person เท่าที่ผมทำมันแสดงข้อมูลออกมาเฉพาะที่มีไอดีตรงกันในตาราง 2 (score) หากคนที่ไม่มีคะแนนในตารางที่ 2 ก็จะไม่แสดงข้อมูลออกมา (อยากให้แสดงทุกคนเลยแม้นไม่มีไม่คะแนน )

สร้างคิวรี่ใส่ SQL คิวรี่แบบนี้

โค๊ด: [Select]
SELECT tblID_PERSON.ID_PERSON, tbl_SCORE.SCORE
FROM tbl_SCORE RIGHT JOIN tblID_PERSON ON tbl_SCORE.ID_PERSON = tblID_PERSON.ID_PERSON;

ผลลัพธ์ที่ได้

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

2
ถ้าต้องการทำการเบิกแบบเลือกหลายรายการเพื่อให้ลิ้งค์ไปยังฟอร์มการเบิกสามารถทำได้ยังไงค่ะ ในโปรแกรม access
ออกแบบหน้าตาฟอร์มไว้แบบไหนครับ ถ้าเลือกหลายๆรายการ คุณอาจจะสร้างListbox เพื่อทำการเลือกรายการ(Multi Select) ได้คับ

การล็อคอินเข้าaccess ให้ผลต่างกันเช่น ยูสเซอร์แอดมินสามารถเข้าได้ทุกฟอร์ม ส่วนยูเซอร์ที่ไม่ใช่แอดมิน เข้าได้แค่ฟอร์มการค้นหาและฟอร์มการเบิกค่ะ

คุณอาจจะสร้าง ตาราง User ขึ่นมา และมี Field พวก UserName , Password , Permisions
ตรงส่วนของ Permisions นั้น เราจะกำหนดสิทธิ์ในการเข้าถึงฟอร์มต่างๆ คอนโทรล ต่างๆ ได้คับ
เช่น กำหนด สิทธิ์ไว้ 2 แบบ Admin และ User โดยกำหนด ให้หลังล๊อกอิน แล้วให้มีการเช็คสิทธิ์ของ User
โดย ถ้าไม่มีสิทธิ์ปุ่มเปิดฟอร์มนั้นจะไม่สามารถกดได้ หรือถ้าอยากซ่อนไว้ก็ใส่ Botton.visible = false แทน Botton.Enabled = false นะครับ
ส่วนตัวอย่างคำสั่ง การเช็คสิทธิ์
สมมุติ textbox ที่กรอก Username ชื่อ UserBox
       Table Field UserName , Password , Permissions
       กำหนดตัวแปลเก็บค่า ชื่อ ChkPermissions

Dim ChkPermissions as String
ChkPermissions = DLookup("[Permissions]", "User", "[UserName]='" & Me.UserBox & "'")
Select Case ChkPermissions
Case "Admin"
   BtnSearch.enabled = true
   BtnWithdraw.Enabled = true
   BtnEtc.Enabled = true
   Btn บลาๆๆๆ.Enabled = true
Case "User"
   BtnSearch.enabled = true
   BtnWithdraw.Enabled = true
   BtnEtc.Enabled = False
   Btn บลาๆๆๆ.Enabled = False
End Select

ถ้าคุณสร้างฟอร์มไว้แล้ว แต่ยังไม่สามารถเพิ่มโค้ดเองได้ ก็ส่งตัวอย่างฟอร์มมาได้คับ
โพสต์นี้ได้รับคำขอบคุณจาก: nikorn

3
สามารถกำหนดได้ตรง Event Detail_Print นะครับ
โดยในหน้าออกแบบเราใส่เส้นไว้ใต้ textbox 1 เส้น ผมตั้งชื่อว่า  Line1 กำหนดความหนาของเส้นไว้ให้เรียบร้อยครับ
ส่วนโค้ดก็ตามนี้
โค๊ด: [Select]
Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
If Me.id1 = "3" And Me.Team = Text3 Then
Me.Line1.Visible = True
Me.Line1.BorderColor = vbRed
Else
Me.Line1.Visible = False
End If
End Sub

text3 คือ หัวของรายงาน ที่ Group เอาไว้

จากคำสั่งนี้ ไม่ว่ามีกี่ิอันดับในแต่ละกลุ่ม คำสั่งจะจับข้อมูลที่ ลำดับเท่ากับ 3 และ อยู่ในกลุ่มเดียวกันถึงจะแสดงเส้นสีแดงขึ้นมาคับ

ผลลัพธ์ที่ได้

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

4
โดยทั่วไป Ms Access จะใช้โค้ดสีที่ต่างจากพวก > Hex / RGB / MS Access Color Values link
แต่สามารถกำหนดใช้เป็น RGB ได้เช่น Me.TextBox.BackColor = RGB(255, 255, 255) เป็นต้น

ดังนั้นการที่จะนำโค้ดสีที่เป็น Hex มาใช้ได้ก็ต้องแปลงให้กลายไปเป็น RGB ก่อนด้วย Module ตัวอย่างของท่านปิ่นณรงค์
หรือ > https://stackoverflow.com/questions/40588470/setting-access-colour-codes-in-vba/50523021#50523021 link
โค๊ด: [Select]
Public Function Color_Hex_To_Long(strColor As String) As Long
    Dim iRed As Integer
    Dim iGreen As Integer
    Dim iBlue As Integer

    strColor = Replace(strColor, "#", "")
    strColor = Right("000000" & strColor, 6)
    iBlue = Val("&H" & Mid(strColor, 1, 2))
    iGreen = Val("&H" & Mid(strColor, 3, 2))
    iRed = Val("&H" & Mid(strColor, 5, 2))

    Color_Hex_To_Long = RGB(iRed, iGreen, iBlue)
End Function

หรือ > https://stackoverflow.com/questions/51292169/how-to-set-background-of-a-form-to-a-hexidecimal-color-in-ms-access-vba link
ซึ่งวิธีนี้สามารถแปลงออกมาได้เลยไม่ต้องใช้โมดูล ผมจึงขอนำไฟล์ตัวอย่างของท่านปิ่นณรงค์มาทดสอบได้ผลตามไฟล์ตัวอย่างครับ
โค๊ด: [Select]
Me.Detail.BackColor = RGB("&H" & Left$(s, 2), _
                          "&H" & Mid$(s, 3, 2), _
                          "&H" & Right$(s, 2))
โค๊ด: [Select]
Me.Detail.BackColor = "&H" & Right$(s, 2) & Mid$(s, 3, 2) & Left$(s, 2)
โพสต์นี้ได้รับคำขอบคุณจาก: nikorn

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


ที่ 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
โพสต์นี้ได้รับคำขอบคุณจาก: nikorn

6
Awara Thai Smart card reader ตัวนี้เขียนด้วย Delphi  ที่ผมทดลองใช้ๆได้ทั้ง 32 และ 64 bit ที่ผมว่างใน Google drive มี สองไฟล์  เป็น ไฟล์ Setup Awara Thai Smart card reader (Setup.exe)  และไฟล์ MS Access 2016  (SmartCard.accdb) หากต้องการ แบบธุรกิจ ติดต่อ ผู้พัฒนาตามนี้เลยครับ (ผมไม่มีส่วนได้เสียกับผู้พัฒนาครับแต่เห็นว่า ทางผู้พัฒนา ได้ทำให้ใช้โดยไม่เสียค่าใช้จ่าย เลยช่วยประชาสัมพันธ์ เผื่อท่านใด ต้องการทำเป็น Soft ware ของตนเอง ก็ติดต่อผู้พัฒนาได้ครับ)   
http://samrids.blogspot.com/2015/12/v-alpha.html link
Author: Samrid Somboon
Line ID: mesa.d
Email: samrids@gmail.com
ตามความคิดเห้นส่วนตัว นะครับ   Siam-ID และ Awara Thai Smart card reader สองตัวนี้ ไม่เสียค่าใช้จ่าย และตามความต้องการของ เจ้าของกระทู้ ผมว่า น่าจะเพียงพอต่อการนำไปใช้งานต่อยอดได้ ด้วย MS ACCESS  ครับ....

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

7
แก้ Bug นิดนึงครับ
โพสต์นี้ได้รับคำขอบคุณจาก: nikorn

8
https://drive.google.com/drive/folders/1J_P2DCrnDaQJDw5PHaddbtAX52xJCO4E?usp=sharing link

sadsadeekabchoeng@hotmail.com
nk_0813kjmn@hotmail.co.th

โหลดใน Google drive ตาม link ได้เลยครับ.....
เป็น Zip ไฟล์   มี สอง ไฟล์ครับ  เป้นไฟล์ Setup.exe ของ Awara Thai Smart card reader และ ไฟล์ MS ACCESS ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: nikorn

9
ด้วยตัว MS Access ไม่น่าจะอ่าน บัตรประชาชน แบบ Smart card ได้โดยตรง  ต้องใช้โปรแกรมอื่น อ่านก่อน อาทิของ  Siam-ID (อย่างที่ คุณ TTT บอกหรือ Awara Thai Smart card reader ซึ่ง พัฒนาโดยคนไทย และให้ใช้ ฟรี  โดยเฉพาะของ  Siam-ID แนะนำเพิ่มเติมได้ และพัฒนาให้ด้วย ครับ   เมื่อใช้โปรแกรมดังกล่าวแล้ว จะได้ ข้อมูลมา เป็น Text file หรือ XML File และ ไฟล์ รูปภาพ จากบัตรประชาชน  แล้วจึง นำข้อมูลที่ได้จากเครื่องอ่านบัตรสมาร์ทการ์ด เข้ามาในฐานข้อมูล MS ACCESS อีกครั้งนึง  แล้วที่นี้เราก็มาปรับเปลี่ยนหรือพัฒนาเอาเองตามใจชอบ.....ผมไฟล์ที่ผมเขียนใช้งานอยู่ครับ (MS Access+Awara Thai Smart card reader) และนำเข้าข้อมูล XML ที่อ่านได้จาก Awara Thai Smart card reader  เข้ามาใน ฐาน Access ครับ  ถ้าต้องการได้ไฟล์ตัวอย่างแจ้ง E-Mail  ไว้ครับ เดี๋ยวผมส่งไปให้ลองศึกษาดูครับ....
โพสต์นี้ได้รับคำขอบคุณจาก: nikorn

10
แนะนำให้โหลดโปรแกรม Siam-ID มาติดตั้งนะครับ เป็นฟรีแวร์โปรแกรมในตำนานโปรแกรมเดียวของไทยที่ฟรี และใช้โหมด Fill From จากนั้นก็สร้างฟิลด์บนตาราง MS Access ให้ตรงกับที่ตั้งค่าไว้ในโปรแกรม Siam-ID
การใช้งานคือเมื่อเปิดโปรแกรม Siam-ID ในโหมด Fill from แล้ว เราก็เปิดใช้งานโปรแกรมอะไรก็ได้ในที่นี่ก็คือ MS Access จากนั้นก็คลิ๊กเคอร์เซอร์ไปที่ฟิลด์แรกที่เราต้องการบันทึกรอไว้ก่อน แล้วเราก็เสียบบัตรประชาชนเข้าเครื่องอ่านบัตร โปรแกรม Siam-ID ก็จะทำการ SendKey เหมือนกับการใส่คำในคีย์บอร์ดทีละหัวข้อลงไปในฟิลด์ของ MS Access ที่เราโฟกัสไว้ทีละฟิลด์ไปเรื่อยๆ จนครบ ส่วนรูปให้สร้างฟิลด์ใน MS Access เป็น OLE Object มันจะรองรับไฟล์รูปบัตรลงในฟิลด์ได้เลยครับ
ปล. หากไม่เข้าใจอยากลองก่อน ให้ลองกับ MS Excel ก่อนได้ครับ โดยเปิดโปรแกรม MS Excel ขึ้นมา แล้วเสียบบัตรอ่านดู ก็จะเห็นการทำงานของโปรแกรม Siam-ID ในโหมด Fill From เองครับ
หรืออีกวิธีอันนี้จะยากหน่อยคือ ในโปรแกรม Siam-ID เมื่อเราทำการอ่านบัตร โปรแกรมจะสร้างไฟล์ที่เป็น Text ไฟล์ และ รูปที่เป็น Jpg ไว้ในโฟลเดอร์ Siam-ID ที่ Document เราสามารถเขียนโค้ดให้ MS Access อ่าน Text ไฟล์นั้น แล้วบันทึกลงบนฟิลด์ได้ แต่จะมีปัญหาที่ผมเคยเจออย่างนึงคือมันจะอ่านภาษาไทยไม่ได้ อันนี้ต้องใช้วิธีแก้กันหลายขั้นตอนอยู่ ส่วนรูปก็เซฟจากโฟลเดอร์ Document\Siam-ID มาใช้งานได้เลย เป็นอีกทางเลือกลองไปปรับใช้งานดูครับ เป็นไอเดีย
โพสต์นี้ได้รับคำขอบคุณจาก: nikorn

11
ประกาศสำคัญ & ข่าวสารต่างๆของบอร์ดเรียนรู้ Access สำหรับคนไทยแห่งนี้ครับ

• กฎกติกาบอร์ดเรียนรู้ Access สำหรับคนไทย •
-> เว็บบอร์ดใหม่มีอะไรบ้าง <-
-> แจ้งปัญหาหรือพูดคุยเกี่ยวกับเว็บบอร์ดแห่งนี้ โพสต์ที่นี้ครับ <-


การใช้งานเว็บบอร์ดเบื้องต้น  :nice day:
-> ข้อควรระวังในการพิมพ์ข้อความ,โค้ดหรือสคริปต่างๆ
-> วิธีการอัพรูป / วิธีการแนบไฟล์
-> แนะแนวทาง วิธีการพิมพ์หรือโพสต์ลิ้งเว็บไซด์ต่างๆ :meaw:

 *ทุกไฟล์แนบเว็บบอร์ดขอไม่รับผิดชอบใดๆเลยนะครับ (ไวรัส,ลิขสิทธิ์,ฯลฯ เป็นต้น)

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

หน้า: [1]