บันทึกข้อมูลแบบ Combo box แล้วมีปัญหาครับ
กระทู้เก่าบอร์ด อ.Yeadram

 2,357   29
URL.หัวข้อ / URL
บันทึกข้อมูลแบบ Combo box แล้วมีปัญหาครับ

คือผมมีเทเบิ้ล ของนาย ก. บันทึกไปแล้วว่า "ติดต่อได้"

ที่นี้ปัญหาอยู่ที่ว่า ผมจะแก้ไขให้เลือกเป็น "ติดต่อไม่ได้"

ถ้ากดเซฟ ข้อมูลทุกคนที่บันทึกว่า "ติดต่อได้" จะเปลี่ยนเป็น "ติดต่อไม่ได้หมดเลย"

แก้ไขอย่างไรครับ

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

1 @R23594
สิ่งที่น่าจะทำให้เกิดการเปลี่ยนแปลงข้อมูลในเรคอร์ดอื่นก็คือ
1. โค้ดที่เกี่ยวข้อง ทำการอัพเดตค่าของเรคอร์ดอื่น ก็ต้องไปแก้ที่โค้ดครับ
2. ใน Relationships ของเทเบิลที่สัมพันธ์กันกับเทเบิลนี้ มีการกำหนด Cascade Update เข้ามายังฟิลด์นี้ ก็ให้เอา Cascade Update ออกไป
2 @R23595
ยังไม่ได้ครับ ลองลบสร้างใหม่แล้วก็ยังไม่ได้ครับ
3 @R23596
ลองไปดูจากในเทเบิลโดยตรงว่าค่าของฟิลด์นี้ในเรคอร์ดต่างๆเปลี่ยนไปจริงหรือไม่ สิ่งที่เห็นบนหน้าจออาจไม่ใช่ค่าที่มีอยู่ในเทเบิลจริงๆก็ได้
4 @R23598
เปลี่ยนทั้งหมดครับ

คือแบบ สมมุติ นายก. "ติดต่อได้" นายข. "ติดต่อได้".... ฯลฯ

พอมผมเปลี่ยนไปเป็น "ติดต่อไม่ได้" เฉพาะคนที่ "ติดต่อได้" เท่านั้นทุกคน

ที่จะเปลี่ยนเป็น "ติดต่อไม่ได้" ทุกคนเลยครับ

ลองลบเทเบิ้ลแล้วก็ยังไม่หายครับ

5 @R23599
ไม่เคยเจออะไรแบบนี้มาก่อนเลยครับ
6 @R23600
จริงๆแล้วมันไม่ได้ยุ่งยากขนาดนั้นเลยครับ เว้นแต่คุณคมสันออกแบบตารางให้ผิดไปครับ ตรวจสอบดูใหม่นะครับ
1.กำหนดตารางความสัมพันธ์แบบ1ต่อกลุ่มหรือไม่ ถ้าใช่ผมว่าไม่จำเป็นต้องกำหนด
2.ตารางจริงๆมีแค่2ตารางคือตารางชื่อ กับตารางข้อมูลการติดต่อซึ่งตารางข้อมูลการติดต่อจะมีให้เลือก2รายการคือติดต่อได้กับติดต่อไม่ได้ใส่ค่าไปเลยครับ
3.ในตารางชื่อ ให้กำหนดฟิวด์ที่จะใช้เลือกข้อมูลเป็นแบบLookup Wizard แล้วเลือกตารางข้อมูลการติดต่อ Nextไปเรื่อยๆจนเสร็จ

เมื่อใส่ข้อมูลในตารางชื่่อ ฟิวด์นี้จะบังคับตัวเลือกให้เองครับ ซึ่งจะเป็นข้อมูลชื่อใครชื่อมันครับ
7 @R23601
ยังไม่หายครับ

แต่ไม่รู้เพราะอะไรเหมือนกันครับ ไม่ได้เป็นที่ combo box ด้วยครับ

