ใส่เครื่องหมาย # ในฟิวส์ที่เป็นคีย์หลักได้หรือไม่
กระทู้เก่าบอร์ด อ.Yeadram

 1,176   5
URL.หัวข้อ / URL
ใส่เครื่องหมาย # ในฟิวส์ที่เป็นคีย์หลักได้หรือไม่

ถามอาจารย์ผู้รู้ครับผม

     ผมอยากทราบว่าถ้าผมใส่เครื่องหมาย # ในฟิวส์ที่เป็นคีย์หลักได้หรือไม่เช่น WI-IT-001 #01   ฟิวส์นี้ผมกำหนดให้เก็บหมายเลขเอกสารครับ มีหมายเลขเอกสารบางตัวที่ต้องมีเครืองหมาย # ด้วย
      พอผมใส่เข้าไป แล้วผมกลับไปค้นหาไฟล์ มีชื่อไฟล์แสดงขึ่นมาแต่ผมไม่สามารถดูข้อมูลของหมายเลขเอกสารตัวนี้ได้เลยครับ ในฟอร์มค้นหาเอกสารจะมีฟอร์มย่อยแสดงหมายเลขเอกสาร พอคลิ๊กที่หมายเลขเอกสารที่ฟอร์มย่อย จะมีข้อมูลของหมายเลขเอกสารนั้นแสดงที่ฟอร์มหลัก
      เมื่อผมลองเปลี่ยนจากเครื่องหมาย # ไปเป็น - ก็สามารถดูข้อมลได้ปกติครับ
ไม่ทราบว่ามันเป็นเพราะอะไรเหรอครับผม ถ้าผมต้องการใช้เครื่องหมาย # มันจะทำได้ไหม

5 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R15996
ตัวอย่างครับ
ตัวที่หมายเลขเอกสารไม่มีเครื่องหมาย # พอคลิ๊กเลือกที่หมายเลขเอกสารข้อมูลแสดงปกติ



ตัวที่หมายเลขเอกสารมีเครื่องหมาย # พอคลิ๊กเลือกที่หมายเลขเอกสารข้อมูลไม่แสดง

ไม่ทราบว่าใครเคยเจอหรือเปล่าครับเคสนี้
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 @R16001
ขอบคุณมากครับอาจารย์มากครับ
ทำได้แล้ว อาจารย์เก่งมากครับผม

    ขอถามอีกนิดครับผม ถ้ามันมีซ้อนกันมากกว่า 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[#]
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2919s