แสดงกระทู้

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.


Topics - Tatchawin

หน้า: [1] 2
1
สวัสดีครับ สอบถามปัญหาการใช้ SQL กับ MS Access ครับ

ผมเป็นมือใหม่ เพิ่งหัดใช้ SQL นะครับ วันนี้ทดลอง Import ข้อมูลใน SQL(มีอยู่ 539 Record)กำหนดให้ฟิล์ด ID
เป็น Primary Key (Is Identity=Yes) ต่อ ODBC มาดูบน MS Access ด้วย Form ที่สร้างไว้
ผมทดลองเพิ่มข้อมูลผ่าน Form บน MS Access นั้น(เกิดเป็น ID ที่ 540,541,542...) ก็ทำได้อยู่ครับ
แต่พอผมจะกลับมาแก้ Record ID ที่ 540,541,542 กลับทำไม่ได้ เกิดมาข้อความ Write Conflict ขึ้นมาแทน

แต่พอผมไปแก้ข้อมูลของ ID 1,2,3...(ที่มาจาก SQL Server โดยตรง ที่ไม่ได้เพิ่มบนฟอร์ม)กลับทำได้ ไม่ขึ้น Write Conflict

อยากให้ท่านผู้รู้ช่วยอธิบายสาเหตุและแนวทางแก้ไขให้หน่อยครับ มือใหม่อย่างผมไม่ค่อยเข้าใจครับ เคยใช้แต่ Access มาตลอด

ขอบคุณมากครับ


2
สวัสดีครับ จะรบกวนทุกท่านเช็ค Code SQL ให้ผมหน่อยครับ ผมจะให้ INSERT เข้าไปที่ qryLean โดย SELECT ข้อมูลจาก qryHRDWH เมื่อ qryHRDWH.Selection = -1 แต่มันขึ้นว่า 'Run Time Error 3346': Number of query value and destination fields are not the same. ผมก็พยายามเชคว่ามันครบหรือเปล่า มันก็ครบนะครับ ก็เลยงงๆว่ามันผิดอะไรกันแน่ ยังไงช่วยแก้ให้ทีนะครับ

ขอบคุณครับ



Private Sub cmdRun_Click()
    Me.Requery
    If IsNull(Me.txtSCGEmployeeID) Then
        Me.txtSelection.Value = 0
    Else
        DoCmd.RunSQL "INSERT INTO qryLean([SCGEmployeeID],[NamePrefixThai],[FirstNameThai],[LastNameThai],[NamePrefixEng],[FirstNameEng],[LastNameEng]," & _
        "[NickName],[Position],[SubShift],[Shift],[SubSection],[Section],[SubDepartment],[Department],[SubDivision],[Division],[SubCompany],[Company],[Birthdate]," & _
        "[SCGHiringDate],[SystemDateTime],[ImagePath],[Selection])" & _
        "SELECT qryHRDWH.SCGEmployeeID, qryHRDWH.NamePrefixThai, qryHRDWH.FirstNameThai, qryHRDWH.LastNameThai, qryHRDWH.NamePrefixEng" _
        & "qryHRDWH.FirstNameEng, qryHRDWH.LastNameEng, qryHRDWH.NickName, qryHRDWH.Position, qryHRDWH.SubShift, qryHRDWH.Shift, qryHRDWH.SubSection" _
        & "qryHRDWH.Section, qryHRDWH.SubDepartment, qryHRDWH.Department, qryHRDWH.SubDivision, qryHRDWH.Division, qryHRDWH.SubCompany, qryHRDWH.Company" _
        & "qryHRDWH.Birthdate, qryHRDWH.SCGHiringDate, qryHRDWH.SystemDateTime, qryHRDWH.ImagePath, qryHRDWH.Selection" & _
        " FROM qryHRDWH Where qryHRDWH.Selection = -1"
       
'        DoCmd.RunSQL "Delete * from tblProductJan2020 where tblProductJan2020.Select=-1"
       
    End If
End Sub

3
สวัสดีครับ รบกวนปรึกษาครับ