relationship ก็ไมไ่ด้ลบเทเบิ้ลใหม่ก็ไม่ได้ครับ
8 @R23602
ลอง Compact and Repair Database ดูครับ แล้วถ้ายังไม่ได้ ให้ตัดอะไรที่ไม่จำเป็นออกให้หมด เช่น ฟิลด์อื่นๆ ฟอร์มอื่นๆ คอนโทรลต่างๆในฟอร์ม ฯ ให้เหลือส่วนที่น้อยที่สุดที่ยังสามารถทำให้เกิดปัญหาได้ แล้วอัพโหลดไว้ที่ไหนสักแห่ง ผมจะเอามาดู อยากรู้เหมือนกันว่าเกิดอะไรขึ้น แต่เชื่อว่าน่าจะเส้นผมบังภูเขา
9 @R23606
https://drive.google.com/file/d/0B4Cs8tFxPqOMN0o3MTRmRDh5LVE/view?usp=sharing

ฝากรบกวนด้วยครับคุณ สันติสุขตอนแรกผมนึกว่าเป็นแค่เทเบิลเดียว
ตอนนี้พบว่าเป็นทุกเทเบิลที่เป็นเทิลแยกเลยครับ
10 @R23607
พบว่าในหน้า homeq subform ในช่อง interview_name ซึ่งแสดงคำว่า "ติดต่อ",... มันโยงมาจากฟิลด์ peopletbl.interview_id ในขณะที่อีก 2 ฟอร์มที่เหลือโยงมาจาก peopletbl.tidtor ซึ่งผมก็ไม่รู้ว่าอันไหนถูกหรือผิดบ้าง ยังไงก็ตาม ไม่ว่าจะแก้ไขข้อมูลการติดต่อนี้ในหน้าใด ก็ไม่ได้ทำให้ข้อมูลการติดต่อในเรคอร์ดอื่นเปลี่ยนตามไปด้วยเหมือนอย่างที่บอกเลย

อีกอย่างที่พบคือ ไม่มีการเชื่อมโยงข้อมูลอะไรระหว่างหน้า hrform และ homeq subform เลย ซึ่งจะถูกหรือผิดอันนี้ผมก็ไม่รู้เหมือนกัน อยู่ที่การออกแบบระบบของคุณ
11 @R23608
https://drive.google.com/file/d/0B4Cs8tFxPqOMaVE4ZmZjU3lUVWs/view?usp=sharing

โทษครับ ไฟล์นี้ครับ
คืออันนั้นผม เทเบิลทุกเทเบิลที่เป็นเทเบิลแยกออกมาจาก peopletbl
จะเป็นเหมือนกันหมดเลยคือจะเซฟทับ

ผมเลย สร้าง tidtor ไว้ใน peopletbl แต่ปรากฏเละกว่าเดิมครับ

ยังไงฝากดูหน่อยนะครับผมเครีดมากเลย

หน้า hrform คือหน้าคีย์ข้อมูลหน้าแรกไม่มีปัญหาใดๆ
แต่พอมาหน้า searchfrm ในหน้าการแก้ไขและการค้นหาข้อมูล

ตอนนี้มี 4 เทเบิลครับที่มีปัญหาคือ

1. resulttbl
2. sectiontbl
3. origintbl
4. interviewtbl
12 @R23609
ในเทเบิล interviewtbl ฟิลด์ interview_id ที่มีค่า 1,4 และ 8 มีค่าของฟิลด์ inteview_name เดียวกัน คือคำ "อื่นๆ" แก้ไขให้ถูกต้องก็น่าจะใช้ได้แล้ว เทเบิลอื่นก็มีค่าซ้ำกันแบบนี้เหมือนกัน
13 @R23610
มีเพิ่มเติม
14 @R23611
ในฟอร์ม searchfrm ค่าบนฟอร์มต้องมาจากเทเบิล peopletbl โดยกำหนด Record Source ของฟอร์มเป็น peopletbl เท่านั้น ไม่ใช่เป็น SQL ที่มีการเชื่อมกับเทเบิลอื่นๆ เพื่อหวังให้ดึงความหมายของโค้ดต่างๆที่เก็บในเทเบิลอื่นๆนั้นมาแสดงบนฟอร์มอย่างที่คุณทำ

