การใช้ dlookup บนฟอร์ม
กระทู้เก่าบอร์ด อ.Yeadram

 10,351   8
URL.หัวข้อ / URL
การใช้ dlookup บนฟอร์ม

มึนอยู่พักหนึ่งแล้ว
มี table ชือ product
มีฟิลลฺ 2 ฟิลล์
ชือ id เป็นตัวเลข 001 002 003
ชือ product เป็น ข้อความ
ทีวี เทป วิทยุ
มีฟอร์มมี 2 ฟิลล์ ชือฟอร์ม new
ตัวแรก ชือ product กรอกข้อความว่า เทป
ตัวที่สอง ต้องการ โชว์ id ที่เป็นตัวเลข 002
จากการใช้ dlookup เงือนไขให้ ชื่อโปรดัก ตาม ฟอร์ม คือ เทป
Dlookup ("[id]" , "product" , "product = " & forms!new!product)
แล้วมันแสดงผล เออเรอร์
ขอบคุณคร๊าบ

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

1 @R02446
Dlookup ("[id]" , "product" , "product = '" & forms!new!product & "'")

field product เก็บข้อมูลเป็นตัวอักษร (character) จึงต้องมี quotation mark ปิดหัว-ท้ายด้วย
กรณีรี้เราใช้ double quote ไปแล้ว เพื่อแสดงตาม syntax ของ aggregate funtion => dlookup ดังนั้นเราจะใช้ double quote เพื่อปิดหัว-ท้ายของคำที่เราต้องการค้นหาไม่ได้ จึงต้องใช้ single quote แทน

พอโปรแกรมทำงานมันจะไปถอดเอา double quote ที่อยู่ใน syntax ของ dlookup ออก และแปลง single quote ให้เป็น double quote เอง

จะได้เป็น dlookup(id, product, product="เทป") และคืนค่า 002 ออกมา

2 @R02449
Test
3 @R02450
ขอบคุณที่ให้ความรู้นะครับ
ช่วยได้มากที่เดียวหลาย ๆ ปัญหาที่ถาม
จะมีคนมาตอบให้ตลอด
4 @R04834
ไม่เข้าใจเลยค่ะ งงๆ ไม่นิดแค่มากมาย
5 @R04835
ลองเขียนDLookUp("[Customer_ID]","[Customer]=[Customer_Name],[CboCustomer]
6 @R04836
ผลออกมาก็
#Name?
7 @R04837
ฟังก์ชั่น Dlookup มี 3 อากิวร์เมนต์
เวลาเขียนให้แต่ละอาร์กิวร์เมนต์ อยู่ภายใน เครื่องหมายอัญญประกาศ
dlookup("1","2","3")

อาร์กิวร์เมนต์ที่ 1 ให้ระบุชื่อฟิลด์ที่เราต้องการหา
อาร์กิวร์เมนต์ที่ 2 ให้ระบุชื่อตารางที่เราจะเข้าไปหา
อาร์กิวร์เมนต์ที่ 3 ให้ระบุเงื่อนไข
dlookup("field1","table1","field2 =5")

หลักการใช้เงื่อนไขในฟังก์ชั่นกลุ่ม domain agregate
จากตัวอย่างก่อนหน้านี้ (ความหมายของมันคือ ให้คืนค่าที่อยู่ใน field1 จากตารางชื่อ table1 โดยให้มองหาในเรคคอร์ดใดๆ ก็ตาม ที่ค่าใน field2 = 5)
ถ้าเราทราบค่าในเงื่อนไขตรงๆ อย่างเช่นรู้ว่า 5 เราก็ใส่ค่าเข้าไปได้เลย
แต่ถ้าเรายังไม่รู้ว่าค่าเหล่านั้นมันจะเป็นเท่าไหร่ เราก็ให้ใส่ชื่อสมมติ หรือชื่อ textbox หรือชื่อคอนโทรล หรือชื่อตัวแปรแทนได้

dlookup("field1","table1","field2 = " & x)
และการใช้จริงๆ ต้องทราบชนิดข้อมูลของฟิลด์ที่จะนำมาเป็นเงื่อนไขด้วย ดังตัวอย่างก็คือเรากำลังพูดถึง field2 ถ้าชนิดข้อมูลมันเป็น text เมื่อมีการใส่ค่าให้ในเงื่อนไข ก็ต้องใช้เครื่องหมาย single quote เข้าไปคร่อมไว้ด้วย เช่น
dlookup("field1","table1","field2 ='5'")
หรือ
dlookup("field1","table1","field2 ='" & x & "'")

ถ้าชื่อต่างๆ ของคุณมันไม่เป็นไปตามข้อกำหนดของการตั้งชื่อ เช่นอาจจะมีช่องว่างในชื่อ คุณควรใส่เครื่องหมาย วงเล็บสี่เหลี่ยม คร่อมชื่อเอาไว้ได้ (ให้คร่อมแค่ชื่อไม่ใช่คร่อมทั้งหมด
dlookup("[Name]","[table student]","[table student].[No] =5")
จากตัวอย่างนี้ คุณต้องใส่เครือ่งหมายคร่อมหมด เพราะ..
Name เป็นคำสงวน
table student มีช่องว่างอยู่ในคำ
No ก็เป็นคำสงวน


ที่คุณเขียนมา แล้วบอกว่ามัน Error เพราะว่าคุณเขียนผิดครับ อ่านทำความเข้าในแล้วย้อนไปดูของคุณใหม่ครับ
8 @R04839
ขอเสนอให้ศึกษาเรื่องความสัมพันธ์ดีกว่าครับเพราะจากประสบการณ์ที่เคยใช้ dlookup ผมรู้ศึกว่ามันหน่วงกว่าการใช้ความสัมพันธ์ครับแถมถ้าเข้าใจเรื่องความสัมพันธ์แล้วไม่ต้องมานั่งเขียนสูตร dlookup ให้เมื่อยครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3601s