ผมกำลังทำ Search by Combo box โดยให้ Combo box ค้นหาตามส่วน แผนก งาน ย่อยไปเรื่อยๆ ทีนี้ พวกค่าส่วน แผนก งาน ใน table ผมเก็บเป็น ID หมดแล้วใช้การ Lookup Value เอา เวลาทำ Combo box จะเสิร์ชผมก็มา Bound Column ที่ ID แล้วก็กำหนด Column Count และ Column Widths เอาค่าส่วน แผนก งานมาโชว์ครับ
ผมก็เขียนโค้ดได้ประมาณนี้

Private Sub SearchCombo()
    Dim sql As Integer
    sql = "SELECT * FROM tblWorkforceY2020 WHERE [DepartmentID] =  & Me.cbSearch1 & "
    Forms!frmWorkforce.RecordSource = sql
    Forms!frmWorkforce.Requery
End Sub

Private Sub cbSearch1_AfterUpdate()
    SearchCombo
End Sub


ผลปรากฎว่า มันขึ้น Pop Up แจ้งเตือนว่า
Run-Time error '13':
Type mismatch

ผมไม่รู้ว่าผิดตรงไหน ช่วยแก้ให้หน่อยนะครับ

ขอบคุณมากครับ

4
สวัสดีครับท่านครับ ขอรบกวนปรึกษาเรื่อง Combo Box ซ้อน Combo Box ครับ(ให้ Combo Box กรองข้อมูลย่อยๆลงไป เพื่ออัพเดตลงตาราง)

อาจดูไม่ยากเย็น แต่ไม่รู้ทำไมผมถึงแก้ไมไ่ด้

รบกวนท่านดูไฟล์นี้ให้ผมหน่อยนะครับ เปิดไปที่ frmSession ผมต้องการให้ txtSubjectID มันเปลี่ยนไปตามกรุ๊ปของ txtSubjectGroupID ครับ
ผมทำตามคลิปของฝรั่งด้านล่างนี้ ผลคือ มันเปลี่ยนไปตามกรุ๊ปก็จริง แต่พอเลื่อนกลับไปกลับมา ค่าใน txtSubjectID มันหายไปเฉยเลย ไม่ยอมเอาขึ้นมาโชว์(แต่มันบันทึกลง tbl ได้)

รบกวนช่วยดูหน่อยครับ ไม่เข้าใจจริงๆทำไมไม่ได้

ขอบคุณเป็นอย่างสูงครับ
ปล.ผมทำตามคลิปของฝรั่งคลิปนี้ครับ

5
สวัสดีครับ เนื่องด้วยผมกำลังจะโอนย้ายข้อมูลจาก MS Access ขึ้น SQL Server
แต่ตารางบน MS Access ที่เคยทำไว้ มี Field จำนวนหนึ่งที่เป็น Field ประเภท ID (Datatype Number)
แต่ Field เหล่านี้ Display เป็น Combo Box ซึ่งไป Lookup ค่าจากอีกตารางหนึ่งมาแสดงเป็น Text ตัวอย่างตามภาพ เช่น field ServiceID(Datatype Number) ของ tblTransactions ไป Lookup ค่า Service บน tblService แล้วมาโชว์เป็น Text เป็นต้น

อยากรู้ว่าเวลาเอาขึ้น SQL Server มันจะโชว์เป็น Number หรือ Text ครับ
ขอบคุณมากๆครับ

6
สวัสดีครับทุกท่าน ผมมี Code สองตัวนี้ครับ ต้องการที่จะรวมกัน ตามโจทย์ผมด้านล่างนี้ จะมีวิธีการรวมอย่างไรครับ
ตัวแรก: เป็น Code PromptUserSaving ก็คือถ้าหน้าฟอร์มมีการแก้ไข อัพเดต ลบ แล้วเราจะเลื่อนไปหน้าอื่น หรือกดปิดฟอร์ม ระบบก็จะฟ้องขึ้นมาว่าจะ Save หรือไม่
ตัวสอง: หลังจากที่เราตอบ Save จากข้อที่ 1 ให้บันทึกลงไปที่ Field เลยว่า Record นี้ถูกแก้ไข Update วันไหน กี่โมง

