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



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

06 ก.ค. 61 , 13:51:27
อ่าน 1481 ครั้ง

MyDDT

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

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

ปล.ภาพประกอบไม่มี ไฟล์งานอยู่ที่บ้าน ต้องขออภัยด้วยนะคะ

 

06 ก.ค. 61 , 16:03:50
ตอบกลับ #1

ปิ่นณรงค์

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #1 เมื่อ: 06 ก.ค. 61 , 16:03:50 »
คือสร้างฟอร์มบันทึกประวัติพนง.ขึ้นมา แล้วทีนี้อยากจะให้แบบว่า เวลากดบันทึกฟอร์มแล้ว มี Messagebox ขึ้นว่า บันทึกเรียบร้อย อะไรประมาณนี้อ่ะค่ะ

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

ปล.ภาพประกอบไม่มี ไฟล์งานอยู่ที่บ้าน ต้องขออภัยด้วยนะคะ

1.คำสั่ง ที่เมื่อกดบันทึกข้อมูลแล้ว แสดงข้อความแจ้ง Code ให้ใส่ Code ในส่วนท้ายของ คำสั่งบันทึกประมาณนี้ครับ
โค๊ด: [Select]
MSGBOX "บันทึกข้อมูลเรียบร้อยแล้ว", vbInformation, "สถานะ"
2.SubForm นั้นต้องมีการเชื่อมโยงเขตข้อมูลหลัก กับ เขตข้อมูลลูก คุณต้องกำหนด การเชื่อมโยงกันด้วยครับ
ปกติจะกำหนด ID ของ ฟอร์มหลัก เชื่อมกับ ID ของฟอร์มย่อย(SubForm)
วิธีการกำหนด สามารถไปกำหนดได้ที่ ส่วนคุณสมบัติของ Subform ตรงส่วนของข้อมูล
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: MyDDT

06 ก.ค. 61 , 16:50:02
ตอบกลับ #2

MyDDT

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

สอบถามนิดนึงค่ะว่า ตรง หน้าต่างใส่โค้ด VBA อ่ะค่ะ มันไม่อ่านภาษาไทย ต้องแก้ตรงไหนหรอคะ

 

06 ก.ค. 61 , 17:15:08
ตอบกลับ #3

ปิ่นณรงค์

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #3 เมื่อ: 06 ก.ค. 61 , 17:15:08 »

สอบถามนิดนึงค่ะว่า ตรง หน้าต่างใส่โค้ด VBA อ่ะค่ะ มันไม่อ่านภาษาไทย ต้องแก้ตรงไหนหรอคะ

ที่หน้าต่างใส่โค้ด ไปที  Tool > Option > Editor Format
ที่ Font กำหนดเป็น Tahoma Bold (Thai)  หรือ ฟ้อนอื่นๆ ที่มีคำว่า(thai) ต่อท้ายอยู่ครับ
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: MyDDT, armdack

06 ก.ค. 61 , 18:27:58
ตอบกลับ #4

MyDDT

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #4 เมื่อ: 06 ก.ค. 61 , 18:27:58 »
ถ้าอยากจะสอบถามอะไรเพิ่มเติมนี่ มีช่องทางติดต่อบ้างมั้ยคะ พอดีได้ทำโปรเจค อยากมีที่ปรึกษาเกี่ยวกับ Access อ่ะค่ะ ไม่มีพื้นฐานอะไรเลย

 

06 ก.ค. 61 , 18:44:34
ตอบกลับ #5

ปิ่นณรงค์

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #5 เมื่อ: 06 ก.ค. 61 , 18:44:34 »
ถ้าอยากจะสอบถามอะไรเพิ่มเติมนี่ มีช่องทางติดต่อบ้างมั้ยคะ พอดีได้ทำโปรเจค อยากมีที่ปรึกษาเกี่ยวกับ Access อ่ะค่ะ ไม่มีพื้นฐานอะไรเลย

สามารถศึกษาจากที่นี้ได้เลยครับ ติดปัญหาตรงไหน จะมีอาจารย์หลายๆ และเพื่อนสมาชิกหลายท่านๆ ช่วยแนะนำวิธีการให้ครับ คุณสามารถโพสกระทู้สอบถามได้เลยไม่ต้องเกรงใจครับ ถ้าสนใจศึกษา Access แต่ยังไม่ค่อยเข้าใจวิธีการ ให้ลองศึกษาที่ช่องของอาจารย์ TTT http://www.youtube.com/c/AccessCreator link
มีการสอนสร้างโปรแกรมโดยใช้ Access อยู่มากมายให้ศึกษาครับ ตั้งแต่การหัดสร้างฐานข้อมูล ซึ่งเป็นส่วนที่สำคัญตั้งแต่เริ่มต้นสร้างโปรแกรม
มีการทำตัวอย่างให้ดูด้วยครับ

