การทำตัวกรองผ่านฟอร์ม
กระทู้เก่าบอร์ด อ.Yeadram

 8,252   61
URL.หัวข้อ / URL
การทำตัวกรองผ่านฟอร์ม

การทำตัวกรองผ่านฟอร์ม สามารถทำได้มั้ยคะ

61 Reply in this Topic. Dispaly 4 pages and you are on page number 3

41 @R15856
หนูแก้ไขได้แล้วค่ะ
42 @R15857
ขอถามอีกนิด คือถ้าอยากเชครายเดือน ต้องแก้โค๊ดอย่างไรคะ
43 @R15860
Dim Fdate As String

    If Me.Text9 & "" <> "" Then Fdate = Me.Text9

        If Me.Text9 & "" = "" Then

            Me.FilterOn = False

            Me.Text6 = "Every Day"

            Me.Text7.ControlSource = "=DSum('[จำนวนเงิน]','Tran','[ประเภทรายการ] = " & "''Y''" & "')"

            Me.Text8.ControlSource = "=DSum('[จำนวนเงิน]','Tran','[ประเภทรายการ] = " & "''Z''" & "')"

        Else

            Me.Filter = "DateValue(Tran.[วันเวลา]) = '" & Me.Text9 & "'"

            Me.FilterOn = True

            Me.Text6 = Me.Text9

            Me.Text7.ControlSource = "=Nz(DSum('[จำนวนเงิน]','Tran','[ประเภทรายการ] = " & _

            "''Y''" & "AND DateValue([วันเวลา]) = " & "''" & Me.Text6 & "''" & "'),0)"

            Me.Text8.ControlSource = "=Nz(DSum('[จำนวนเงิน]','Tran','[ประเภทรายการ] = " & _

            "''Z''" & "AND DateValue([วันเวลา]) = " & "''" & Me.Text6 & "''" & "'),0)"

        End If

    If Not IsNull(Fdate) Then Me.Text9 = Fdate
44 @R15861
ต้องแก้ DateValue หรือส่วนไหน เพื่อใช้ในการเชค รายเดือนค่ะ
45 @R15871
เปลี่ยนจากฟังก์ชั่น DateValue() เป็น Format()

จาก:
Me.Filter = "DateValue(Tran.[วันเวลา]) = '" & Me.Text9 & "'"
แก้เป็น:
Me.Filter = "Format(Tran.[วันเวลา],'m/yyyy') = '" & Me.Text9 & "'"

จาก:
Me.Text7.ControlSource = "=Nz(DSum('[จำนวนเงิน]','Tran','[ประเภทรายการ] = " & "''Y''" & "AND DateValue([วันเวลา]) = " & "''" & Me.Text6 & "''" & "'),0)"
แก้เป็น:
Me.Text7.ControlSource = "=Nz(DSum('[จำนวนเงิน]','Tran','[ประเภทรายการ] = " & "''Y''" & "AND Format([วันเวลา], ''m/yyyy'') = " & "''" & Me.Text6 & "''" & "'),0)"

จาก:
Me.Text8.ControlSource = "=Nz(DSum('[จำนวนเงิน]','Tran','[ประเภทรายการ] = " & "''Z''" & "AND DateValue([วันเวลา]) = " & "''" & Me.Text6 & "''" & "'),0)"
แก้เป็น:
Me.Text8.ControlSource = "=Nz(DSum('[จำนวนเงิน]','Tran','[ประเภทรายการ] = " & "''Z''" & "AND Format([วันเวลา], ''m/yyyy'') = " & "''" & Me.Text6 & "''" & "'),0)"

เวลาใส่เพื่อกรองข้อมูลจะเป็นใส่เป็นค่า เดือน/ปี เข่น 4/2013
46 @R15903
ขอบคุณค่ะ

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

^__^
47 @R15935
...............
48 @R15939
ไม่ค่อยเข้าใจคำถาม แต่หากอยากให้ข้อมูลมันอัพเดทก็ใส่คำสั่งประมาณนี้
สำหรับทั้งฟอร์ม
Me.Requery

