กระทู้เก่าบอร์ด อ.Yeadram
2,183 6
URL.หัวข้อ /
URL
การเรียกข้อมูลมาดูและแก้ไขผ่านฟอร์ม
สวัสดีค่ะ วันนี้ขอความช่วยเหลือเกี่ยวกับการเรียกข้อมูลมาดูและแก้ไขผ่านฟอร์มค่ะ คือ ตารางจะมีข้อมูล วันที่ทำสัญญา, เลขที่สัญญา, ชื่อลูกค้า, รายละเอียดสินค้า, ราคา, จำนวน และ วันที่ส่งมอบ
1. จำเป็นต้องกำหนดคีย์เวิร์ด หรือเปล่าคะ ปกติเลขที่สัญญาจะไม่ซ้ำกัน ถ้ากำหนดเป็นคีย์เวิร์ดแล้ว เวลาเรียกมาเพื่อแก้ไข จะขึ้นข้อความว่าไม่สามารถใช้เลขที่นี้ได้
2. เวลาเรียกข้อมูลมาดูและแก้ไข ต้องการให้พิมพ์เลขที่สัญญา แล้วข้อมูลอื่นๆ ในตารางขึ้นมาด้วย ทำยังไงคะ ลองใช้ Dlookup แล้ว ข้อมูลขึ้นมา แต่แก้ไขอะไรไม่ได้
ทำมาหลายวิธีและหลายวันแล้วยังไม่ได้เลยค่ะ เลยต้องเขียนมาถามอาจารย์อีกแล้ว
ขอบคุณมากค่ะ
1. จำเป็นต้องกำหนดคีย์เวิร์ด หรือเปล่าคะ ปกติเลขที่สัญญาจะไม่ซ้ำกัน ถ้ากำหนดเป็นคีย์เวิร์ดแล้ว เวลาเรียกมาเพื่อแก้ไข จะขึ้นข้อความว่าไม่สามารถใช้เลขที่นี้ได้
2. เวลาเรียกข้อมูลมาดูและแก้ไข ต้องการให้พิมพ์เลขที่สัญญา แล้วข้อมูลอื่นๆ ในตารางขึ้นมาด้วย ทำยังไงคะ ลองใช้ Dlookup แล้ว ข้อมูลขึ้นมา แต่แก้ไขอะไรไม่ได้
ทำมาหลายวิธีและหลายวันแล้วยังไม่ได้เลยค่ะ เลยต้องเขียนมาถามอาจารย์อีกแล้ว
ขอบคุณมากค่ะ
6 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R08157
ขอบคุณสำหรับคำตอบค่ะ
คือฟอร์มที่มีอยู่ตอนนี้เป็นอย่างที่อาจารย์บอกแล้ว แต่ข้อมูลมีเยอะมาก เป็นหมืน เรคคอร์ด เลยต้องการได้วิธีที่สะดวกกับการใช้ คือคีย์เลขที่สัญญาปุ๊บ ข้อมูลที่เหลือก็ขึ้นมาให้แก้ไขเลย จะมีคำสั่งพิเศษที่ทำได้มั๊ยคะ
เรื่องการระวังการแก้ไขข้อมูลโดยไม่ตั้งใจ เคยอ่านเจอที่อาจารย์ตอบไว้แล้ว ... แต่ยังไปไม่ถึงขั้นนั้นค่ะ
คือฟอร์มที่มีอยู่ตอนนี้เป็นอย่างที่อาจารย์บอกแล้ว แต่ข้อมูลมีเยอะมาก เป็นหมืน เรคคอร์ด เลยต้องการได้วิธีที่สะดวกกับการใช้ คือคีย์เลขที่สัญญาปุ๊บ ข้อมูลที่เหลือก็ขึ้นมาให้แก้ไขเลย จะมีคำสั่งพิเศษที่ทำได้มั๊ยคะ
เรื่องการระวังการแก้ไขข้อมูลโดยไม่ตั้งใจ เคยอ่านเจอที่อาจารย์ตอบไว้แล้ว ... แต่ยังไปไม่ถึงขั้นนั้นค่ะ
3 @R08158
1) ชื่อคอนโทรลที่ใช้แสดง เลขที่สัญญาชื่ออะไร
2) คอนโทรลที่ใช้แสดงเลขที่สัญญาเป็นอะไร
ผมสมมติเอาใหม่ทั้งหมดเลยก็แล้วกันครับ
ฟิลด์เลขที่สัญญาชื่อ fdContract
คอนโทรลทีแสดงผล เป็น textbox ชื่อ txContract
ให้คุณหาที่สร้างคอนโทรลเพิ่มสองตัว (อาจจะส่วนหัวของฟอร์มก็ได้ครับ)
1) เป็น textbox ชื่อ txCTsearch
2) เป็นปุ่มคำสั่ง ชื่อ cmdCTsearch
เขียนคำสั่งในเหตุการณ์เมื่อคลิ๊กของปุ่มคำสั่งดังนี้
Private sub cmdCTsearch_Click()
if len(txCTsearch) < 1 then exit sub
docmd.gotocontrol "txContract"
DoCmd.FindRecord txCTsearch, acAnywhere, True, acSearchAll, , acCurrent, True
End sub
เวลาใช้ครับ
-ให้กรอกเลขที่สัญญาที่ต้องการค้นหา ในช่อง txCTsearch แล้วกดปุ่มคำสั่งครับ
ลองนำไปประยุกต์ต่อดูครับ
2) คอนโทรลที่ใช้แสดงเลขที่สัญญาเป็นอะไร
ผมสมมติเอาใหม่ทั้งหมดเลยก็แล้วกันครับ
ฟิลด์เลขที่สัญญาชื่อ fdContract
คอนโทรลทีแสดงผล เป็น textbox ชื่อ txContract
ให้คุณหาที่สร้างคอนโทรลเพิ่มสองตัว (อาจจะส่วนหัวของฟอร์มก็ได้ครับ)
1) เป็น textbox ชื่อ txCTsearch
2) เป็นปุ่มคำสั่ง ชื่อ cmdCTsearch
เขียนคำสั่งในเหตุการณ์เมื่อคลิ๊กของปุ่มคำสั่งดังนี้
Private sub cmdCTsearch_Click()
if len(txCTsearch) < 1 then exit sub
docmd.gotocontrol "txContract"
DoCmd.FindRecord txCTsearch, acAnywhere, True, acSearchAll, , acCurrent, True
End sub
เวลาใช้ครับ
-ให้กรอกเลขที่สัญญาที่ต้องการค้นหา ในช่อง txCTsearch แล้วกดปุ่มคำสั่งครับ
ลองนำไปประยุกต์ต่อดูครับ
4 @R08267
ขอโทษค่ะ หายไปนานไม่ได้แจ้งผล เพิ่งได้มีเวลาทำตามที่อาจารย์บอก แล้วใช้งานได้ดีทีเดียวค่ะ ขอบคุณมากค่ะ
ตอนนี้มีปัญหาใหม่อีกข้อค่ะ คือข้อมูลที่ใช้เป็นการดึงมาจากไฟล์ .dbf เก่า และมีฟิลด์ วันส่งมอบสินค้า ที่ถูกกำหนดให้เป็น text มีตัวอักษรกำกับ คือ
F = วันที่ 1-15 เช่น F02/2011
S =วันที่ 16- สิ้นเดือน เช่น S02/2011
ในรายละเอียดของรายงาน ก็จะเลือกเอารายการทั้ง F02/2011, S02/2011 มาทั้งหมดโดยใช้ คิวรี่ criteria วันส่งมอบ = Like "*" & [ Shipment? ] & "*"
แต่ในใบสรุป เราจะทำอย่างไรให้รายงานเขียนว่า วันส่งมอบ คือ " FEBRUARY 2011"
ทดลองทำตามโค้ดที่ว่าให้ตัดตัวอักษรออกแล้วยังไม่ได้ค่ะ
ขอบคุณล่วงหน้าค่ะ
ตอนนี้มีปัญหาใหม่อีกข้อค่ะ คือข้อมูลที่ใช้เป็นการดึงมาจากไฟล์ .dbf เก่า และมีฟิลด์ วันส่งมอบสินค้า ที่ถูกกำหนดให้เป็น text มีตัวอักษรกำกับ คือ
F = วันที่ 1-15 เช่น F02/2011
S =วันที่ 16- สิ้นเดือน เช่น S02/2011
ในรายละเอียดของรายงาน ก็จะเลือกเอารายการทั้ง F02/2011, S02/2011 มาทั้งหมดโดยใช้ คิวรี่ criteria วันส่งมอบ = Like "*" & [ Shipment? ] & "*"
แต่ในใบสรุป เราจะทำอย่างไรให้รายงานเขียนว่า วันส่งมอบ คือ " FEBRUARY 2011"
ทดลองทำตามโค้ดที่ว่าให้ตัดตัวอักษรออกแล้วยังไม่ได้ค่ะ
ขอบคุณล่วงหน้าค่ะ
5 @R08268
Format(DateSerial(right([วันส่งมอบสินค้า],4),mid([วันส่งมอบสินค้า],2,2),1),"mmmm yyyy")
6 @R08285
เอ่อ... อาจารย์แดนคะ
ขอโทษค่ะเอาไปวางไว้ตรงไหนคะ
ขอโทษค่ะเอาไปวางไว้ตรงไหนคะ
Time: 0.3244s
มันจะถามว่า จะใช้แหล่งข้อมูลจากที่ใด ให้คุณเลือกตารางที่ต้องการ
แล้วก็ทำไปตามมันบอกครับ
-เซฟฟอร์ม แล้วก็ทำงานได้ตามต้องการครับ
-คุณสามารถเลื่อนเรคคอร์ดดูได้ครับ ว่าจะดูเรคคอร์ดที่เท่าไร
-ถ้าคุณต้องการค้นหาเรคคอร์ดอื่นๆ เช่นต้องการค้นหาเรคคอร์ดที่ มีเลขที่ สัญญาเท่ากับ xxx ให้คุณวางเคอร์เซอร์ไว้ในกล่องข้อความ ที่แสดงเลขที่สัญญา แล้วกด ctl+F ก็จะมี Dialog ให้ช่วยค้นหาแล้วครับ กรอกเลขที่ ที่ต้องการค้นหาได้เลย
- ข้อมูลที่คุณกำลังดูอยู่ สามารถแก้ไขได้ทันที และมันจะบันทึกรับค่าที่แก้ไขแล้วโดยอัตโนมัติครับ
- !!! ระวังอาจมีการแก้ไขข้อมูลโดยไม่ได้ตั้งใจ ถ้าต้องการป้องกันไม่ให้แก้ไขข้อมูลโดยไม่ได้ตั้งใจ ต้องเรียนรู้ Access เพิ่มขึ้นอีกครับ อ่านจากหนังสือ, หรือจาก help หรือจากการขยันหาตัวอย่างของคนอื่นๆ มาดูเยอะๆ ครับ