กระทู้เก่าบอร์ด อ.Yeadram
1,246 5
URL.หัวข้อ /
URL
ใส่เครื่องหมาย # ในฟิวส์ที่เป็นคีย์หลักได้หรือไม่
ถามอาจารย์ผู้รู้ครับผม
ผมอยากทราบว่าถ้าผมใส่เครื่องหมาย # ในฟิวส์ที่เป็นคีย์หลักได้หรือไม่เช่น WI-IT-001 #01 ฟิวส์นี้ผมกำหนดให้เก็บหมายเลขเอกสารครับ มีหมายเลขเอกสารบางตัวที่ต้องมีเครืองหมาย # ด้วย
พอผมใส่เข้าไป แล้วผมกลับไปค้นหาไฟล์ มีชื่อไฟล์แสดงขึ่นมาแต่ผมไม่สามารถดูข้อมูลของหมายเลขเอกสารตัวนี้ได้เลยครับ ในฟอร์มค้นหาเอกสารจะมีฟอร์มย่อยแสดงหมายเลขเอกสาร พอคลิ๊กที่หมายเลขเอกสารที่ฟอร์มย่อย จะมีข้อมูลของหมายเลขเอกสารนั้นแสดงที่ฟอร์มหลัก
เมื่อผมลองเปลี่ยนจากเครื่องหมาย # ไปเป็น - ก็สามารถดูข้อมลได้ปกติครับ
ไม่ทราบว่ามันเป็นเพราะอะไรเหรอครับผม ถ้าผมต้องการใช้เครื่องหมาย # มันจะทำได้ไหม
ผมอยากทราบว่าถ้าผมใส่เครื่องหมาย # ในฟิวส์ที่เป็นคีย์หลักได้หรือไม่เช่น WI-IT-001 #01 ฟิวส์นี้ผมกำหนดให้เก็บหมายเลขเอกสารครับ มีหมายเลขเอกสารบางตัวที่ต้องมีเครืองหมาย # ด้วย
พอผมใส่เข้าไป แล้วผมกลับไปค้นหาไฟล์ มีชื่อไฟล์แสดงขึ่นมาแต่ผมไม่สามารถดูข้อมูลของหมายเลขเอกสารตัวนี้ได้เลยครับ ในฟอร์มค้นหาเอกสารจะมีฟอร์มย่อยแสดงหมายเลขเอกสาร พอคลิ๊กที่หมายเลขเอกสารที่ฟอร์มย่อย จะมีข้อมูลของหมายเลขเอกสารนั้นแสดงที่ฟอร์มหลัก
เมื่อผมลองเปลี่ยนจากเครื่องหมาย # ไปเป็น - ก็สามารถดูข้อมลได้ปกติครับ
ไม่ทราบว่ามันเป็นเพราะอะไรเหรอครับผม ถ้าผมต้องการใช้เครื่องหมาย # มันจะทำได้ไหม
5 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R15997
Revise
ตัวอย่างครับ
ตัวที่หมายเลขเอกสารไม่มีเครื่องหมาย # พอคลิ๊กเลือกที่หมายเลขเอกสารข้อมูลแสดงปกติ
ตัวอย่างครับ
ตัวที่หมายเลขเอกสารไม่มีเครื่องหมาย # พอคลิ๊กเลือกที่หมายเลขเอกสารข้อมูลแสดงปกติ
3 @R15998
Wildcard characters in Microsoft Access criteria expressions
หลักๆ ที่พบบ่อยจะมีอยู่ 4 ตัว คือ * ? # [
เวลาจะใช้คำเพื่อค้นหา เราจำเป็นต้องใส่ [ ] คล่อมอักษรเหล่านี้เพื่อให้โปรแกรมรู้ว่าเป็นอักษร ไม่ใช่เป็น Wildcard character เช่น หากคุณใส่คำว่า WI-IT-001 #01 ก็ต้องเปลี่ยนเป็น WI-IT-001 [#]01 โปรแกรมถึงจะค้นหาได้ถูกต้อง คราวนี้จะเขียนอย่างไรให้สะดวก มันมีหลายวิธีนะครับ ส่วนตัวผมเอาวิธีง่ายสุดไปใช้ดู คือใช้ฟังก์ชั่น Replace() ครับ เช่น สมมุติ Text Box ช่อง หมายเลขเอกสาร คุณชื่อ Text1 ในโค๊ตเวลาคุณอ้างข้อมูลช่องจาก Text1 แทนที่คุณจะเขียน Me.Text1 ก็เพิ่มเป็น
Replace(Me.Text1, "#", "[#]") แทน ตัวอย่างเช่น
DoCmd.GoToControl "ID"
DoCmd.FindRecord Me.Text1, acAnywhere, False, , False, acCurrent, True
ก็เปลี่ยนเป็น
DoCmd.GoToControl "ID"
DoCmd.FindRecord Replace(Me.Text1, "#", "[#]", acAnywhere, False, , False, acCurrent, True
ประมาณนี้ครับ
หลักๆ ที่พบบ่อยจะมีอยู่ 4 ตัว คือ * ? # [
เวลาจะใช้คำเพื่อค้นหา เราจำเป็นต้องใส่ [ ] คล่อมอักษรเหล่านี้เพื่อให้โปรแกรมรู้ว่าเป็นอักษร ไม่ใช่เป็น Wildcard character เช่น หากคุณใส่คำว่า WI-IT-001 #01 ก็ต้องเปลี่ยนเป็น WI-IT-001 [#]01 โปรแกรมถึงจะค้นหาได้ถูกต้อง คราวนี้จะเขียนอย่างไรให้สะดวก มันมีหลายวิธีนะครับ ส่วนตัวผมเอาวิธีง่ายสุดไปใช้ดู คือใช้ฟังก์ชั่น Replace() ครับ เช่น สมมุติ Text Box ช่อง หมายเลขเอกสาร คุณชื่อ Text1 ในโค๊ตเวลาคุณอ้างข้อมูลช่องจาก Text1 แทนที่คุณจะเขียน Me.Text1 ก็เพิ่มเป็น
Replace(Me.Text1, "#", "[#]") แทน ตัวอย่างเช่น
DoCmd.GoToControl "ID"
DoCmd.FindRecord Me.Text1, acAnywhere, False, , False, acCurrent, True
ก็เปลี่ยนเป็น
DoCmd.GoToControl "ID"
DoCmd.FindRecord Replace(Me.Text1, "#", "[#]", acAnywhere, False, , False, acCurrent, True
ประมาณนี้ครับ
4 @R16001
ขอบคุณมากครับอาจารย์มากครับ
ทำได้แล้ว อาจารย์เก่งมากครับผม
ขอถามอีกนิดครับผม ถ้ามันมีซ้อนกันมากกว่า 1 ตัว เช่น WI-IT-001 *001#
ต้องใส่ Replace อย่างไรครับ
Replace(Me.Text1, "#", "[#]","*",[*]) แบบนี้หรือเปล่าครับ
คำถามนี้เผื่ออนาคตอ่ะครับ เผื่อมันอาจจะมี
ขอขอบพระคุณอีกครั้งครับผม
ทำได้แล้ว อาจารย์เก่งมากครับผม
ขอถามอีกนิดครับผม ถ้ามันมีซ้อนกันมากกว่า 1 ตัว เช่น WI-IT-001 *001#
ต้องใส่ Replace อย่างไรครับ
Replace(Me.Text1, "#", "[#]","*",[*]) แบบนี้หรือเปล่าครับ
คำถามนี้เผื่ออนาคตอ่ะครับ เผื่อมันอาจจะมี
ขอขอบพระคุณอีกครั้งครับผม
5 @R16004
ถ้าคิดเล่นๆ แบบทุกตัวก็อย่างนี้ดีกว่าครับ
Dim TTT As String
TTT = Me.Text1
TTT = Replace(TTT, "[", "[[]") ' หากมีตัว [ ต้องเปลี่ยนก่อนเลย
TTT = Replace(TTT, "#", "[#]")
TTT = Replace(TTT, "*", "[*]")
TTT = Replace(TTT, "?", "[?]")
DoCmd.GoToControl "Name"
DoCmd.FindRecord TTT, acAnywhere, False, , False, acCurrent, True
เดิม: WI-IT-001 *001#
ผลลัพธ์: WI-IT-001 [*]001[#]
Dim TTT As String
TTT = Me.Text1
TTT = Replace(TTT, "[", "[[]") ' หากมีตัว [ ต้องเปลี่ยนก่อนเลย
TTT = Replace(TTT, "#", "[#]")
TTT = Replace(TTT, "*", "[*]")
TTT = Replace(TTT, "?", "[?]")
DoCmd.GoToControl "Name"
DoCmd.FindRecord TTT, acAnywhere, False, , False, acCurrent, True
เดิม: WI-IT-001 *001#
ผลลัพธ์: WI-IT-001 [*]001[#]
Time: 0.5116s
ตัวที่หมายเลขเอกสารไม่มีเครื่องหมาย # พอคลิ๊กเลือกที่หมายเลขเอกสารข้อมูลแสดงปกติ
ตัวที่หมายเลขเอกสารมีเครื่องหมาย # พอคลิ๊กเลือกที่หมายเลขเอกสารข้อมูลไม่แสดง
ไม่ทราบว่าใครเคยเจอหรือเปล่าครับเคสนี้