ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

07 ก.ค. 61 , 11:31:02
ตอบกลับ #16

ปิ่นณรงค์

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #16 เมื่อ: 07 ก.ค. 61 , 11:31:02 »


อ้างถึง
1.การคำนวณอายุ ถ้าต้องการให้ตอนกรอกประวัติพนักงาน กรอกวันเกิด/วันเริ่มงานเสร็จแล้ว ให้อายุ/อายุงานมันขึ้นเลยได้หรือป่าวคะ หรือถ้าไม่ได้ เราให้มันคำนวณตอนกดเซฟได้หรือป่าวคะ เพราะเมื่อวานลองลงโค้ดคำนวณดู มันเออเร่ออ่ะค่ะ เหมือนตัวเองจะยังไม่ค่อยเข้าใจหลักการของการวางโค้ดเลยค่ะ

 การคำนวนหาช่วงปี เดือน วัน หรือ เวลา เราสามารถใช้ DateDiff ในการหาค่าต่างๆ
เช่น การหาค่าอายุ  และ การหาอายุการทำงาน
ผมกำหนด
textbox ที่จะแสดงอายุชื่อ Age
และ textbox ที่จะระบุอายุชื่อ Birthday
โค้ดประมาณนี้ครับ
โค๊ด: [Select]
Me.Age = Int(DateDiff("m", [Birthday], Now()) / 12) & " ปี " & (DateDiff("m", [Birthday], Now()) Mod 12) & "เดือน " & Int(DateDiff("d", [Birthday], Now()) Mod 12) & " วัน "
การหา อายุงานใช้วิธีการเดียวกันครับ

อ้างถึง
2.คำนวณชั่วโมงการทำงานทั้งหมด อย่างสมมุติ น.ส.สวย เข้างาน= 08.00น. ออกงาน = 17.00น. ชั่วโมงทำงาน = 08.00 ชม. แบบนี้ต้องคำนวณอย่างไร ตั้งชนิดข้อมูลของเข้างาน,ออกงาน เป็น Date/Time นี่คือถูกต้องแล้วใช่มั้ยคะ
ผมสมมุติ textbox  3 อัน ชื่อ Timestart   ,   TimeEnd      ,    CalcTime
โดยจะกำหนดให้คำนวนเวลาทำงาน เมื่อระบุเวลา เริ่มและสินสุดการทำงาน และแสดงใน textbox ชื่อ Calctime
ตัวอย่างโค้ด
โค๊ด: [Select]
Sub CalTime()
If Me.TimeEnd < Me.TimeStart Then
Me.CalcTime = (DateDiff("h", [TimeStart], [TimeEnd]) + 24) & " ชั่วโมง"
Else
Me.CalcTime = DateDiff("h", [TimeStart], [TimeEnd]) & " ชั่วโมง"
End If
End Sub

Private Sub TimeEnd_AfterUpdate()
Call CalTime
End Sub
Private Sub TimeStart_AfterUpdate()
Call CalTime
End Sub

อ้างถึง
3.คือเรามีตารางเก็บข้อมูลการลางานแบบนี้ 01=มาทำงานปกติ 02=ลาป่วย 03=ลากิจ ... ถ้าต้องการให้มีช่อง2ช่อง ช่อง1 เป็นช่องเล็กๆไว้ใส่เลข 01 แล้วช่องที่2 ให้มันเด้งขึ้นมาเองว่า มาทำงานปกติ ประมาณนี้ ถ้าเราเปลี่ยนแปลงตัวเลข ตัวหนังสือก็เปลี่ยนตามไปด้วย ประมาณนี้อ่ะค่ะ ต้องทำอย่างไรคะ

วิธีการคือให้ไปดูการกำหนด แหล่งข้อมูลแถว  ของตัว Combobox นะครับ
สังเกตุดูจะเห็นว่า เราดึง Field ID และ Field Status ลงมาเพื่อใช้เป็น list ของ Combobox
ถ้าเราต้องการให้ กด เลือก ข้อมูลจาก Combobox แล้ว textbox ก็แสดง status ตรงกับ ID นั้น
ก็กำหนดแบบนี้ครับ ที่ Event Afterupdate