ถ้าสงสัยแบบเจาะจง เป็นส่วนๆก็สอบถามที่ เว็บนี้ได้เลยครับ
« แก้ไขครั้งสุดท้าย: 06 ก.ค. 61 , 18:48:00 โดย ปิ่นณรงค์ »
:love: :grin:
 

06 ก.ค. 61 , 19:35:31
ตอบกลับ #6

MyDDT

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #6 เมื่อ: 06 ก.ค. 61 , 19:35:31 »
ถ้าอยากจะสอบถามอะไรเพิ่มเติมนี่ มีช่องทางติดต่อบ้างมั้ยคะ พอดีได้ทำโปรเจค อยากมีที่ปรึกษาเกี่ยวกับ Access อ่ะค่ะ ไม่มีพื้นฐานอะไรเลย

สามารถศึกษาจากที่นี้ได้เลยครับ ติดปัญหาตรงไหน จะมีอาจารย์หลายๆ และเพื่อนสมาชิกหลายท่านๆ ช่วยแนะนำวิธีการให้ครับ คุณสามารถโพสกระทู้สอบถามได้เลยไม่ต้องเกรงใจครับ ถ้าสนใจศึกษา Access แต่ยังไม่ค่อยเข้าใจวิธีการ ให้ลองศึกษาที่ช่องของอาจารย์ TTT http://www.youtube.com/c/AccessCreator link
มีการสอนสร้างโปรแกรมโดยใช้ Access อยู่มากมายให้ศึกษาครับ ตั้งแต่การหัดสร้างฐานข้อมูล ซึ่งเป็นส่วนที่สำคัญตั้งแต่เริ่มต้นสร้างโปรแกรม
มีการทำตัวอย่างให้ดูด้วยครับ

ถ้าสงสัยแบบเจาะจง เป็นส่วนๆก็สอบถามที่ เว็บนี้ได้เลยครับ

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


2.คือตามภาพเลยค่ะ พอเรากรอกข้อมูล (อันนี้ลองกรอกเล่นดูค่ะว่ามันจะได้หรือไม่) ข้อมูลมันขึ้นเป็น 2 แถวอย่างที่เห็นในกรอบแดง พอแอดข้อมูลเข้าใหม่ ข้อมูลที่บันทึกไปแล้ว มันหายไปอ่ะค่ะ อันนี้ต้องไปแก้ตรงส่วนไหนหรอคะ

 

06 ก.ค. 61 , 20:11:27
ตอบกลับ #7

ปิ่นณรงค์

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #7 เมื่อ: 06 ก.ค. 61 , 20:11:27 »
ตอบข้อ 1
ผมกำหนด combobox สถานะ ชื่อ status
             textbox    วันที่ลาออก ชื่อ DateOut
             combobox สาเหตุการลาออก ชื่อ OutDetail

ที่Event Afterupdate ของ combobox status ใส่โค้ดดังนี้

โค๊ด: [Select]
Private Sub Status_AfterUpdate()
If Me.Status = "ยังทำงานอยู่" Then
Me.OutDetail.Locked = True
Me.DateOut.Locked = True
Me.OutDetail.Enabled = False
Me.DateOut.Enabled = False
Me.OutDetail = Null
Me.DateOut = Null
Else
Me.OutDetail.Locked = False
Me.DateOut.Locked = False
Me.OutDetail.Enabled = True
Me.DateOut.Enabled = True
End If
End Sub

คำสั่งนี้ เราใช้ IF Function เพื่อสร้างเงื่อนไขการทำงานของ Combobox และ Textbox ที่เรากำหนด  ถ้า เราเลือก ยังทำงานอยู่ ซึ่งกำหนดให้ เป็นความจริง ก็จะทำงานตามที่เรากำหนดไว้ แต่ถ้าไม่เป็นจริงก็จะทำงาน ที่ Else ลงมา
Locked คือ ห้ามไม่ให้กรอกข้อมูลได้
Enabled คือ ปิดการใช้งาน
Null คือ ถ้ามีข้อมูลอยู่ก็ทำให้เป็นค่าว่าง

