แสดงกระทู้

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

หน้า: [1] 2
1
ขอบคุณมากครับ
โพสต์นี้ได้รับคำขอบคุณจาก: laemthong

2
ผมเป็นพนักงานบริษัท ไม่มีความรู้เรื่อง MS Access มาเท่าไหร่ เเต่อยากได้ระบบโปรแกรม MS Access  มาใช้จัดการข้อมูลพนักงานในบริษัท เช่นบันทึกประวัติ , ขาด ลา มาสาย , ลาออก โดยปัจจุบันสามารถดำเนินการถึงบันทึกจัดเก็บประวัติ ที่อาศัยวิธีจาก Youtube เเต่ไม่สามารถต่อยอดให้จบโปรเจคนี้ได้ จึงอยากหาคนรับงานสานต่อในส่วนที่เหลือ(ขาด ลา มาสาย , ลาออก)ครับ ขอที่ราคาไม่สูงมาก 098-6250023 นัท ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: laemthong

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

4
IIf(Len([txtinput1])=13,Left([txtinput1],12),10)
แบบนี้มี 2 เงื่อนไขนะ
ถ้ามี 13 ตัวอักษร เหลือ12
ถ้าไม่เท่ากับ 13 ตัวอักษร เหลือ10
โพสต์นี้ได้รับคำขอบคุณจาก: laemthong

5

เขียนเป็นโค้ดทั้งหมดวันนี้นึกไม่ออกเลยครับ  :cry: แต่!!!
จากเงื่อนไขข้างบน เราจะสังเกตุได้ว่า ในแต่ละวัน และแต่ละ UserR นั้น จะมี SEQ เดียวกัน
ไม่ว่าการเรียงลำดับนั้นจะมาก่อนหรือมาหลัง

ผมลอง  DIY  ดูก็ได้ผลลัพท์แบบที่ต้องการ แต่ต้องสร้างคิวรี่เพื่อให้ได้ผลลัพท์ แบบในภาพด้านบน
ลองเช็คดูเรียงลำดับจาก Q1  >>> Q2  >>> Q_Result 
และท้ายสุดคือที่ปุ่มอัพเดท ข้อมูลจากคิวรี่ไปยังตารางหลัก

Q1 ดึงกลุ่ม DateR และ UserR ที่มีมาแสดง และกำหนดเลือก Autonumber(First)
     เพื่อนำไปใช้ในการสร้าง การรันลำดับในคิวรี่ต่อไป
Q2 นำกลุ่มที่ได้มา เรียงลำดับ ( กำหนด SEQ ให้แต่ละ DateR และ UserR)
     โดยเงื่อนไขการกำหนด SEQ ต้องมี PK ที่เรียงลำดับจากน้อยไปมากของ Autonumber(First)  ที่ถูกต้อง
     เพื่อการเรียงลำดับที่ถูกต้อง (ถ้าติดปัญหาตรงนี้แจ้งได้เผื่อหาวิธีแก้ไข)
Q_Result แสดงผลในแบบคิวรี่

และที่ปุ่มใส่โค้ดแบบนี้
โค๊ด: [Select]
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim strDate As String
Dim strUser As String

Set db = CurrentDb()
Set rst = db.OpenRecordset("SELECT * FROM MyTable WHERE ((Not (MyTable.DateR) Is Null));", dbOpenDynaset)

If Not rst.BOF And Not rst.EOF Then
  rst.MoveFirst
End If
  Do Until rst.EOF
        strDate = rst!DateR
        strUser = rst!UserR
    rst.Edit
    rst!SEQrec = DLookup("RunSEQ", "Q2", "cstr(DateR) = '" & strDate & "' and cstr(UserR) = '" & strUser & "'")
    rst.Update
   
     rst.MoveNext
    Loop
    rst.Close: Set rst = Nothing
    db.Close: Set db = Nothing

 



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

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

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