โค๊ด: [Select]
Private Sub Combo16_AfterUpdate()
Me.status = Me.Combo16.Column(1)
End Sub

ความหมาย ของ .Column(1) คือการเอา รายการจาก ตัว Combobox คอลัมน์ที่ 2 มาแสดง ใน textbox โดย .Column(0) คือคอลัมน์แรก ส่วน คอลัมน์ ต่อๆไป ก็สามารถระบุ 1 2 3 4 5 ไปเรื่อยๆ ได้ครับ
« แก้ไขครั้งสุดท้าย: 07 ก.ค. 61 , 12:10:22 โดย ปิ่นณรงค์ »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: MyDDT

07 ก.ค. 61 , 14:29:54
ตอบกลับ #17

MyDDT

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #17 เมื่อ: 07 ก.ค. 61 , 14:29:54 »
ขอบคุณสำหรับข้อมูลนะคะ เดี๋ยวเลิกงานจะรีบกลับไปลองแก้ไขดูเลยค่ะ

อ่อขอเพิ่มเติมข้อ 2 หน่อยค่ะ คือไม่อยากให้คำนวณช่วงเบรกอ่ะค่ะ 12.00-13.00 จะไม่ให้มันคำนวณออกมาอ่ะค่ะ ต้องเพิ่มเติมโค้ดตรงไหนคะ ขอบคุณค่ะ :confused:
« แก้ไขครั้งสุดท้าย: 07 ก.ค. 61 , 14:56:22 โดย ไอซ์ค่ะ »

 

07 ก.ค. 61 , 20:37:50
ตอบกลับ #18

MyDDT

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #18 เมื่อ: 07 ก.ค. 61 , 20:37:50 »
ขอแก้ใหม่นะคะ มันเป็นตรงจุดนี้ค่ะ

« แก้ไขครั้งสุดท้าย: 07 ก.ค. 61 , 21:11:38 โดย ไอซ์ค่ะ »

 

08 ก.ค. 61 , 01:18:53
ตอบกลับ #19

ปิ่นณรงค์

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #19 เมื่อ: 08 ก.ค. 61 , 01:18:53 »
ลบ Tshift = Shift ออกไปครับ พอดีผมลืมลบออกให้ มันเลย เออเร่อ
แก้คำสั่งเป็น
โค๊ด: [Select]
Sub ResetForm()
    On Error GoTo Err_Err
    Dim ctl As Control
   
       
    For Each ctl In Me
        If ctl.ControlType = acComboBox Then
            ctl = Null
        End If
        If ctl.ControlType = acTextBox Then
         ctl = Null
        End If
        If ctl.ControlType = acCheckBox Then
                ctl = False
        End If

    Next ctl
Exit_err:
        Exit Sub
Err_Err:
        MsgBox Error$
         MsgBox "ERROR ResetForm"
        Resume Exit_err

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

08 ก.ค. 61 , 01:48:33
ตอบกลับ #20

ปิ่นณรงค์

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #20 เมื่อ: 08 ก.ค. 61 , 01:48:33 »
อ้างถึง
อ่อขอเพิ่มเติมข้อ 2 หน่อยค่ะ คือไม่อยากให้คำนวณช่วงเบรกอ่ะค่ะ 12.00-13.00 จะไม่ให้มันคำนวณออกมาอ่ะค่ะ ต้องเพิ่มเติมโค้ดตรงไหนคะ ขอบคุณค่ะ :confused:

Sub CalTime()
Dim DTime1, Time1, DTime2, Time2 As Variant
Dim MainTime As Long

Time1 = "12:00 PM"
Time2 = "1:00 PM"

MainTime = (DateDiff("h", Me.TimeStart, Me.TimeEnd))

