กระทู้เก่าบอร์ด อ.Yeadram
1,377 5
URL.หัวข้อ /
URL
สอบถาม ช่วยด้วยครับ
ถ้าต้องการเช็คค่า text บน form โดยใช้คำสั่ง DLookup จะต้องเขียนอย่างไงครับ
ตอนนี้เริ่มงงแล้วครับ ประมาณว่ามี สร้าง tabel ชื่อ Temp และสร้าง field อยู่ 4 field
- Date
- Modle ID
- Model Name
- Serial Number
สร้าง text ชื่อ Mix โดยเอาค่าของ field "Date" + "ModelID" และเมื่อเวลารับค่าของ Serial Number จะต้องตรงกับ textMix ถ้าไม่ตรงแสดงว่าเอา Serial Number ผิดมา input แบบนี้เราต้องทำอย่างไงบ้างครับ
ตอนนี้เริ่มงงแล้วครับ ประมาณว่ามี สร้าง tabel ชื่อ Temp และสร้าง field อยู่ 4 field
- Date
- Modle ID
- Model Name
- Serial Number
สร้าง text ชื่อ Mix โดยเอาค่าของ field "Date" + "ModelID" และเมื่อเวลารับค่าของ Serial Number จะต้องตรงกับ textMix ถ้าไม่ตรงแสดงว่าเอา Serial Number ผิดมา input แบบนี้เราต้องทำอย่างไงบ้างครับ
5 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R10899
เป็นอย่างงี้ครับ มี table 2 table
1 เป็น master table มี field Model ID และ Model Name
2 เป็น table history ก็จะมี field ตามนี้ครับ ด้านบนบอกขาดไปครับ
- Date
- Modle ID
- Model Name
- Serial Number
- Lable
ค่าของ Lable จะเอา Date + ModelName (3 ตัวแรก) + Serial Number ผมจะเช็คค่าได้อย่างไงว่า Lable ที่ส่งมาถูกต้องหรือผิด เพราะมันไม่มี table master ที่ผมคิดได้มีสองวิธีคือ Query แต่ก็ไม่ได้เพราะข้อมูลเวลา key เข้าไปยังไม่มีการ update สองสร้าง textbox แต่ก็เช็คค่าไม่ได้ รบกวนด้วยครับ
1 เป็น master table มี field Model ID และ Model Name
2 เป็น table history ก็จะมี field ตามนี้ครับ ด้านบนบอกขาดไปครับ
- Date
- Modle ID
- Model Name
- Serial Number
- Lable
ค่าของ Lable จะเอา Date + ModelName (3 ตัวแรก) + Serial Number ผมจะเช็คค่าได้อย่างไงว่า Lable ที่ส่งมาถูกต้องหรือผิด เพราะมันไม่มี table master ที่ผมคิดได้มีสองวิธีคือ Query แต่ก็ไม่ได้เพราะข้อมูลเวลา key เข้าไปยังไม่มีการ update สองสร้าง textbox แต่ก็เช็คค่าไม่ได้ รบกวนด้วยครับ
3 @R10900
If Label = Format([Date], "format ตามต้องการ") & Left([ModelName],3) & [Serial Number] Then
4 @R10902
คุณต้องการให้ป้อนข้อมูลเข้าตาราง Temp
โดยก่อนจะบันทึกให้มีการตรวจสอบเทียบเคียงกับข้อมูลเก่าในตาราง history
ว่าข้อมูลที่ส่งเข้ามา เป็นข้อมูลที่ถูกต้องตามรูปแบบหรือไม่?
ถ้าคุณเช็คเพื่อต้องการความมั่นใจว่าผู้ใช้จะกรอกผิด
แนวทางที่ผมคิดว่าน่าจะเหมาะกับงาน ให้สร้างเป็น คอมโบบ็อกซ์ ให้ผู้ใช้เลือกดีกว่า แหล่งข้อมูลของคอมโบก็คือเอาข้อมูลจากตาราง history
แต่ถ้าคุณจะเช็คเพราะเพื่อต้องการพิสูจน์ข้อมูลว่า กรอกตามเท็จจริง หรือกรอกมั่วมา ก็คงต้องใช้วิธีตามเดิมของคุณ คือให้ คีย์ก่อนแล้วค่อยตรวจสอบ
- เมื่อผู้ใช้กรอกข้อมูลเสร็จ ให้แยกข้อมูลออกเป็น 3 ส่วน
- นำข้อมูลทั้งสามส่วน ไปเป็นเงื่อนไขในการค้นหา จากตาราง history โดยให้แต่ละข้อมูลแยกเป็น ข้อมูลละเงื่อนไข รวมแล้วก็คือต้องใช้ 3 เงื่อนไข
ตัวอย่างเช่น
ผู้ใช้กรอก 111115555222222222
คุณก็ไปใช้ left() หรือ mid() หรือ right() ให้ได้ออกมา
a = 11111
b = 5555
c = 222222222
ต่อไปก็นำข้อมูลทั้งสามส่วนมาต่อสายอักขระเป็น 3 เงื่อนไข (ผมจะเขียนยาวๆ เพื่อให้เข้าใจง่าย)
stWhere = "[modelDate] = " & a
stWhere = stWhere & ", left([modelName],3) Like '" & b & "'"
stWhere = stWhere & ", [SerialNumber] Like '" & c & "'"
ทีนี้ก็เอา สายอักขระเงื่อนไข ที่เราเตรียมแล้ว ไปใส่ในฟังก์ชั่น dCount() ดังนี้
result = nz(dcount("[model id]", "[history"], strWhere),0)
if result = 0 แปลว่าข้อมูลมั่วมา
พอเห็นแนวทางชัดเจนขึ้นไหมครับ
น่าจะทำให้หายงง แล้วนะครับ
โดยก่อนจะบันทึกให้มีการตรวจสอบเทียบเคียงกับข้อมูลเก่าในตาราง history
ว่าข้อมูลที่ส่งเข้ามา เป็นข้อมูลที่ถูกต้องตามรูปแบบหรือไม่?
ถ้าคุณเช็คเพื่อต้องการความมั่นใจว่าผู้ใช้จะกรอกผิด
แนวทางที่ผมคิดว่าน่าจะเหมาะกับงาน ให้สร้างเป็น คอมโบบ็อกซ์ ให้ผู้ใช้เลือกดีกว่า แหล่งข้อมูลของคอมโบก็คือเอาข้อมูลจากตาราง history
แต่ถ้าคุณจะเช็คเพราะเพื่อต้องการพิสูจน์ข้อมูลว่า กรอกตามเท็จจริง หรือกรอกมั่วมา ก็คงต้องใช้วิธีตามเดิมของคุณ คือให้ คีย์ก่อนแล้วค่อยตรวจสอบ
- เมื่อผู้ใช้กรอกข้อมูลเสร็จ ให้แยกข้อมูลออกเป็น 3 ส่วน
- นำข้อมูลทั้งสามส่วน ไปเป็นเงื่อนไขในการค้นหา จากตาราง history โดยให้แต่ละข้อมูลแยกเป็น ข้อมูลละเงื่อนไข รวมแล้วก็คือต้องใช้ 3 เงื่อนไข
ตัวอย่างเช่น
ผู้ใช้กรอก 111115555222222222
คุณก็ไปใช้ left() หรือ mid() หรือ right() ให้ได้ออกมา
a = 11111
b = 5555
c = 222222222
ต่อไปก็นำข้อมูลทั้งสามส่วนมาต่อสายอักขระเป็น 3 เงื่อนไข (ผมจะเขียนยาวๆ เพื่อให้เข้าใจง่าย)
stWhere = "[modelDate] = " & a
stWhere = stWhere & ", left([modelName],3) Like '" & b & "'"
stWhere = stWhere & ", [SerialNumber] Like '" & c & "'"
ทีนี้ก็เอา สายอักขระเงื่อนไข ที่เราเตรียมแล้ว ไปใส่ในฟังก์ชั่น dCount() ดังนี้
result = nz(dcount("[model id]", "[history"], strWhere),0)
if result = 0 แปลว่าข้อมูลมั่วมา
พอเห็นแนวทางชัดเจนขึ้นไหมครับ
น่าจะทำให้หายงง แล้วนะครับ
5 @R10905
ยังไม่ได้ครับ
สร้างคอมโบบ๊อกซ์ ไม่ได้ครับเพราะ รับค่าจาก barcode รบกวนอาจารย์ด้วยครับ
สร้างคอมโบบ๊อกซ์ ไม่ได้ครับเพราะ รับค่าจาก barcode รบกวนอาจารย์ด้วยครับ
Time: 0.3696s
ถ้ามีdata ของ Serial Number ใน table อยู่แล้ว แปลว่า เทียบ Serial Number กันได้เลย ไม่ต้องไปเทียบ Date + ModelID แต่ในทางกลับกัน ทำไมต้องมี field Serial Number ในเมื่อ ค่า = Date + ModelID เสมอ หรือเปล่า หรือว่า design table ผิดครับ