สำหรับเฉพาะคอนโทรล
Me.ชื่อคอนโทรล.Requery
หรือ
DoCmd.Requery "ชื่อคอนโทรล"

หรืออาจลอง
Me.Recalc
Me.Refresh

อาจใช้ในเหตุการณ์ After Update ในคอนโทรลที่มีการเปลี่ยนแปลงข้อมูล
คำสั่งอ่านเพิ่มเติมได้จากการกดปุ่ม F1 ในหน้าต่าง VBE
49 @R15943
เริ่มใหม่ค่ะ

ภาพที่ 1
50 @R15944
ภาพที่ 2
51 @R15945
รูปที่ 3 ดูจากภาพที่อัปครั้งแรก เพราะอัปไม่ได้

คืออยากฝากเงินในเพจรายการทางการเงิน เช่น ฝาก 5 บาท ในรูปที่ 1
และไปดูในเพจยอดเงินในบัญชีเเล้วมันไม่เพิ่มให้ นั้นคือยอดเงินยังคงเดิมที่ 150000 บาท
จึงต้องปิดฟอร์มไปก่อน เเล้วเปิดมาใหม่ยอดเงินถึงจะเปลี่ยนแปลง

จะมีวิธีแก้ไขอย่างไรบ้างค่ะ
52 @R15950
ขึ้นอยู่กับการเขียนโค๊ดที่ช่องยอดรวมด้วยครับ เท่าที่ดูอาจเป็นได้ว่าเพราะการเขียนคำสั่งของคุณไม่ได้กระตุ้นการคำนวณที่ช่อง ยอดเงิน 150000 บาท ทุกๆครั้งที่คุณใส่ค่าในช่องฝากเงิน 5 บาท ให้คำนวณใหม่

ลองใส่เหตุการณ์ที่ช่อง ฝากเงิน 5 บาท Event > After Update ว่า
Me.Text1.Requery
- Text1 คือ ชื่อคอนโทรลยอดเงินผลรวม150000
- หรือไม่ก็ลองใส่ Me.Recalc
อะไรประมาณนี้ครับ จุดประสงค์คือทำไงก็ได้เพื่อกระตุ้นให้ตัวคอนโทรล ยอดเงิน เริ่มคำนวณใหม่อีกครั้งเท่านั้นเองครับ ลองดู

53 @R15952
ลองใส่เหตุการณ์ที่ช่อง ฝากเงิน 5 บาท Event > After Update ว่า
Me.Text1.Requery
- Text1 คือ ชื่อคอนโทรลยอดเงินผลรวม150000 นั้นคือ TotalShare


Private Sub Transaction_value_AfterUpdate(Cancel As Integer)
Me.TotalShare.Requery
End Sub
หรือ
Me.Recalc

ก็ยังไม่ได้ อีกอย่างไม่รู้ว่าหนูเข้าใจถูกป่าว ตามที่ได้เเสดงให้ดู
54 @R15953
เอางี้ครับ ทดสอบว่าหากใส่ค่าในเพจรายการทางการเงิน เช่น 5 บาทแล้ว
ไม่ต้องปิดฟอร์มครับ ให้ลองกดปุ่ม

F9 (ข้อมูลในเพจยอดเงินในบัญชี) อัพเดทให้หรือไม่
*หากได้ลองใช้คำสั่ง Me.Recalc ที่คอนโทรล "จำนวนเงิน 5 บาท" Event > After Update

F5 (ข้อมูลในเพจยอดเงินในบัญชี) อัพเดทให้หรือไม่
*หากได้ลองใช้คำสั่ง Me.Refresh ที่คอนโทรล "จำนวนเงิน 5 บาท" Event > After Update

Shift + F9 (ข้อมูลในเพจยอดเงินในบัญชี) อัพเดทให้หรือไม่
*หากได้ลองใช้คำสั่ง DoCmd.Requery "ชื่อคอนโทรลยอดเงินผลรวม150000" ที่คอนโทรล "จำนวนเงิน 5 บาท" Event > After Update