Code แรก:
Private Sub Form_BeforeUpdate(Cancel As Integer)

   ' This procedure checks to see if the data on the form has
   ' changed. If the data has changed, the procedure prompts the
   ' user to continue with the save operation or to cancel it. Then
   ' the action that triggered the BeforeUpdate event is completed.

   Dim ctl As Control

   On Error GoTo Err_BeforeUpdate

   ' The Dirty property is True if the record has been changed.
   If Me.Dirty Then
      ' Prompt to confirm the save operation.
      If MsgBox("Do you want to save?", vbYesNo + vbQuestion, _
              "Save Record") = vbNo Then
         Me.Undo
      End If
   End If

Exit_BeforeUpdate:
   Exit Sub

Err_BeforeUpdate:
   MsgBox Err.Number & " " & Err.Description
   Resume Exit_BeforeUpdate
End Sub

Code สอง:
'------------------------------------------------------------
' Form_BeforeUpdate
'
'------------------------------------------------------------
Private Sub Form_BeforeUpdate(Cancel As Integer)
On Error GoTo Form_BeforeUpdate_Err

    Modified = Now()
    ModifiedBy = CurrentUser()


Form_BeforeUpdate_Exit:
    Exit Sub

Form_BeforeUpdate_Err:
    MsgBox Error$
    Resume Form_BeforeUpdate_Exit

End Sub

ตามโจทย์ข้างต้น วอนท่านผู้รู้ ช่วยเขียน Code สองตัวนี้รวมกันหน่อยครับ ผมพยายามแล้ว ทำไม่ได้เลยครับ

ขอบคุณครับ

7
สวัสดีครับ ขอสอบถามทุกท่านตามหัวข้อเลยครับว่า หากย้าย Database จาก Access ไป SQL
พวก Coding ต่างๆที่เราเขียนไว้ เช่น Query,Module,Expression,Event และอื่นๆ จะหายไหมครับ
ถ้าหาย จะมีวิธีแก้อย่างไร ใครมีวิธีแก้รบกวนขอคำแนะนำด้วยนะครับ

ขอบคุณมากครับ

ปล.ถ้าใครมีวิธีการย้าย Database จาก Access ไป SQL โปรดโพสให้ด้วย จะขอบพระคุณยิ่งครับ  :love: :miao:

8
สวัสดีทุกท่านครับ

ขออนุญาตถามคำถามเกี่ยวกับการใช้งาน Database ร่วมกันครับ

หากผมมีโปรแกรมตัวนึงที่ต้องการแบ่งสิทธิ์ให้คนอื่นใช้ร่วมกัน โดยผมต้องการให้สิทธิ์กับเครื่อง Client กรอกข้อมูลที่ตนรับผิดชอบเข้ามา โดย

1. ตัวโปรแกรมจะอยู่ที่เครื่อง Server ที่ผมเป็นผู้รับผิดชอบ เป็น Admin มีสิทธิ์แก้ไขได้ทุกอย่าง
2. ตัวผู้กรอกข้อมูลจะมีเครื่อง Client ไว้กรอกข้อมูลเข้า แก้ไขข้อมูลผ่าน Form เท่านั้น ไม่มีสิทธิ์เข้าถึง Data Table และ Queries ด้านหลัง(เข้าถึงได้เฉพาะ Front End)


วิธีการแบบนี้เรียกว่าอะไร(Split Database ใช่หรือไม่) สามารถทำได้ไหม และมีวิธีการทำไหมครับ
(เข้าใจว่าต้องมีขั้นตอนเชื่อมต่อ ตั้งค่า กำหนดสิทธิ์อะไรสักอย่างบนคอมพิวเตอร์เรากับเครื่อง Client แน่ๆ)

รบกวนทุกท่านด้วยครับ หากส่งเป็นคลิปในยูทูปมาด้วยก็จะดีมากครับ

ขอบคุณมากๆครับผม

9
ขอปรึกษาและสอบถามท่านผู้รู้ครับ

