199
ห้อง MS Access / > > สอบถามการ disable คำสั่ง hide หรือ unhide column ในมุมมองdata sheet ครับ
« เมื่อ: 20 มี.ค. 61 , 11:08:15 »ผมว่ามันเป็นเรื่องใหม่นะครับ ตั้งกระทู้ใหม่เถอะครับได้ครับ ขอบคุณครับ
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.
ผมว่ามันเป็นเรื่องใหม่นะครับ ตั้งกระทู้ใหม่เถอะครับได้ครับ ขอบคุณครับ
ที่ Event: On mouse up ให้ใส่ Code นี้เข้าไปครับตามที่อาจารย์แนะนำ ผมลองทำดูแล้วก็ทำงานตามที่อาจารย์บอกครับ แต่ก็ยังไม่ได้ตรงตามจุดประสงค์ของผม แต่ไม่เป็นไรครับผมคงไม่ไป protectหรือ hide อะไรมากมายแล้วครับ
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me.ชื่อฟิลด์ที่ต้องการซ่อน.ColumnHidden = False Then
Me.ชื่อฟิลด์ที่ต้อกงารซ่อน.ColumnHidden = True
End If
End Sub
Unhide ได้แป๊บเดียว(ประมาณ 1-2 วินาที) ก็จะกลับไปซ่อนใหม่ทันที
ถ้ามีหลายฟิลด์ก็เหนื่อยหน่อยนะ
อ้อ! ใช้ได้เฉพาะ Datasheet View เท่านั้นนะครับ
ผมเคยทำคลิปตอบคำถามแนวๆนี้ ไม่รู้ว่าพอช่วยเป็นแนวทางได้หรือไม่นะครับ ลองดูแล้วกันดูแล้วยังไม่ใช่ครับอาจารย์ คือต้องการตัวกรอง เหมือนแบบ data sheet หรือแบบ excel ที่มีกรองแต่ละcolumn ประมาณนั้นครับ
ตามที่คุณ PookPuy ตอบมาเลยครับ กรณีที่มี combobox แล้วตัว combobox มีการ populate data มาจากตารางที่ต้องการอยู่แล้ว แล้วจะกำหนดให้ฟิลด์อื่นๆมีค่าตาม data ใน combobox ก็แค่เพียงกำหนดให้ฟิลด์นั้นมีค่าเท่ากับ column(0), column(1), column(2)...โดยที่ไม่ได้ต้องไป dlookup ข้อมูลในตารางอีก แต่ผมแนะนำผูกไว้กับ AfterUpdate eventทำตามที่แนะนำได้แล้วครับ แต่จะรบกวนสอบถามเพิ่มเติมนะครับ เราสามารถกำหนดความกว้างของ column แต่ละตัว ตามรูปได้หรือเปล่าครับ เช่นขยายช่อง StyleNo ให้กว้างขึ้น
Private Sub StyleNo_AfterUpdate()
OD#.Value = StyleNo.Column(1)
Customers.Value = StyleNo.Column(2)
QtyOrder.Value = StyleNo.Column(3)
End Sub
ปล. ทำไมถึงไม่ bound Table หรือ Query ไว้กับฟอร์มเลย จะได้ให้ Access มันใส่ค่าให้อัตโนมัติ (หรือต้องการเขียนเผื่อสำหรับ upsize ไป MS SQL)
Private Function FilterOut()ผมหมายถึง สมมุติในช่อง Buyer สามารถเลือกได้มากกว่า1รายการครับ เช่น เลือก BENSHERMAN,BOLO,MC อะไรประมาณนี้อะครับ
Dim stCriteria As String
stCriteria = IIf(IsNull(Me.[Style No.]), "", "[Style No.] = '" & Me.[Style No.] & "' AND ") & _
IIf(IsNull(Me.Buyer), "", "[Buyer] = '" & Me.Buyer & "' AND ") & _
IIf(IsNull(Me.[OD#]), "", "[OD#] = '" & Me.[OD#] & "' AND ") & _
IIf(IsNull(Me.Currency), "", "[Currency] = '" & Me.[Currency] & "' AND ") & True
Me.SubFormName.Form.Filter = stCriteria
Me.SubFormName.Form.FilterOn = True
End Function
ใน Combobox ทุกอันในช่อง AfterUpdate ให้ใส่ = FilterOut() หรือจะ call FilterOut ใน Sub AfterUpdate event ก็ได้
ปล. พวกชื่อฟิลด์หรือคอนโทรลต่างๆ ให้ตรวจสอบกับชื่อที่ใช้จริงก่อนนะครับ
ถ้าเปิดฟอร์มในมุมมอง Datasheet สามารถกำหนด Filter ได้ครับผมไม่สามารถที่จะเปลี่ยนไปใช้มุมมองแบบ data sheet ได้แล้วครับ ด้วยเหตุผลหลายๆอย่างครับ เรื่องของการใช้งานและการแสดงผล จึงจำเป็นต้องใช้แบบ form view ครับ