สอบถามเกี่ยวกับการ พิมพ์ค้นหาชื่อวัสดุ
กระทู้เก่าบอร์ด อ.Yeadram

 2,485   15
URL.หัวข้อ / URL
สอบถามเกี่ยวกับการ พิมพ์ค้นหาชื่อวัสดุ

สวัสดีครับอาจารย์ทุกท่าน

ตอนนี้ผมกำลังทำ วิธีค้นหาชื่อวัสดุ แบบ loockup wizard ซึ่ง ต้องพิมพ์ Code ของวัสดุเท่านั้น หรือไม่ก็ต้องคลิกเลื่อนๆ เลือกเอา
ซึ่งในกรณี ที่มี ของหลายๆอย่่าง เราไม่สามารถจำ codeได้หมด


ต้องพิม Code ด้านหน้า


แบบนี้กด คลิกเพื่อ เลื่อน หา


ผมเลยอยาก จะทำ แบบ พิมพ์ ส่วนใดส่วนหนึ่งของ ชื่อวัสดุแล้วให้ขึ้นมาเลือกว่าจะเอารายการไหน

ลองทำตาม บางกระทู้แล้ว ก็ยังไม่ได้ครับ
รบกวนทีนะครับ

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

1 @R20480
ผมลองใช้ code นี้

Private Sub txtMR_Item_ID_AfterUpdate()
Me.RecordSource = "Select * from Inventory where (Item Like '*" & txtMR_Item_ID & "*') Or (Description Like '*" & txtMR_Item_ID & "*')"
Me.Requery
End Sub

ฝังใน combobox แล้ว แต่ก็ยังไม่ได้ครับ
2 @R20482
- ให้ฝังไว้ใน txtMR_Item_ID_KeyUp() แทนครับ โค้ดควรจะเป็น

Private Sub txtMR_Item_ID_KeyUp(KeyCode As Integer, Shift As Integer)

Me.txtMR_Item_ID.RowSource = " select xxx from Inventory where (Item Like '*" & txtMR_Item_ID.Text & "*') Or (Description Like '*" & txtMR_Item_ID.Text & "*')"

Me.txtMR_Item_ID.Dropdown

End Sub

โดยที่ xxx เป็นฟิลด์ชื่อวัสดุและน่าจะมีฟิลด์รหัสด้วย ลำดับฟิลด์อะไรก่อนหลังหรือจะมีฟิลด์อะไรบ้าง ขึ้นกับคุณกำหนดคอมโบบ็อกซ์ให้แสดงกี่คอลัมน์และอะไรอยู่คอลัมน์ไหน
3 @R20484
ขอบคุณมากครับ อาจารย์

ทำได้แล้วครับ
4 @R20485
ติดดูอีกที เนื่องจากเป็น Continuous Form ดังนั้นเมื่อเลือกข้อความที่ให้ผลลัพธ์ของ RowSource ต่างจากบรรทัดอื่นๆ บรรทัดอื่นๆคงจะแสดงชื่อวัสดุที่เคยเลือกไว้แล้วเพี้ยนๆไป เดาว่าคงแสดงเป็นช่องว่างๆแทน สิ่งที่พอจะแก้ไขได้ก็คือแทนที่จะแสดงคอลัมน์แรกของคอมโบบ็อกซ์เป็นชื่อวัสดุ ก็ให้เป็นรหัสวัสดุแทน ส่วนชื่อค่อยเป็นคอลัมน์ที่ 2 แทน แล้วแน่นอนว่าต้องแก้ BoundColumn, ColumnWidth, ColumnCount ให้ถูกต้องด้วย
5 @R20486
เพี้ยนๆไป จริงด้วยครับ แต่ก็ใกล้เคียงกับที่ต้องการแล้วครับ

ตอนนี้ code ของวัสดุ รวมอยู่กับชื่อครับ อาจารย์
ดังนั้น ผมควรจะแยก ออกจากจากกัน ถูกต้องป่าวครับ
6 @R20487
- เป็นเรื่องปกติที่เราจะแยกโค้ดออกจากชื่อครับ

- ส่วนถ้ายังต้องการให้แต่ละบรรทัดแสดงชื่อได้ ต้องมีอีกเท็กซ์บ็อกซ์นึงไว้สำหรับแสดงชื่อโดยเฉพาะ โดยให้ ControlSource ของเท็กซ์บ็อกซ์นั้นมีค่า =DLookup("ชื่อของฟิลด์ชื่อ","Inventory","ชื่อของฟิลด์รหัสวัสดุ = '" + [txtMR_Item_ID] + "'")
7 @R20488
อาจารย์ครับ ถ้าสร้าง textbox เพิ่มอีก ที่ไว้แสดงชื่อโดยเฉพาะ