7
ขอร่วมตอบครับอ.อ.ปิ่นณรงค์ 
โค๊ด: [Select]
Public Function MakeTableWithConvertToRow2(ByVal sMainTable As String, ByVal sTempTable As String)
'On Error Resume Next
    Dim RS_IN As DAO.Recordset
    Dim RS_OUT As DAO.Recordset
    Dim ColName As Integer
    Set RS_IN = CurrentDb.OpenRecordset("Select" & "* from " & sMainTable & "")
    'Set RS_OUT = CurrentDb.OpenRecordset("Select" & "* from " & sTempTable & "")
    Set RS_OUT = CurrentDb.OpenRecordset(sTempTable, dbOpenTable)
    Do While Not RS_IN.EOF
        RS_OUT.Index = "PrimaryKey"
        RS_OUT.Seek "=", RS_IN(0).Value
             For ColName = 0 To RS_OUT.Fields.Count - 1
             If RS_OUT.NoMatch Then
                    RS_OUT.AddNew
            Else
                    RS_OUT.Edit
            End If
                    If RS_IN(1).Value = RS_OUT(ColName).Name Then
                            RS_OUT(0).Value = RS_IN(0).Value
                            RS_OUT(RS_OUT(ColName).Name).Value = RS_IN(2).Value
                            RS_OUT.Update
                    End If
                 Next
                RS_IN.MoveNext
    Loop
    RS_IN.Close
    RS_OUT.Close
    Set RS_IN = Nothing
    Set RS_OUT = Nothing
End Function

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

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

9
1.สร้าง  Function ไว้บน Module
โค๊ด: [Select]
Public Function MakeTableWithConvertToRow(ByVal sMainTable As String, ByVal sTempTable As String)
    Dim RS_IN As Recordset
    Dim RS_OUT As Recordset
    Dim ColName As Integer
    Set RS_IN = CurrentDb.OpenRecordset("Select" & "* from " & sMainTable & "")
    Set RS_OUT = CurrentDb.OpenRecordset("Select" & "* from " & sTempTable & "")
    Do While Not RS_IN.EOF
       For ColName = 1 To RS_IN.Fields.Count - 1
           RS_OUT.AddNew
           RS_OUT("ID") = RS_IN("ID")
           RS_OUT("Subject") = RS_IN(ColName).Name
           RS_OUT("G") = RS_IN(ColName).Value
           RS_OUT.Update
       Next
       RS_IN.MoveNext
    Loop
    RS_IN.Close
    RS_OUT.Close
    Set RS_IN = Nothing
    Set RS_OUT = Nothing
End Function

ที่ปุุ่ม CommandBotton ใส่
Private Sub Command0_Click()
Dim SQL As String
SQL = "DELETE * FROM TempTable"
DoCmd.SetWarnings False
DoCmd.RunSQL SQL
DoCmd.SetWarnings True
Call MakeTableWithConvertToRow("DATA", "TEMPTABLE")
End Sub

DATA คือ ตารางหลักของเรา
TempTABLE คือ ตารางที่จะแสดงผลลัพท์ครับ โดย  จะสร้าง Field ไว้ 3 Field คือ Field ID , Subject , G ครับ
ที่นี้ ไม่ว่าคุณจะมี กี่ตาราง ก็กำหนด ใช้ฟังชั่นได้หมดครับ
โพสต์นี้ได้รับคำขอบคุณจาก: laemthong

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 มาใช้งานได้เลย เป็นอีกทางเลือกลองไปปรับใช้งานดูครับ เป็นไอเดีย
โพสต์นี้ได้รับคำขอบคุณจาก: laemthong

11
เรียน ท่านอาจารย์ทุกท่าน
       ที่แสดงออกมาเป็นผลจากเครื่องอ่านบัตรครับ
       ความต้องการ
       1.เลขประจำตัวประชาชน                          1 1027 00249 92 2
       2.ชื่อ-นามสกุล                                     อมรชัย พงษ์สละ
       3.วัน เดือน ปี ที่เกิด                               3 มีนาคม 2536
       4.บ้านเลขที่ หมู่ที่ ถนน ตรอก ซอย ตำบล/แขวง อำเภอ/เขต จังหวัด    54,หมู่ที่ 4,,,,ตำบลศรีละกอ,อำเภอจักราช,จังหวัดนครราชสีมา
       5.เลขที่บัตร                                        3006-03-05011106
       6.วันออกบัตร                                      1 พฤษภาคม 2560
  ตามหัวข้อผมได้สร้างตารางรองรับแล้วครับ ความต้องการเมื่อเครื่องอ่านบัตรแสดงผลแล้วจะนำข้ออมูลดังกล่าวไปเก็บในตารางที่สร้างไว้ได้อย่างไรครับ