การเขียนเป็น SQL อย่างที่ทำ ก็ทำได้ แต่เพื่อเอาไว้แสดงอย่างเดียว ไม่ใช่เพื่อการเพิ่มเติมหรือแก้ไขอย่างที่ต้องการจะทำ เพราะถ้าทำอย่างที่ทำอยู่ การแก้ไขจาก "ติดต่อได้" เป็น "ติดต่อไม่ได้" มันจะไปแก้ที่ฟิลด์ interviewtbl.interview_name ตาม SQL โดยตรงเลย จึงเห็นว่าเรคอร์ดอื่นๆ ***เหมือน*** ถูกแก้ตามไปด้วย แต่เป็นเพียงเปลี่ยนความหมายเท่านั้น ค่า interviewtbl.interview_id และ peopletbl.interview_id ยังคงเดิม ถ้าหลังจากเกิดปัญหาแล้ว เราเข้าไปดูใน interviewtbl ก็จะเห็นค่าความหมายซ้ำอย่างที่ผมบอกไป

ส่วนวิธีการที่จะเอาความหมายของฟิลด์ peopletbl.interview_id ซึ่งจะต้องดึงมาจากเทเบิล interviewtbl มาแสดงในคอมโบบ็อกซ์นั้น ให้กำหนด property ต่างๆเหล่านี้ของคอมโบบ็อกซ์

- Control Source ให้เป็น interview_ID
- Row Source ให้เป็น SELECT interview_ID, interview_name FROM interviewtbl
- Bound Column property เป็น 1
- Limit to List เป็น Yes
- Column Count เป็น 2
- Column Width เป็น 0

คอมโบบ็อกซ์ตัวอื่นๆ ก็แก้ไขในแบบเดียวกัน แนะว่าคุณต้องไปอ่านว่า property ต่างๆของคอมโบบ็อกซ์ด้วยว่ามันหมายถึงยังไงและใช้งานยังไงด้วย
15 @R23612
เรียนคุณสันติสุขครับ

ตรงส่วน Control Source เปลี่ยนเป็น Interview_ID ไม่ได้ครับ

มีแต่ interview_name อย่างเดียวครับ
16 @R23613
ตอนนี้ทำได้แล้วครับ เดี่ยวผมขอลองทำสักครู่น่ะครับ
17 @R23617
ขอบคุณ คุณสันติสุข มากเลยครับได้แล้วขอบคุณมากครับ

ผมจะพัฒนาฝีมือให้มากกว่านี้นะครับ
18 @R23620
เรียนคุณ สันติสุข ครับ

ผมได้ทำตามคุณ ตอนนี้ผมได้พบปัญหาว่า

searchfrm ช่องค้นหาตามแผนกไม่สามารถค้นหาได้

เด้งเป็นถามหา section_name ยังนี้แก้อย่างไรครับ
19 @R23621
ผมให้เป็นลายแทงเอาไว้แล้วกัน

1. เรากำหนดให้ Record Source ของฟอร์มเป็น peopletbl เท่านั้น

2. เมื่อเลือกแผนกที่จะค้นหา คุณผูกเข้ากับ embeded macro ที่ทำการฟิลเตอร์ฟอร์มด้วยเงื่อนไข [section_name] Like "*" & [Forms]![searchfrm]![secdrop] & "*" จากข้อ 1 ทำให้ส่วนที่เป็นสีแดงนั้นต้องเป็นชื่อฟิลด์จาก peopletbl เท่านั้น แล้วฟิลด์อะไรบน peopletbl ที่เก็บข้อมูลเกี่ยวกับแผนก ?

3. ถ้าคอมโบบ็อกซ์ secdrop ยังมี property ต่างเหมือนไฟล์ที่คุณส่งมาให้ดู ก็จะบอกใบ้ให้ว่าการกำหนด property ต่างๆยังผิด คุณลองคิดให้ดีๆว่าตอนนี้คอมโบบ็อกซ์จะคืนค่าอะไรออกมากันแน่ ? ที่ถูกต้อง มันจะต้องคืนค่าที่นำไปค้นหาจากฟิลด์ในข้อ 2 ได้
20 @R23622
ขอคำใบ้เพิ่มครับคุณสันติสุข ฮ่าๆ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.4041s