ต้องการค้นหาข้อมูลในตาราง แนะนำทีครับ
กระทู้เก่าบอร์ด อ.Yeadram

 14,470   75
URL.หัวข้อ / URL
ต้องการค้นหาข้อมูลในตาราง แนะนำทีครับ

ผมใช้กล่องคำสั่งผสม ติดต่อกับ data ชื่อบริษัทลูกค้า ซึ่งมีเยอะมาก ประมาณ หลายร้อย บริษัท

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



คือ อยากได้เหมือนคำสังในส่วน ของต้วค้นหาของ ตัวโปรแกรม access เอง ที่อยู่ด้านล่างนะครับ พิมพ์แล้วขึ้นอัฟเดทให้เลย


รบกวนช่วนแนะนำ หรือวิธี ด้วยนะครับ

ขอบคุณครับ

75 Reply in this Topic. Dispaly 4 pages and you are on page number 3

41 @R10423
Bound Column property และ Column Count property ของ ComboSearchName มีค่าเป็นอะไรบ้าง และถ้าคุณทำ debug เป็น ลองให้โค้ดหยุดที่บรรทัด   rs.FindFirst "LnamePetsonnel = """ & Me.ComboSearchName.Column(1) & """ "    แล้วตรวจสอบว่า Me.ComboSearchName.Column(1) มีค่าเป็นอะไรด้วย มันควรมีค่าเป็นอะไรสักอย่างที่ไม่ใช่ zero-lenth string หรือ null string

ปล. เวลาคุณเขียน อย่าใช้คำว่า "มัน", "ประมาณว่า" เพราะคำเหล่านี้ไม่สามารถสื่ออะไรที่ชัดเจนได้เลย   ถ้า "มัน" มีความหมายว่า "ฟอร์ม" ก็ให้ใช้คำว่า "ฟอร์ม" หรือใช้คำอื่นที่เฉพาะเจาะจงจะดีกว่า ยกเว้นว่าในบริบทหรือย่อหน้าที่เรากำลังเขียนนั้น มันสื่อถึงสิ่งใดสิ่งหนึ่งอยู่แล้วเท่านั้น ซึ่งผู้อ่านสามารถเข้าใจได้อย่างแน่ชัดอยู่แล้วว่า "มัน" คืออะไร

ส่วนคำว่า "ประมาณว่า" ทำให้คนอ่านสับสนว่า จริงๆแล้วโค้ดที่เขียนมาให้ดูนั้น คือโค้ดที่ใช้อยู่จริงๆ หรือว่าเป็นแค่โค้ดตัวอย่าง โค้ดของจริงแตกต่างจากโค้ดที่นำมาให้ดูหรืออย่างไร

อย่าลืมว่าการเขียนเป็นการสื่อสารทางเดียว เขียนให้เข้าใจ ใช้เวลาในการเขียนให้เพียงพอ จัดรูปประโยค เว้นวรรคให้ดี อ่านทบทวนให้แน่ใจ จะทำให้การแก้ไขปัญหาทำได้ง่ายขึ้นครับ
42 @R10424
ครับ ขอบคุณมากครับอาจารย์ เดียวผมจะลองดูนะครับ ผมต้องขอโทษจริงๆครับ
43 @R10425
Bound Column property =1
Column Count property =7 ครับอาจารย์
44 @R10426
เปลี่ยน Column Count property เป็น 3 ครับ
45 @R10427
มันเป็นไปด้วยไหมครับที่มันจะผิดที่code ครับอาจารย์
Private Sub ComboSearchName_AfterUpdate()
Dim rs As DAO.Recordset
Set rs = Me.RecordsetClone
rs.FindFirst "LnamePetsonnel = """ & Me.ComboSearchName.Column(1) & """ "
If Not rs.NoMatch Then
Me.Bookmark = rs.Bookmark
ComboSearchName = ""
End If
rs.Close: Set rs = Nothing
End Sub
Private Sub ComboSearchName_KeyUp(KeyCode As Integer, Shift As Integer)
Me.ComboSearchName.RowSource = "select FnamePetsonnel,LnamePetsonnel,ID_Company,Position,Tel,MobilePhone,Email FROM Data_Personnel where (FnamePetsonnel like ""*" & Me.ComboSearchName.Text & "*"") or (LnamePetsonnel like ""*" & Me.ComboSearchName.Text & "*"") or (ID_Company like ""*" & Me.ComboSearchName.Text & "*"")order by FnamePetsonnel "
Me.ComboSearchName.Dropdown
End Sub
Private Sub Form_AfterUpdate()
Me.ComboSearchName.Requery
End Subรบกวนช่วยตรวจสอบที่ครับ
46 @R10428
ตกลง RowSource propert ของ ComboSearchName เป็นอะไรแน่ครับ ?!?

ในคำตอบที่ (R10410) และ (R10413) เป็น

select FnamePetsonnel,LnamePetsonnel,ID_Company from Data_Personnel ...

ในขณะที่ในคำตอบ (R10427) เป็น
select FnamePetsonnel,LnamePetsonnel,ID_Company,Position,Tel,MobilePhone,Email FROM Data_Personnel

ถ้าเป็นตามกรณีแรก ใช้ Column Count property เป็น 3 ถ้าเป็นกรณีหลัง กำหนดค่าเป็น 7 ครับ

ส่วนเรื่องโค้ด ดูแล้วก็ไม่น่าจะมีอะไรผิดครับ ลอง compile ดูหรือยังครับ ถ้ายัง ก็ให้ลองทำดู อาจเห็น error ออกมาก็ได้ครับ แต่ถ้าทำแล้ว แก้ไขแล้ว ยังไงก็ยังไม่ได้ ให้ส่งโปรแกรมมาที่ accboard@gmail.com ครับ
47 @R10430
รบกวนอาจารย์ ช่วยดูทีนะครับ ผมส่งไปให้แล้วนะครับอาจารย์
อยู่ฟอร์มชื่อedit_DataPersonnel นะครับอาจารย์ มีชี้แนะอะไร รบกวนอาจารย์ช่วยบอกผมทีนะครับ
48 @R10432
ช่วยแปลงมาเป็นฟอร์แมทของ Access 2002-2003 ด้วยครับ

Convert an Access 2007 database to an earlier file format

Save an Access 2010 database in an earlier file format
49 @R10433
แปลงมาเป็นไฟล์นามสกุล .mdb ด้วยครับ
50 @R10434
ผม save as เป็นAccess 2002-2003 ส่งให้แล้วนะครับ อาจารย์
51 @R10435
ในคำตอบที่ R10422 คุณตอบผมว่า RecordSource ของฟอร์มคือ

SELECT Data_Personnel.FnamePetsonnel, Data_Personnel.LnamePetsonnel, Data_Personnel.ID_Company, Data_Personnel.Position, Data_Personnel.Tel, Data_Personnel.MobilePhone, Data_Personnel.Email FROM Data_Personnel;

แต่ในฟอร์มที่ส่งมา RecordSource คือเทเบิล Data_Seminar !?! ดังนั้นมันจะทำงานไม่ได้แน่นอนและจะเกิด error เกิดขึ้น

แต่ถึงแม้จะแก้ RecordSource ให้เป็น Data_Personnel โปรแกรมก็จะทำงานไม่ได้ตามที่ต้องการ คือจะไม่แสดงเรคอร์ดจาก Data_Personnel ออกมา เพราะคุณไม่ได้มี textbox อะไรบนฟอร์มที่มี Control Source อ้างถึงฟิลด์ในเทเบิล Data_Personnel เลย

ส่วนที่ใช้ป้อนในการค้นหาเรคอร์ด คุณต้องแสดงไว้ใน Form Header section ไม่ใช่ Form Detail section เพราะ Form Detail section เอาไว้แสดงข้อมูลที่มาจากเทเบิล Data_Personnel ต่างหาก แต่คุณไม่มี textbox ที่ใช้แสดงผลจาก Data_Personnel เลยแม้แต่ฟิลด์เดียว

นอกจากนี้ คุณค้นหาเรคอร์ดจากนามสกุลเท่านั้น ดังนั้นเมื่อเลือกชื่อ นางสาวอำพรรณ บัวเมือง โปรแกรมก็จะหาเรคอร์ดอะไรก็ตามบนฟอร์มที่ฟิลด์นามสกุลมีค่าเป็น บัวเมือง เช่นกัน แต่ ...

1) คนมีนามสกุล บัวเมือง ซ้ำกัน 2 คน

2) เนื่องจาก RecordSource ของฟอร์มคือเทเบิล Data_Personnel ไม่ได้กำหนดและไม่สามารถกำหนดให้เรียงตามอะไรได้เลย การเรียงเรคอร์ดบนฟอร์มกับเรคอร์ดที่แสดงใน ComboSearchName จึงไม่ตรงกัน การหาเรคอร์ดของ อำพรรณ บัวเมือง จึงอาจเจอเรคอร์ดของ นายกรกฤษณ์ บัวเมือง ไปแทน

3) แม้กำหนดให้การเรียงลำดับเหมือนกันได้ ถ้าคุณเลือก นายกรกฤษณ์ บัวเมือง ซึ่งแสดงเป็นรายการที่ 3 ใน ComboSearchName ผลจากการค้นหาก็จะได้นางสาวอำพรรณ บัวเมือง ซึ่งอยู่ในลำดับที่ 2 ไปแทน

ดังนั้นสิ่งที่คุณควรทำคือ ให้ค้นหา (RS.FindFirst) ทั้งชื่อและนามสกุล แต่ถ้าชื่อและนามสกุลยังซ้ำกันอีก ก็ต้องหาฟิลด์อื่นๆมาประกอบเพื่อให้เหลือผลลัพธ์เพียงคนเดียวเท่านั้น วึ่งถ้าทำได้ คุณก็ไม่จำเป็นต้องเรียงลำดับเรคคอร์ดบนฟอร์มให้เหมือนกับลำดับใน ComboSearchName ครับ

ไปแก้ไขดูครับ
52 @R10436
ปุ่มที่ชื่อว่าค้นหา ผมลืมลบออกนะครับอาจารย์ไม่เกี่ยวอะไรกับที่ผมต้องการนะครับ

อาจารย์ครับ คือผมไม่ค่อยเข้าใจประโยคนี้ครับ

**แต่ถึงแม้จะแก้ RecordSource ให้เป็น Data_Personnel โปรแกรมก็จะทำงานไม่ได้ตามที่ต้องการ คือจะไม่แสดงเรคอร์ดจาก Data_Personnel ออกมา เพราะคุณไม่ได้มี textbox อะไรบนฟอร์มที่มี Control Source อ้างถึงฟิลด์ในเทเบิล Data_Personnel เลย

ส่วนที่ใช้ป้อนในการค้นหาเรคอร์ด คุณต้องแสดงไว้ใน Form Header section ไม่ใช่ Form Detail section เพราะ Form Detail section เอาไว้แสดงข้อมูลที่มาจากเทเบิล Data_Personnel ต่างหาก แต่คุณไม่มี textbox ที่ใช้แสดงผลจาก Data_Personnel เลยแม้แต่ฟิลด์เดียว

ส่วนในtextboxมีมีอยู่ในForm Detail section Control Source ผมก็ใช้=[ComboSearchName].[Column](0)
ถึง=[ComboSearchName].[Column](ตามColumnที่ผมต้องการไว้แล้วนะครับ) อาจารย์อย่าพึ้งรำคาญนะครับผมไม่รู้จะทำยังไงจริงๆครับอาจารย์
53 @R10437
อาจารย์ครับๆๆๆ ผมรู้แล้วครับอาจารย์ ผมต้องขอบคุณอาจารย์มากๆเลยนะครับ เย้ๆๆๆ คือผมลืมดูcode ข้างล่าง ที่ผมใส่เครื่องหมาย'ไว้ครับ มันเลยมีผลกับcode
Private Sub Form_AfterUpdate()
Me.ComboSearchName.Requery
End Sub
ครับ เฮ้อ ขอโทษจริงๆ ครับอาจารย์
54 @R10438
กำ อาจารย์ครับอย่าพึ่งรำคาญ นะครับอยู่ดีมันก็กลับมาเป็นเหมือนเดิมอีกแล้วครับ
55 @R10439
ผมชักไม่แน่ใจแล้วว่า จุดประสงค์ที่คุณต้องการนั้นมันแค่ไหน

ในกระทู้นี้เราพูดถึง

1) ฟอร์มที่มี combobox เป็นช่องให้เราป้อนคำที่ต้องการค้นหา ซึ่งทุกเรคอร์ดที่ตรงตามเงื่อนไขจะถูกแสดงในลิสท์ของ combobox

2) จากนั้นเราคลิกที่รายการในลิสท์ของ combobox   ฟอร์มก็จะแสดงเรคอร์ดที่ตรงกับลิสท์ที่เราเลือกใน combobox ออกมา และสามารถแก้ไขได้

แต่โปรแกรมที่คุณส่งมาให้ โค้ดครอบคลุมถึงข้อ 2) แต่มันทำได้ถึงเฉพาะแค่ข้อ 1) เท่านั้น เพราะ

A) Record Source property ผิด
B) Combobox วางผิด section
C) ไม่มี Textbox ในส่วนของ Detail section ที่แสดงค่าจากฟิลด์ที่มาจาก Record Source ของฟอร์ม มีแต่ Textbox ที่แสดงค่าจากคอมลัมน์ใน Combobox ซึ่งนั่นแก้ไขไม่ได้
56 @R10440
ตอนแรกผมใช้combobox เลือกข้อมูลแล้วใช้DLookupแล้วให้มันแสดงตามtextbox แต่มันเจอปัญหา พอผมจะเลือก นายกรกฤษณ์ บัวเมือง มันก็แสดง นายกรกฤษณ์ ขยันเรียน ครับ แต่ถ้าเลือก นายธนกร ขันคำ หรือ นายอำนาจ บัวเมือง มันก็แสดงตามปกติ แต่ผมมาเจอวิธีนี้ผมเลยสนใจ แล้วมันก็เจอปัญหานี้ครับอาจารย์
Record Source property ของฟอร์มผมก็ให้เป็นData_Personnel

คือตอนนี้ผมต้องการให้เลือกข้อมูลที่เราคลิกเลือกจากcombobox มาโชว์ในtextbox ที่ผมเตรียมไว้ จากนั้นผมก็แก้ไขข้อมูลนั้นได้อ่ะครับอาจารย์ ผมต้องทำอย่างไรบ้างเหรอครับ

57 @R10441
อ่อ ผมเข้าใจแล้วครับ ผมทำได้แล้วครับอาจารย์ ตามที่อาจารย์บอก งง อยู่พักใหญ่ อิอิ ขอโทษจริงๆครับ แต่มันแก้ไขไม่ได้จริงๆ ด้วยนะครับ แล้วถ้าผมจะให้มันแก้ไขได้ โดยตามวิธีการของกระทู้นี้ มีโอกาศ ทำได้ไหมครับ
58 @R10443
ถ้าทำตามที่ผมบอกไปในคำตอบ (R10435) คุณก็จะแก้ไขเรคอร์ดบนหน้าฟอร์มได้

จากรูป ผมลดให้เหลือเฉพาะที่สำคัญเพื่อเป็นตัวอย่างให้ดู

1) ย้าย Combobox ไปที่ Form Header section
2) RowSource กำหนดเป็นชื่อเทเบิล Data_Personnel
3) ใส่ Detail section สร้าง textbox ที่มี Control Source property เป็นชื่อของฟิลด์จากเทเบิล Data_Personnel

ไม่มีโค้ดอะไรที่อยู่ในฟอร์มต้องลบหรือแก้ไข

59 @R10444
ผมทำตามที่อาจารย์บอกได้แล้วนะครับ
เจอปัญหา ค้นหา (RS.FindFirst) ทั้งชื่อและนามสกุล ผมต้องแก้ไขcode ในส่วนนี้ยังไงบ้างเหรอครับ อาจารย์
60 @R10445
ผมต้องขอโทษจริงๆนะครับที่รบกวนบ่อยๆ ผมเป็นนักศึกษาฝึกงาน
ผมพึ้งเริ่ม ศีกษาaccess ได้อาทิตย์ กว่าๆเองครับ แล้วทางบริษัทเจาต้องการงานอาทิตย์หน้าแล้วครับ ผมไม่รู้จะถามใครแล้วจริงๆครับ รบกวนอาจารย์ด้วยนะครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2776s