โพสต์นี้ได้รับคำขอบคุณจาก: laemthong

12
ต้องการ...เลขประชาชน,ชื่อ,นามสกุล,วัน เดือน ปี เกิด,ที่อยู,รูปถ่าย เช่น (9 กุมภาพันธ์ 2562,14:37,"1 1027 00249 92 2",นาย,อมรชัย,พงษ์สละ,Mr.,Amonchai,Phongsala,3 มีนาคม 2536,ชาย,พุทธ,25 ปี,26 ปี,54,หมู่ที่ 4,,,,ตำบลศรีละกอ,อำเภอจักราช,จังหวัดนครราชสีมา,1 พฤษภาคม 2560,2 มีนาคม 2569,"3006-03-05011106",อำเภอจักราช นครราชสีมา,"3006-4-118100/05011106",1102700249922.jpg) ไปเก็บในตาราง access ต่อจากนั้นผนจะเพิ่มเติมข้อมูลให้ครบตามความต้องการ
โพสต์นี้ได้รับคำขอบคุณจาก: laemthong

13
ห้อง Ms Access อื่นๆ / Link SQL Server
« เมื่อ: 28 ม.ค. 62 , 15:51:06 »
หากต้องเชื่อมฐานข้อมูลจาก SQL Server โดยตัว Front End เป็น MS-Access

หลักการมีดังนี้ครับ
- ขั้นตอนที่ 1 สร้าง ODBC เพื่อ Connect ไปยัง MySQL Server
- ขั้นตอนที่ 2 ทำการ Link Table เข้ามาในไฟล์ Front End ที่กำลังใช้งานอยู่
- ขั้นตอนที่ 3 ในหน้าเขียนโค๊ด VBA ให้ติ๊กเลือก Tools --> Reference --> Microsoft DAO 3.6 Object libray

เมื่อต้องการจะจัดการกับข้อมูลใน Table สามารถใช้รูปแบบดังนี้

    Dim rst1, rst2, rst3, rst4, rst5, rst6, rst7, rst8 As DAO.Recordset

    Dim dbs As Database
    Set dbs = CurrentDb()
   
    Set rst1 = dbs.OpenRecordset("SELECT * from Table1", dbOpenDynaset, dbSeeChanges)
    'Add
    rst1.addnew
    rst1!Filed1 = "Test"
    rst1.update

    'Edit
    rst1.edit
    rst1!Filed1 = "Test"
    rst1.update

    'Del
    rst1.Delete

    rst1.close
    Set rst1 = nothing

จะเห็นว่า มีรูปแบบคำสั่ง    ", dbOpenDynaset, dbSeeChanges)   ต่อท้ายเพิ่มขึ้นมานิดหน่อย

ขอขอบคุณความรู้เกี่ยวกับ MS-Access จาก อ. สุภาพ ไชยา

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

14
ห้อง MS Access / : สรุปวันลา
« เมื่อ: 17 ต.ค. 61 , 22:41:56 »
จริงๆ แล้วในข้อ 2 ไม่จำเป็นต้องลบข้อมูลก็ได้ แต่กำหนด Data Type เป็น Yes/No ก็ได้แล้วครับ เผื่อระหว่างปีมีการเปลี่ยนวันหยุด
โพสต์นี้ได้รับคำขอบคุณจาก: laemthong

15
ห้อง MS Access / : สรุปวันลา
« เมื่อ: 10 ต.ค. 61 , 18:18:43 »
ไม่รู้ว่าทำถึงไหนแล้ว ผมมีคอนเสบแบบนี้


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

16
ห้อง MS Access / : สรุปวันลา
« เมื่อ: 07 ต.ค. 61 , 22:06:57 »
เอาไปประยุกต์ดูนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: laemthong

17
ห้อง MS Access / : สรุปวันลา
« เมื่อ: 07 ต.ค. 61 , 10:18:23 »
ใช้ Crosstab Query แล้วกำหนด Headder 1-31 ด้วยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: laemthong

18
ribbon menu มันสามารถ custom หรือสร้างขึ้นมาได้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: laemthong

หน้า: [1] 2