DTime1 = (DateDiff("h", Me.TimeStart, Time1))
DTime2 = (DateDiff("h", Me.TimeEnd, Time2))


If DTime1 > 0 Then
If DTime2 < 0 Then
MainTime = MainTime - 1
Me.CalcTime = MainTime & " ชั่วโมง"
Else
MainTime = MainTime
Me.CalcTime = MainTime & " ชั่วโมง"
End If
End If

If Me.TimeStart > Me.TimeEnd Then
MainTime = (DateDiff("h", Me.TimeStart, Me.TimeEnd) + 24)
Me.CalcTime = MainTime - 1 & " ชั่วโมง"
End If

If DTime1 = 0 Then
If DTime2 < 0 Then
MainTime = MainTime - 1
Me.CalcTime = MainTime & " ชั่วโมง"
End If
End If

If DTime1 < 0 Then
If DTime2 < 0 Then
MainTime = MainTime
Me.CalcTime = MainTime & " ชั่วโมง"
End If
End If

If DTime1 > 0 Then
If DTime2 = 0 Then
MainTime = MainTime - 1
Me.CalcTime = MainTime & " ชั่วโมง"
End If
End If
End Sub

Private Sub TimeEnd_AfterUpdate()
If Not IsNull(Me.TimeStart) And _
Not IsNull(Me.TimeEnd) Then
Call CalTime
End If
End Sub

Private Sub TimeStart_AfterUpdate()
If Not IsNull(Me.TimeStart) And _
Not IsNull(Me.TimeEnd) Then
Call CalTime
End If
End Sub


ลองศึกษาดูครับ
timestart คือ textbox เวลาเริ่มทำงาน
timeend คือ textbox เวลาสินสุด
Calctime คือ textbox ผลลัพท์ที่คำนวนได้คับ
« แก้ไขครั้งสุดท้าย: 09 ก.ค. 61 , 08:28:05 โดย ปิ่นณรงค์ »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: MyDDT

10 ก.ค. 61 , 22:21:52
ตอบกลับ #21

MyDDT

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #21 เมื่อ: 10 ก.ค. 61 , 22:21:52 »
ขอบคุณนะคะอาจารย์ สำหรับคำตอบด้านบนค่ะ มีคำถามอีกแล้วค่ะ หนูมือใหม่จริงๆ ไม่ค่อยรู้เรื่อง Access เลย ต้องขอโทษด้วยนะคะที่ถามบ่อย รวบรวมมาถามทีเดียวเลยละกันนะคะ

1. คือหนูเพิ่งมาตรวจสอบดูอ่ะค่ะว่า ลืมใส่ Field ที่เป็นวันที่ ในตารางเวลาการทำงานของพนักงาน แล้วทีนี้ หนูอยากทราบว่า หนูไปเพิ่มวันที่ในตารางแล้ว ถ้าจะเพิ่มลงในซับฟอร์ม จะสามารถเพิ่มได้อย่างไรคะ(1) แล้วทีนี้ พอหนูเพิ่ม Field วันที่ไป โค้ดขึ้น Error ค่ะ แต่บันทึกได้ เลยงงว่ามันมีปัญหาอะไรหรือป่าวคะ(2) แล้วอีกอย่างค่ะ คือตอนที่ลองบันทึกข้อมูลลงไป ชื่อพนักงานไม่ขึ้นในซับฟอร์ม แต่ในตารางชื่อขึ้นปกติอ่ะค่ะ ต้องแก้อย่างไรคะ(3) (ข้อนี้มีภาพประกอบ 3 ภาพค่ะ)





2.อยากทราบการทำฟอร์มค้นหาค่ะว่า ถ้าเราต้องการให้ค้นหาแบบดูข้อมูลพนักงานทั้งหมดเลยอ่ะค่ะ พอมันโชว์มาทั้งหมดแล้ว ถ้าเราจะดูแค่ Record นี้ ก็ดับเบิ้ลคลิกเข้าไปดู ข้อมูลพนักงานคนนั้น ก็จะปรากฎขึ้นมาคนเดียว และก็ค้นหาแบบใส่คีย์เวิดลงในช่องค้นหาไป แล้วก็มี Record ชื่อนั้นโชว์ก่อน แล้วดับเบิ้ลคลิกแล้วโชว์ประวัติขึ้นมา อันนี้ต้องสร้างฟอร์มอย่างไรบ้างคะ



