กระทู้เก่าบอร์ด อ.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
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
จาก:
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 มันอัปเดต ข้อมูล
ทันที โดยไม่ต้องปิดฟอร์ม แล้วมาเปิดดูให้เพื่อให้มันอัปเดต หนูต้องทำอย่างไรคะ
^__^
และถ้าหนูอยากให้ข้อมูลที่อยู่ในฟอร์มเดียวกันและมาสร้างเป็นเพจ(หน้า)ในฟอร์มนั้น
เเละเมื่อมีการเพิ่มข้อมูลเพจ(หน้า) 1 ไป และอยากให้เมื่อเปิดเพจ(หน้า) 2 มันอัปเดต ข้อมูล
ทันที โดยไม่ต้องปิดฟอร์ม แล้วมาเปิดดูให้เพื่อให้มันอัปเดต หนูต้องทำอย่างไรคะ
^__^
47 @R15935
...............
48 @R15939
ไม่ค่อยเข้าใจคำถาม แต่หากอยากให้ข้อมูลมันอัพเดทก็ใส่คำสั่งประมาณนี้
สำหรับทั้งฟอร์ม
Me.Requery
สำหรับเฉพาะคอนโทรล
Me.ชื่อคอนโทรล.Requery
หรือ
DoCmd.Requery "ชื่อคอนโทรล"
หรืออาจลอง
Me.Recalc
Me.Refresh
อาจใช้ในเหตุการณ์ After Update ในคอนโทรลที่มีการเปลี่ยนแปลงข้อมูล
คำสั่งอ่านเพิ่มเติมได้จากการกดปุ่ม F1 ในหน้าต่าง VBE
สำหรับทั้งฟอร์ม
Me.Requery
สำหรับเฉพาะคอนโทรล
Me.ชื่อคอนโทรล.Requery
หรือ
DoCmd.Requery "ชื่อคอนโทรล"
หรืออาจลอง
Me.Recalc
Me.Refresh
อาจใช้ในเหตุการณ์ After Update ในคอนโทรลที่มีการเปลี่ยนแปลงข้อมูล
คำสั่งอ่านเพิ่มเติมได้จากการกดปุ่ม F1 ในหน้าต่าง VBE
49 @R15943
เริ่มใหม่ค่ะ
ภาพที่ 1
ภาพที่ 1
50 @R15944
ภาพที่ 2
51 @R15945
รูปที่ 3 ดูจากภาพที่อัปครั้งแรก เพราะอัปไม่ได้
คืออยากฝากเงินในเพจรายการทางการเงิน เช่น ฝาก 5 บาท ในรูปที่ 1
และไปดูในเพจยอดเงินในบัญชีเเล้วมันไม่เพิ่มให้ นั้นคือยอดเงินยังคงเดิมที่ 150000 บาท
จึงต้องปิดฟอร์มไปก่อน เเล้วเปิดมาใหม่ยอดเงินถึงจะเปลี่ยนแปลง
จะมีวิธีแก้ไขอย่างไรบ้างค่ะ
คืออยากฝากเงินในเพจรายการทางการเงิน เช่น ฝาก 5 บาท ในรูปที่ 1
และไปดูในเพจยอดเงินในบัญชีเเล้วมันไม่เพิ่มให้ นั้นคือยอดเงินยังคงเดิมที่ 150000 บาท
จึงต้องปิดฟอร์มไปก่อน เเล้วเปิดมาใหม่ยอดเงินถึงจะเปลี่ยนแปลง
จะมีวิธีแก้ไขอย่างไรบ้างค่ะ
52 @R15950
ขึ้นอยู่กับการเขียนโค๊ดที่ช่องยอดรวมด้วยครับ เท่าที่ดูอาจเป็นได้ว่าเพราะการเขียนคำสั่งของคุณไม่ได้กระตุ้นการคำนวณที่ช่อง ยอดเงิน 150000 บาท ทุกๆครั้งที่คุณใส่ค่าในช่องฝากเงิน 5 บาท ให้คำนวณใหม่
ลองใส่เหตุการณ์ที่ช่อง ฝากเงิน 5 บาท Event > After Update ว่า
Me.Text1.Requery
- Text1 คือ ชื่อคอนโทรลยอดเงินผลรวม150000
- หรือไม่ก็ลองใส่ Me.Recalc
อะไรประมาณนี้ครับ จุดประสงค์คือทำไงก็ได้เพื่อกระตุ้นให้ตัวคอนโทรล ยอดเงิน เริ่มคำนวณใหม่อีกครั้งเท่านั้นเองครับ ลองดู
ลองใส่เหตุการณ์ที่ช่อง ฝากเงิน 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
ก็ยังไม่ได้ อีกอย่างไม่รู้ว่าหนูเข้าใจถูกป่าว ตามที่ได้เเสดงให้ดู
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 ตัวไหนครับ
ไม่ต้องปิดฟอร์มครับ ให้ลองกดปุ่ม
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 บาท มันจะมีหน้าต่างขึ้นดังภาพค่ะ
และได้ลองใช้คำสั่ง 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 มันรวมค่าให้ใหม่ไหมครับ แค่กดปุ่มคีย์บอร์ดอย่างเดียวเท่านั้น ไม่ต้องใส่โค๊ดอะไร
เอาทีละขั้นก่อนแล้วกันนะครับ คือหากคุณกดปุ่ม F9 มันรวมค่าให้ใหม่ไหมครับ แค่กดปุ่มคีย์บอร์ดอย่างเดียวเท่านั้น ไม่ต้องใส่โค๊ดอะไร
59 @R16010
ถ้าอยากให้ใส่โค๊ด มันทำไม่ได้ใช่มั้ยค่ะ
60 @R16011
เเล้วถ้า ต้องการให้รหัสสมาชิกรันเลขอัตโนมัติ เมื่อมีการเพิ่มข้อมูลสมาชิกผ่านฟอร์ม
โดยไม่ต้องมานั่งคีย์รหัสสมาชิก หนูต้องทำอย่างไรคะ ^___^
โดยไม่ต้องมานั่งคีย์รหัสสมาชิก หนูต้องทำอย่างไรคะ ^___^
Time: 0.2130s