ผมได้รับโจทย์จากทางนาย ให้เขียนโปรแกรมเพื่อเก็บข้อมูลพนง.รับเหมาในโรงงาน โดยเก็บข้อมูลดังนี้
1. ชื่อสกุลพนักงาน
2. ที่อยู่พนักงาน
3. สังกัด(ตำแหน่ง แผนก ส่วน ฝ่าย โรงงาน บริษัทต้นสังกัดของพนง.รับเหมา รูปแบบการจ้างเหมา ฯลฯ)
4. ประวัติการถูกลงโทษ
5. ประวัติการอบรม

โดยทั้งหมด ผมได้ออกแบบ Databased ตาม ER Diagram ตามภาพที่ 1 แบ่งเป็นฝั่งซ้ายและฝั่งขวา

ข้อ 1-4 ผมได้ออกแบบ Databsed เพื่อใช้เก็บข้อมูลในฝั่งซ้าย(ตารางพื้นที่สีเขียวเก็บข้อ 1-3 ส่วนตารางพื้นที่สีน้ำเงินเก็บข้อมูลข้อ 4)
ซึ่งผมทำ Databased ให้ออกมาเป็นรูปแบบที่ตั้งใจ นำไปออกแบบฟอร์มกรอกข้อมูลเพิ่มเข้าได้ ตามที่ตั้งใจไว้แล้วครับ
แต่ที่ติดปัญหาคือข้อ 5 คือ เรื่องประวัติการฝึกอบรมนั้น ซึ่ง Databased จะอยู่ทางขวามือ(ตารางพื้นที่สีแดง)ของ ER Diagram

โจทย์ในการจัดทำ
1. ต้องการทำฟอร์มบันทึกข้อมูลการฝึกอบรมให้ได้ตามแบบรูปภาพที่ 2 คือ มี Form ที่มี tblSession (เก็บข้อมูลSessionID, ชื่อหลักสูตร, Description, Objectiveหลักสูตร, ระยะเวลาการฝึกอบรม,
ผู้สอน, บริษัทที่มาสอน ฯลฯ)เป็น Record Source และมี Subform ที่บันทึกชื่อผู้เข้าอบรม ในแต่ละ SessionID (Dropdown เลือก NationalID หรือชื่อ-สกุลปุ๊บ ขึ้น WorkID, ตำแหน่ง, สังกัดพนง.ปั๊ปทันที)
2. Subform ในข้อ 1 นั้น ต้องบันทึกข้อมูลไว้ด้วยว่า พนง.ที่มาอบรมนั้น ขณะนั้น มีตำแหน่งอะไร สังกัดอะไร เพื่อจะนำข้อมูลไปใช้ต่อในข้อ 3
3. ต้องรู้ให้ได้ว่าตำแหน่งงานทั้งหมดใน Databased นั้น จะต้องอบรมอะไรบ้าง เพื่อให้เป็นไปตามที่กฎหมายกำหนด แล้วพนง.ที่อยู่ในตำแหน่งนั้น ๆ
ได้อบรมครบตามกฎหมายกำหนดแล้วหรือยัง


การแก้โจทย์
ข้อ 1-2: ผมจัดทำ
- Form ขึ้นมาโดยใช้ tblSession เป็น Record Source ได้
- Subform โดยให้เป็น Unbound SubForm ซึ่งผมเขียน Expression ที่ txtWorkID โดยเมื่อ Dropdown เลือก NationalID เมื่อไหร่ ระบบจะไปดึง Last WorkID ของพนง.คนนั้น ๆ มาจาก
tblWork(Transaction Table) มาโชว์ จากนั้น ก็เขียน VBA on click ที่ปุ่ม Save ให้ Save ข้อมูล Subform ลง tblTrainingRec
ข้อ 3: ผมยังไม่รู้แนวทางจะทำอย่างไรดี ทั้งการออกแบบ Databased, การทำแบบฟอร์มเพื่อคีย์หลักสูตรที่แต่ละตำแหน่งต้องอบรมให้ครบตามกฎหมาย, การทำ Report