เวลาจะพิมพ์ค้นหา โดยพิมพ์คำบางคำในชื่อวัสดุ ก็คือพิมพ์ในช่องที่เป็น code ได้ใช่มั้ยครับ
8 @R20489
ไว้ผมจะอัพโหลดตัวอย่างมาให้ น่าจะไม่เกินวันนี้ครับ
9 @R20490
- เทเบิล I เก็บรหัสและชื่อวัสดุ

- เทเบิล D เก็บรายการและจำนวนที่เกิดขึ้น

- ตามตัวอย่างนี้ ไม่ได้ทำให้มีหัวและท้ายเอกสารนะครับ มีแต่รายการแต่ละบรรทัด

- วิธีเดิมที่บอกไปคือใช้คอมโบบ็อกซ์ตัวเดียว แต่ปัญหาก็เป็นอย่างที่พบคือชื่อวัสดุที่แสดงออกมาหายไป เมื่อไหร่ที่ต้องการงานที่พิเศษบน continuous form เมื่อนั้นมักลำบากทีเดียว Access ยังทำส่วนนี้ได้ไม่ค่อยดีนัก วิธีที่แสดงให้ดูใหม่นี้ ใช้คอมโบบ็อกซ์เหมือนกัน แต่ไม่ผูกเข้ากับฟิลด์ใดๆแล้ว แต่ใช้เป็นตัวเลือกชื่อเท่านั้น และเพื่อให้ดูแล้วยังเหมือนปกติ ก็ใช้วิธีหลอกตาโดยมีเท็กซ์บ็อกซ์แสดงชื่อจากรหัสวัสดุที่ได้เลือกไปแล้ว วางซ้อนเข้าไป แต่ไม่ให้มี Tab Stop   คอมโบบ็อกซ์ซ่อนไว้หลังเท็กซ์บ็อกซ์ตัวนี้ แต่คอมโบกลับมี Tab Stop ดังนั้นปกติที่มองเห็นก็จะเห็นเท็กซ์บ็อกซ์ แต่เวลากด tab หรือคลิกที่เท็กซ์บ็อกซ์นี้จะเข้าไปที่คอมโบบ็อกซ์เพื่อเลือกแทน ผมใส่คอมโบให้เป็นสีเหลืองเพื่อจะได้แยกแยะออก พอใช้งานจริงจะให้เป็นสีเดียวกันก็ได้ ตัวอย่างนี้คงได้แค่ระดับพอใช้ ไม่ได้ทำงานเรียบร้อยได้อย่างที่เลือกจากคอมโบบ็อกซ์ปกตินะครับ จะเอาไปใช้ก็เปลี่ยนชื่อต่างๆให้เป็นตามระบบคุณเอาเอง

- โปรแกรมชื่อ PartialSearch.mdb ตามลิงค์นี้ https://www.dropbox.com/sh/ig2emrh118hr92m/AACUskpFxTST_-S9vhXokaQTa/thaiaccessboard/PartialSearch.mdb?dl=0
10 @R20491
ขอบคุณครับ อาจารย์
11 @R20525
โหลดไม่ได้
12 @R20526
โหลดอะไรไม่ได้ครับ
13 @R21573
เรียน อาจารย์ สันติสุข

ตอนนี้ ความต้องการของ ผู้ใช้งาน มีเพิ่มเติมครับ
จาก โปรแกรม Partial Search ที่อาจารย์ ให้มาศึกษา
เราสามารถทำให้ ค้นหา จาก Code ในแบบที่ค้นหา จาก Name ได้หรือเปล่า ครับ
คือ ทำให้ ค้นหาจากทั้ง 2 อย่างได้ ครับ

ขอบคุณครับ
14 @R21574
ใน Private Sub txtPart_Change()

ให้แก้จากบรรทัดเดิม เป็น

Me.txtPart.RowSource = "select I_NM, I_CD from I where I_NM like '*" + Nz(Me.txtPart.Text, "") + "*' or I_CD like '*" + Nz(Me.txtPart.Text, "") + "*' order by I_NM"
15 @R21580
ขอบคุณมากครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2796s