ข้อสองน่าจะกำหนด RelationShip ไม่ถูกต้อง และตั้งค่า เชื่อมต่อ ตรง Link master กับ Link Child Field ไม่ถูกต้องครับ

ตัวอย่างด้านล่าง
« แก้ไขครั้งสุดท้าย: 06 ก.ค. 61 , 20:21:22 โดย ปิ่นณรงค์ »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: MyDDT, armdack

06 ก.ค. 61 , 20:29:23
ตอบกลับ #8

ปิ่นณรงค์

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #8 เมื่อ: 06 ก.ค. 61 , 20:29:23 »



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

และต้องไปกำหนด ความสัมพันธ์ของตารางด้วยครับ


ตัวอย่างโปรแกรมครับลองนำไปประยุกต์ใช้ดูนะครับ
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: MyDDT

06 ก.ค. 61 , 20:50:21
ตอบกลับ #9

MyDDT

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #9 เมื่อ: 06 ก.ค. 61 , 20:50:21 »
ทำไมทำไม่ได้อ่ะคะ ลองทำตามที่อาจารย์แนะนำแล้ว แต่มันก็ยังเป็นแบบเดิมเลยอ่ะค่ะ มีตรงไหนที่ต้องเพิ่มเติมหรือป่าวคะ




 

06 ก.ค. 61 , 20:58:27
ตอบกลับ #10

ปิ่นณรงค์

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #10 เมื่อ: 06 ก.ค. 61 , 20:58:27 »
ทำไม ชื่อ Field ในตาราง หลัก กับรองเหมือนกันเลยละครับ
 subform ของคุณไว้ดูข้อมูลทั้งหมดที่เพิ่มเข้าไปใช่หรือเปล่าครับ คือกรอกข้อมูลจาก ฟอร์มหลักแล้วให้ มาแสดงในฟอร์มย่อยแบบนั้นเปล่าครับ
:love: :grin:
 

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

MyDDT

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #11 เมื่อ: 06 ก.ค. 61 , 21:09:48 »
ทำไม ชื่อ Field ในตาราง หลัก กับรองเหมือนกันเลยละครับ
 subform ของคุณไว้ดูข้อมูลทั้งหมดที่เพิ่มเข้าไปใช่หรือเปล่าครับ คือกรอกข้อมูลจาก ฟอร์มหลักแล้วให้ มาแสดงในฟอร์มย่อยแบบนั้นเปล่าครับ

ใช่เลยค่ะ เหมือนบันทึกจากฟอร์มหลักลงฟอร์มย่อยอ่ะค่ะ พอกดบันทึก ช่องก็จะว่างให้เราบันทึก Record ต่อไปได้ อะไรประมาณนี้อ่ะค่ะ

 

06 ก.ค. 61 , 21:17:34
ตอบกลับ #12

ปิ่นณรงค์

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #12 เมื่อ: 06 ก.ค. 61 , 21:17:34 »
ทำไม ชื่อ Field ในตาราง หลัก กับรองเหมือนกันเลยละครับ
 subform ของคุณไว้ดูข้อมูลทั้งหมดที่เพิ่มเข้าไปใช่หรือเปล่าครับ คือกรอกข้อมูลจาก ฟอร์มหลักแล้วให้ มาแสดงในฟอร์มย่อยแบบนั้นเปล่าครับ

ใช่เลยค่ะ เหมือนบันทึกจากฟอร์มหลักลงฟอร์มย่อยอ่ะค่ะ พอกดบันทึก ช่องก็จะว่างให้เราบันทึก Record ต่อไปได้ อะไรประมาณนี้อ่ะค่ะ


งั้นก็เอา การตั้งค่าตรง หัวข้อที่ 3 ออกไปครับ

Form หลัก และ Form ย่อย ใช้ RecordSource จากตารางเดียวกัน
สมมุติชื่อ ฟอร์มย่อยว่า Subform
ที่ปุ่ม บันทึกใส่แบบนี้ครับ

โค๊ด: [Select]
Private Sub Save_Click()
DoCmd.GoToRecord , , acNewRec
subform.Requery
MsgBox "บันทึกข้อมูลแล้วค่ะ", vbInformation, "สถานะ"
End Sub