ปัญหาที่เกิดขึ้น
ข้อ 1-2: เกิด Error ใน Subform ตามภาพที่ 2
ข้อ 3: ผมยังไม่รู้แนวทางจะไปต่ออย่างไรดี ทั้งการออกแบบ Databased, การทำแบบฟอร์มเพื่อคีย์หลักสูตรที่แต่ละตำแหน่งต้องอบรมให้ครบตามกฎหมาย, การทำ Report

คำถาม: เพื่อให้ได้ตามโจทย์ที่กำหนด
1. แนวทางการออกแบบ Databased ที่ผมทำมานี้ เหมาะสมแล้วหรือไม่? ถ้าไม่ ผมควรจะออกแบบอย่างไรเพื่อให้ได้ตามโจทย์ที่ผมต้องการ?
2. ถ้าผมออกแบบ Databased มาถูกทางแล้ว จะทำอย่างไรให้ Subform ไม่ Error ครับ? แล้วจะไปต่อกับเรื่องการกำหนดหลักสูตรที่แต่ละตำแหน่งต้องอบรมให้ครบตามกฎหมายอย่างไรดีครับ?

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





10
สวัสดีครับทุกท่าน มีผมมีคำถามจะปรึกาษาเกี่ยวกับการเขียน Expression ครับ



จากภาพ ผมต้องการให้ SubForm ของผม นำค่าสุดท้ายของ Field ที่ชื่อ ContractorStatus ในแต่ละ NationalID มาโชว์บน Subform ครับ โดยที่เมื่อเลื่อน Subform ไปยัง NationalID ใหม่ก็ให้นำค่าสุดท้ายของ Field ContractorStatus มาแสดงเช่นเดิม เช่น NationalID = 1111 ก็ให้นำคำว่า "Activated" มาโชว์บน txtContractorStatus ถ้าเลื่อนไป NationalID = 2222 ก็ให้นำคำว่า "Terminated" มาแสดง

ผมควรจะเขียน Expression อย่างไรครับ? หรือมีวิธีการอื่นที่ดีกว่าการเขียน Expression ครับ?

ปล. ที่ txtContractorStatus(ที่วงในภาพ ด้านล่าง) ผมเขียน Expression ตามนี้ครับ ซึ่งไม่ได้ผลเลย เมื่อใส่ข้อมูลคนลงไปเยอะๆ ผมควรเขียนยังไงดีครับ ขอบคุณมากครับ
=DLast("ContractorStatus","qryWork","[txtNationalID]=[Forms]![frmEditWork]![txtNationalID]")



11
สวัสดีครับ จะรบกวนปรึกษาครับ Code ครับ โดยผมต้องการทำ Form แก้ไขประวัติพนง.โดยทำ Form ใหญ่ 1 Form และ SubForm ย่อย 2 Subform
1. Subform1(บน) เอาไว้ใช้เปน Selector ตามแต่ละ WorkID
2. Subform2(ล่าง) เอาไว้ใช้แสดงรายละเอียดของจาก SubForm1 ซึ่งการแก้ไขข้อมูล จะแก้ไขผ่าน Subform นี้ครับ
โดยทั้งสอง Subform ใช้ Queries ตัวเดียวกัน

ความต้องการของผมคือ หากกรอก TerminatedDate ที่ Record ใด Record หนึ่ง ก็ให้ค่า TerminatedDate ที่กรอกนั้น ถูก Insert ลงไปยัง Record อื่นๆที่มี ContractorID เดียวกันให้หมด ผมควรจะเขียนโค้ดอย่างไรดีครับ

ปล. โค้ดที่ผมเขียนคือ ตามด้านล่างนี้ครับ ซึ่งไม่ได้ผลเลยครับ
รบกวนทุกท่านด้วยครับ ขอบคุณมากครับ

Private Sub TerminatedDate_Click()
    DoCmd.RunSQL "SELECT GenerateID FROM tblWork WHERE GenerateID'" = Me.GenerateID
    DoCmd.RunSQL "INSERT INTO tblWork([TerminatedDate])" & _
        "Values ('" & Me.TerminatedDate & "');"
    End If
