กระทู้เก่าบอร์ด อ.Yeadram
        
           10,790   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)
แล้วมันแสดงผล เออเรอร์
ขอบคุณคร๊าบ
    
  มี 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 
				
        
    2 @R02449    
        
  
      Test    
    
  
        
    3 @R02450    
        
  
      ขอบคุณที่ให้ความรู้นะครับ
ช่วยได้มากที่เดียวหลาย ๆ ปัญหาที่ถาม
จะมีคนมาตอบให้ตลอด
    
  ช่วยได้มากที่เดียวหลาย ๆ ปัญหาที่ถาม
จะมีคนมาตอบให้ตลอด
        
    4 @R04834    
        
  
      ไม่เข้าใจเลยค่ะ งงๆ ไม่นิดแค่มากมาย    
    
  
        
    5 @R04835    
        
  
      ลองเขียนDLookUp("[Customer_ID]","[Customer]=[Customer_Name],[CboCustomer]    
    
  
        
    6 @R04836    
        
  
      ผลออกมาก็
#Name?
    
  #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 เพราะว่าคุณเขียนผิดครับ อ่านทำความเข้าในแล้วย้อนไปดูของคุณใหม่ครับ
    
  เวลาเขียนให้แต่ละอาร์กิวร์เมนต์ อยู่ภายใน เครื่องหมายอัญญประกาศ
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 ให้เมื่อยครับ    
    
  
      Time: 0.4948s
    
      
		
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 ออกมา