ลองดูตัวอย่างนี้ครับ
« แก้ไขครั้งสุดท้าย: 06 ก.ค. 61 , 21:25:01 โดย ปิ่นณรงค์ »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: MyDDT, armdack

06 ก.ค. 61 , 21:50:59
ตอบกลับ #13

MyDDT

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #13 เมื่อ: 06 ก.ค. 61 , 21:50:59 »
ขอบคุณค่ะ เดี๋ยวลองไปแก้ไขดูก่อนนะคะ อาจจะได้รบกวนบ่อยเลย เพราะเร็วๆนี้จะต้องให้อาจารย์ที่วิทลัยตรวจงานแล้ว ขอบคุณอาจารย์ปิ่นณรงค์มากเลยนะคะ

 

06 ก.ค. 61 , 22:15:01
ตอบกลับ #14

ปิ่นณรงค์

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #14 เมื่อ: 06 ก.ค. 61 , 22:15:01 »
ที่จริง ถ้าจะให้ Advance อีกนิด เราสามารถสร้าง Control แบบ Unbound น่าจะเวิคนะครับ

ตัวอย่างเพื่อจะนำไปปรับใช้

คำสั่งในการบันทึกข้อมูล
โค๊ด: [Select]
Private Sub Save_Click()
Call AddNewToTable
subform.Requery
MsgBox "บันทึกข้อมูลแล้วค่ะ", vbInformation, "สถานะ"
Call ResetForm
End Sub

โค๊ด: [Select]
Sub AddNewToTable()
On Error GoTo Err_Err
    Dim DB As Database
    Dim rs As Recordset
    Set DB = CurrentDb()
    Set rs = DB.OpenRecordset("BillHead", dbOpenDynaset)
    rs.AddNew
    rs![BillNumber] = Me.BillNumber
    rs![CustomerName] = Me.CustomerName
    rs![CustomerLastName] = Me.CustomerLastName
    rs![Tel1] = Me.Tel1
    rs![Tel2] = Me.Tel2
    rs.Update
Exit_err:
        Exit Sub
Err_Err:
        MsgBox Error$
        MsgBox "Error, ( Add New)!", vbExclamation, "แจ้ง"
        Resume Exit_err
End Sub

คำสั่งทำให้ ข้อมูลจากตัว Control บนฟอร์ม เป็นค่าว่าง
โค๊ด: [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

ประมาณนี้ครับ
« แก้ไขครั้งสุดท้าย: 06 ก.ค. 61 , 22:24:08 โดย ปิ่นณรงค์ »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: MyDDT, armdack

07 ก.ค. 61 , 08:56:47
ตอบกลับ #15

MyDDT

: ขอสอบถามเกี่ยวกับฟอร์มที่สร้างทีค่ะ
« ตอบกลับ #15 เมื่อ: 07 ก.ค. 61 , 08:56:47 »
ขอบคุณค่ะ แล้วพอจะมีทางแก้ปัญหานี้มั้ยคะ คือเราเซฟไฟล์ Access ที่บ้านมา ว่าจะมานั่งทำที่ทำงาน ที่บ้านเป็น 2010 ที่ทำงานเป็น 2007 WinXP พอเปิดไฟล์ขึ้นมา มันขึ้นว่า "รูปแบบฐานข้อมูลที่ไม่รู้จัก 'C:\...' " ประมานนี้อ่ะค่ะ แล้วก็เข้าไม่ได้เลย มาหน้าเริ่มต้นสร้าง Blank Database ใหม่เลยอ่าค่ะ

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

2.คำนวณชั่วโมงการทำงานทั้งหมด อย่างสมมุติ น.ส.สวย เข้างาน= 08.00น. ออกงาน = 17.00น. ชั่วโมงทำงาน = 08.00 ชม. แบบนี้ต้องคำนวณอย่างไร ตั้งชนิดข้อมูลของเข้างาน,ออกงาน เป็น Date/Time นี่คือถูกต้องแล้วใช่มั้ยคะ

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

ภาพประกอบค่ะ

ขออภัยด้วยนะคะที่ต้องวาดให้ดูแทนที่จะแคปหน้าจอเอา เพราะคอมไม่เอื้ออำนวยจริงๆ ขอโทษด้วยนะคะ
« แก้ไขครั้งสุดท้าย: 07 ก.ค. 61 , 09:27:49 โดย ไอซ์ค่ะ »

 


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