End Sub


12
ทุกท่านครับ ผมต้องการคำนวณหาอายุงาน โดยมีเงื่อนไขดังนี้

1. ผมมี Field CompanyHiringDate เพื่อบันทึกวันที่เข้างาน และ TerminateDate เพื่อบันทึกวันออกจากงาน
2. เงื่อนไขผมคือ หากพนักงานยังทำอยู่ จะไม่มีวันที่ระบุในช่อง TerminateDate การคำนวณจะคำนวณตั้งแต่วันเข้างานถึงปัจจุบัน
แต่ถ้าพนักงานลาออกจากงาน จะมีการระบุวันที่ออกจากงานในช่อง TerminateDate ให้คำนวณเฉพาะช่วงวันเข้างาน (CompanyHiringDate)
ถึงวันที่ออกจากงาน (TerminateDate)

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

รบกวนด้วยนะครับ ขอบคุณครับ

หมายเหตุ:
Expression ที่ผมใช้ คือ

คำนวณวัน
CompanyHiringDate_Day:
IIf(DateDiff("d",DateAdd("m",DateDiff("m",[CompanyHiringDate],Date()),[CompanyHiringDate]),Date())<0,DateDiff("d",DateAdd("m",DateDiff("m",[CompanyHiringDate],Date())-1,[CompanyHiringDate]),Date()),DateDiff("d",DateAdd("m",DateDiff("m",[CompanyHiringDate],Date()),[CompanyHiringDate]),Date()))

คำนวณเดือน
CompanyHiringDate_Month: IIf(DateDiff("d",DateAdd("m",DateDiff("m",[CompanyHiringDate],Date()),[CompanyHiringDate]),Date())<0,(DateDiff("m",[CompanyHiringDate],Date())-1) Mod 12,DateDiff("m",[CompanyHiringDate],Date()) Mod 12)

คำนวณปี
CompanyHiringDate_Year: IIf(DateDiff("d",DateAdd("m",DateDiff("m",[CompanyHiringDate],Date()),[CompanyHiringDate]),Date())<0,(DateDiff("m",[CompanyHiringDate],Date())-1)\12,DateDiff("m",[CompanyHiringDate],Date())\12)






13
สวัสดีครับทุกท่าน ผมมีคำถามเกี่ยวกับการจัดทำโปรแกรมบันทึกประวัติแรงงานรับเหมา(แรงงาน Outsource ไม่ใช่พนักงานของบริษัท)ครับ
เนื่องจากผมได้ดูคลิป: ระบบบันทึกเวลาเข้าออก: Ep.2 (ฟอร์มจัดการข้อมูลพนักงาน)
ของคุณ Access Creator(คิดว่าท่านคงอยู่ในเว็บบอร์ดนี้แน่ๆ)
แล้วมีโจทย์จากทางหัวหน้าพอดี ก็เลยจะมาลองทำดู จุดประสงค์ของโปรแกรมมีดังนี้ครับ

จุดประสงค์
1. จัดเก็บประวัติส่วนตัวพนักงาน ได้แก่ ประวัติทั่วไป(ชื่อ ที่อยู่ วันเกิด สังกัดบริษัท เริ่มงานวันที่ ลาออก ย้ายงาน การถูกลงโทษ ลักษณะงานที่ทำ สังกัดแผนกใดในโรงงาน ฯลฯ)
2. จัดเก็บประวัติการอบรมหลักสูตรตามกฎหมาย ยกตัวอย่างเช่น ลักษณะงานที่ทำเป็นงานผลิต ก็ต้องอบรมการใช้สารเคมี ทำงานเกี่ยวกับขับรถยก ก็ต้องอบรมขับขี่ปลอดภัย
3. จัดเก็บประวัติการตรวจปัจจัยเสี่ยง เช่น ทำงานสัมผัสสารเคมีต้องตรวจเลือด ทำงานเกี่ยวกับการขับรถต้องตรวจตาบอดสี