หากไม่ได้อีกให้ลองใช้คำสั่ง Me.Requery ที่คอนโทรล "จำนวนเงิน 5 บาท" Event > After Update
หากคำสั่งไหนได้ผลก็ใช้คำสั่งนั้นคำสั่งเดียว ลองตั้งแต่คำสั่งเบาๆ ที่ไม่ผลทำให้เรคคอร์ดต้องกลับไปแสดงที่เรคคอร์ดแรกก่อนดังนี้
1. Me.Recalc
2. DoCmd.Requery "ชื่อคอนโทรลยอดเงินผลรวม150000"
หรือ Me.ชื่อคอนโทรลยอดเงินผลรวม150000.Requery ก็เหมือนกัน
3. Me.Refresh
4. Me.Requery (หากต้องใช้อันนี้เท่านั้น เรคคอร์ดจะกลับไปเริ่มที่เรคคอร์ดแรกเสมอ)

ปล. คุณใส่เขียนโค๊ดในคอนโทรล TotalShare อย่างไร และใส่ไว้ที่ Property ตัวไหนครับ
55 @R15983
F9 (ข้อมูลในเพจยอดเงินในบัญชี) อัพเดทให้
และได้ลองใช้คำสั่ง Me.Recalc ที่คอนโทรล "จำนวนเงิน 5 บาท" Event > After Update
Private Sub Transaction_value_AfterUpdate(Cancel As Integer)
Me.Recalc
End Sub
แต่ไม่ได้

F5 (ข้อมูลในเพจยอดเงินในบัญชี) อัพเดทให้
และได้ลองใช้คำสั่ง Me.Refresh ที่คอนโทรล "จำนวนเงิน 5 บาท" Event > After Update
Private Sub Transaction_value_AfterUpdate(Cancel As Integer)
Me.Refresh
End Sub
แต่ไม่ได้

Shift + F9 (ข้อมูลในเพจยอดเงินในบัญชี) อัพเดทให้
และได้ลองใช้คำสั่ง DoCmd.Requery "ชื่อคอนโทรลยอดเงินผลรวม150000" ที่คอนโทรล "จำนวนเงิน 5 บาท" Event > After Update
Private Sub Transaction_value_AfterUpdate(Cancel As Integer)
DoCmd.Requery "TotalShare"
End Sub
แต่ไม่ได้

และใช้คำสั่ง Me.Requery ที่คอนโทรล "จำนวนเงิน 5 บาท" Event > After Update
Private Sub Transaction_value_AfterUpdate(Cancel As Integer)
Me.Requery
End Sub
แต่ไม่ได้

***ใส่เขียนโค๊ดในคอนโทรล TotalShare อย่างไร และใส่ไว้ที่ Property ตัวไหน
ดูตามภาพค่ะ

**** เเละเหตุผลที่แต่ละคำสั่งไม่ได้ คือ เมื่อใส่ 5 บาท มันจะมีหน้าต่างขึ้นดังภาพค่ะ
56 @R15984
57 @R15985
58 @R16000
ลักษณะการดึงฟอร์มมาแสดงเป็นซับฟอร์ม หลายๆตัว มันไม่ซิ้งค์กัน ผมลองใช้แค่ Me.Recalc ก็ใช้ได้แล้วนะครับ คือมันก็คำนวณให้ใหม่ จริงๆไม่น่ายาก เลยไม่รู้ว่าปัญหาจริงๆมันอยู่ตรงไหนกันแน่
เอาทีละขั้นก่อนแล้วกันนะครับ คือหากคุณกดปุ่ม F9 มันรวมค่าให้ใหม่ไหมครับ แค่กดปุ่มคีย์บอร์ดอย่างเดียวเท่านั้น ไม่ต้องใส่โค๊ดอะไร
59 @R16010
ถ้าอยากให้ใส่โค๊ด มันทำไม่ได้ใช่มั้ยค่ะ
60 @R16011
เเล้วถ้า ต้องการให้รหัสสมาชิกรันเลขอัตโนมัติ เมื่อมีการเพิ่มข้อมูลสมาชิกผ่านฟอร์ม
โดยไม่ต้องมานั่งคีย์รหัสสมาชิก หนูต้องทำอย่างไรคะ ^___^
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2130s