3.อยากทราบปุ่มที่ไว้แก้ไข Record บน ฟอร์มที่บันทึกไปแล้วอ่ะค่ะ มันไม่ใช่ปุ่ม Undo ที่มีอยู่ใน Access ใช้มั้ยคะ เพราะลองใช้งานมัน มันรู้สึกว่ามันไม่ใช่ปุ่มแก้ไขอ่ะค่ะ



4.ในฟอร์มลงทะเบียนวิทยากรกับลงทะเบียนพนักงานที่เข้าอบรมอ่ะค่ะ ถ้าในการอบรมครั้งนึง มีพนักงานหรือวิทยากรหลายคน มันต้อสร้างตารางขึ้นมาใหม่หรือเปล่าคะ เพื่อให้มันบันทึกเข้าระบบได้อ่ะค่ะ




ถ้าหนูถามเยอะไปหนูขออภัยด้วยนะคะ เพราะไม่มีเวลานั่งศึกษาด้วยตัวเองแล้วอ่ะค่ะ งานที่ บริษัทก็มากโขล่ะ มาเจองานที่วิทลัยที่สั่งงานมาเท่าภูเขาอีก  :cry: :cry: :cry:

 

11 ก.ค. 61 , 08:24:41
ตอบกลับ #22

ปิ่นณรงค์

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #22 เมื่อ: 11 ก.ค. 61 , 08:24:41 »
ชื่อของ Field ผมว่าเปลี่ยนไปใช้ภาษาอังกกษดีกว่าครับ จะได้ไม่มีปัญหาภายหลัง
ส่วน error ต่างๆ ให้ส่งไฟล์ที่ทำอยู่มาที่ pinnarong1115@hotmail.com
เดี่ยวผมดูให้ครับ
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: MyDDT

11 ก.ค. 61 , 12:53:15
ตอบกลับ #23

MyDDT

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #23 เมื่อ: 11 ก.ค. 61 , 12:53:15 »
ชื่อของ Field ผมว่าเปลี่ยนไปใช้ภาษาอังกกษดีกว่าครับ จะได้ไม่มีปัญหาภายหลัง
ส่วน error ต่างๆ ให้ส่งไฟล์ที่ทำอยู่มาที่ pinnarong1115@hotmail.com
เดี่ยวผมดูให้ครับ

ส่งไฟล์ให้ในเมล์แล้วนะคะ รบกวนด้วยค่าา

 

11 ก.ค. 61 , 21:09:11
ตอบกลับ #24

ปิ่นณรงค์

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #24 เมื่อ: 11 ก.ค. 61 , 21:09:11 »
ไฟล์ที่ส่งมาไม่สามารถโหลดได้ครับ คุณต้อง Zip ไฟล์ แล้ว Attach File ส่งเมลมาครับไม่งั้นผมจะไม่สามารถโหลดได้
:love: :grin:
 

12 ก.ค. 61 , 09:48:25
ตอบกลับ #25

MyDDT

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #25 เมื่อ: 12 ก.ค. 61 , 09:48:25 »
ส่งใหม่แล้วนะคะ ขออภัยด้วยค่ะ

 

20 ก.ค. 61 , 17:05:22
ตอบกลับ #26

MyDDT

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #26 เมื่อ: 20 ก.ค. 61 , 17:05:22 »
อาจารย์คะ หนูมีคำถาม ส่งไปถามอาจารย์ทางอีเมล์ รบกวนอาจารย์ช่วยดูให้หน่อยนะคะ ขอบคุณมากค่ะ

 


บอร์ดเรียนรู้ Access สำหรับคนไทย