ทีนี้พอลอง ออกแบบ Databased ผมพบว่าหัวใจสำคัญน่าจะอยู่ที่ ข้อ 1 ครับ ถ้าข้อ 1 ทำได้ตามความต้องการ
ข้อ 2 และ3 ก็ไม่น่ายาก โดยเฉพาะข้อ 3 ที่มีข้อมูลจากบริษัทตรวจสุขภาพพนักงานส่งมาให้แล้ว ทั้งนี้ ผมมีความต้องการดังนี้

ความต้องการข้อการจัดการข้อมูลแรงงานรับเหมา
 - กรณีแรงงานรับเหมาเปลี่ยนชื่อ: ผมอยากจะให้เมื่อพนักงานเปลี่ยนชื่อแล้ว ไม่ไปกระทบกับ Transaction เดิม เช่น เดิมชื่อนายสมชาย เปลี่ยนเป็นพุฒิพงษ์ ผมก็อยากให้เก็บ Record ของนายสมชายไว้ครบ ทั้งที่อยู่ เบอร์โทร ลักษณะงานที่ทำ สังกัดบริษัท ประวิตการถูกลงโทษ ฯลฯ เมื่อเปลี่ยนชื่อแล้วก็เริ่มเป็น Record ใหม่ของนายพุฒิพงษ์ แต่ทุกอย่างยังคงเหมือนสมัยที่ชื่อนายสมชาย เพียงแต่เปลี่ยนชื่อมาเท่านั้น
 - กรณีย้ายงาน: คล้ายกับข้อด้านบนครับ โดยที่เมื่อมีการย้ายงาน ก็อยากให้ใส่วันที่โยกย้าย(สิ้นสุดการทำงานในตำแหน่งนั้น) ให้เริ่ม Record ใหม่ โดยยกชื่อเดิม ที่อยู่เดิม สังกัดบริษัทเดิม ถูกลงโทษ ยกข้อมูลของเดิมในช่วงที่ทำงานนั้นมาเกือบหมด(ยกเว้นประวัติการฝึกอบรม ประวัติการตรวจปัจจัยเสี่ยง ที่อยากให้จบเป็นของช่วงเวลาที่ทำงานเดิม) แต่เปลี่ยนแค่ลักษณะงานที่ทำ
 - กรณีลาออก: ส่วนใหญ่แรงงานรับเหมาบริษัทผมจะเข้าๆออกๆอยู่เป็นประจำครับ ทำงานที่บริษัทเดิม สักพักก็ลาออกไป แล้วก็กลับมาสมัครใหม่ ในบริษัทใหม่ ผมอยากให้เก็บข้อมูลสมัยก่อนที่เขาจะลาออก ที่เคยทำงานกับบริษัทเดิมไว้ ไม่ทับกับของที่สมัครมาใหม่ มีการ Maintain วันที่ลาออก สาเหตุที่ลาออกไป

ความต้องการผมประมาณนี้ครับ ผมเลยไม่แน่ใจตั้งแต่การออกแบบ Databased ควรจะออกแบบอย่างไร แล้วจะต้องเอาไปทำ Query ต่ออย่างไรดี
เพื่อที่จะให้มีการเก็บทุก Transaction เอาไว้ ไม่มีการกระทบหรือบันทึกทับของเดิม นอกจากนี้แล้ว
ถ้าแรงงานรับเหมาแค่มีการเปลี่ยนชื่อหรือย้ายงานก็สามารถดึงข้อมูลบางส่วนหรือทั้งหมดที่เกี่ยวข้อง มาใช้ได้ Maintain วันย้าย วันลาออก เหตุผลย้าย เหตุผลลาออกได้

ประมาณนี้ครับ ไม่แน่ใจผมถามงงหรือเปล่า 555555
ยังไงรบกวนพี่ๆด้วยนะครับ ขอบคุณมากครับ

14
สวัสดีครับทุกท่าน ผมมีปัญหามาถามทุกท่าน 3 ข้อ
1. ผมต้องการทำเลขบอกลำดับด้านหน้า Record บนคล้าย Continuous Form คล้ายๆกับ Running Sum บน Report จะมีวิธีการทำอย่างไร? (ตามภาพ)


2. ผมทำช่องให้กรอกช่วงเวลาที่ต้องการค้นหา Record(Search by Date Rage) เอาไว้ครับ(ตามภาพ) แต่พบปัญหาคือ
ผลลัพท์ที่ Search มาไม่ตรงที่ต้องการ โดยถ้าเปนการค้นหาในช่วงวันที่หลักเดียว เช่น วันที่ 1-9 ระบบจะค้นหา
โดยเป็นรูปแบบ เดือน/วัน/ปี แต่ถ้าเปนวันที่ 2 หลัก เช่น 10-31 ระบบจะค้นหาได้ผลลัพธ์ที่ถูกต้องแบบ วัน/เดือน/ปี
ผมจะมีวิธีแก้อย่างไร (โค้ดที่ผมเขียนเป็นอย่างนี้นะครับ)

Private Sub cmdSearch_Click()
    'Search button
Call Search
End Sub
_____________________________________________________________________________________________________
Sub Search()
Dim strCriteria, task As String
Me.Refresh
If IsNull(Me.txtDateFrom) Or IsNull(Me.txtDateTo) Then
    MsgBox "Please enter the date range", vbInformation, "Date Range Required"
    Me.txtDateFrom.SetFocus
Else
    strCriteria = "([TransactionsDate] >= #" & Me.txtDateFrom & "# And [TransactionsDate] <= #" & Me.txtDateTo & "#)"
    task = "select * from qryTransactions where (" & strCriteria & ") order by [TransactionsDate] ASC"
    DoCmd.ApplyFilter task
End If
End Sub


3. ผมต้องการให้แสดงผลลัพธ์ทั้งหมดที่ค้นหาได้ ตามภาพด้านบน จะมีแนวทางเขียนโค้ดอย่างไร

ขอบคุณทุกท่านล่วงหน้าครับ
ปล. ข้อมูลที่เหน เป็นข้อมูลจำลองนะครับ มิใช่ของจริงแต่อย่างใด

15
เรียน ทุกท่านครับ

ผมพัฒนา Access บน o365 แต่เวลานำมาใช้งานจริง ผมจะนำมาใช้กับเครื่อง MS Access 2016 ครับ
ปัญหาคือ เมื่อผมนำไฟล์ Access ที่ทำจาก o365 มาเปิดใช้งานบน MS Access 2016 กลับเปิดไม่ได้ ทั้งที่ Version 2016 กับ Version o365 ไม่ห่างกันเท่าไหร่

อย่างนี้ผมมีวิธีแก้ไขอย่างไรครับ เพราะทำบน o365 มาจนจะสุดทางแล้ว แต่กลับเปิดใข้งานบน MS Access 2016 ไม่ได้

รบกวนทุกท่านหน่อยนะครับ
ขอบคุณมากครับ

16
สวัสดีครับ

กำลังทำฟอร์มค้นหาใน MS Access ครับ โดยมีโค้ดตามด้านล่างนี้ ซึ่งผมต้องการสร้างเงื่อนไข เพื่อเช็คว่าถ้าค้นหาด้วย Keyword แล้วไม่พบ
ให้มี Msg box แจ้งเตือนขึ้นมา พอจะมีแนวทางแนะนำหรือช่วยเขียนโค้ดต่อให้ดูเปนตัวอย่างได้ไหมครับ

ขอบพระคุณมากๆครับ



Private Sub cmdSearch_Click()
    If IsNull(Me.txtSearch) Then
        MsgBox "Please fill keyword for search in search box", , "Keyword for Search"
        Me.txtSearch.SetFocus
    Else
        Dim strsearch As String
        Dim strText As String
        strText = Me.txtSearch.Value
        strsearch = "SELECT * from qryAllergic where ((BrieflySCGEmployeeID like ""*" & strText & "*"") or (EmpName like ""*" & strText & "*"") or (AllergicName like ""*" & strText & "*""))"
        Me.RecordSource = strsearch
    End If
End Sub

หน้า: [1] 2