กระทู้เก่าบอร์ด อ.Yeadram
1,723 7
URL.หัวข้อ /
URL
แยกค่าใน DLookup
จาก
DLookup("[fld1] & ' ' & [fld2]", "tbl1", "inx = " & Me.txtInx)
ทำยังไงจะแยกค่า fld1 กับ fld2 ออกมาได้คะ เช่น ให้
ตัวแปร i = fld1 และ j = fld2 โดย DLookup("[fld1] & ' ' & [fld2]", "tbl1", "inx = " & Me.txtInx) แค่ครั้งเดียว
DLookup("[fld1] & ' ' & [fld2]", "tbl1", "inx = " & Me.txtInx)
ทำยังไงจะแยกค่า fld1 กับ fld2 ออกมาได้คะ เช่น ให้
ตัวแปร i = fld1 และ j = fld2 โดย DLookup("[fld1] & ' ' & [fld2]", "tbl1", "inx = " & Me.txtInx) แค่ครั้งเดียว
7 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R02069
DLookup( ) ให้ค่าคืนได้จากแค่ฟิลด์เดียวครับ ถ้าต้องการหลายฟิลด์ต้องไปใช้ OpenRecordset method ของ DAO (หรือ ADO) Recordset แทนครับ
2 @R02070
ถ้าได้มาแค่สองฟิลด์ ใช้การหาตำแหน่งตัวคั่น แล้วใช้ mid() กับ left() แยกเอาก็ได้ครับ
dim sq
sq = DLookup("[fld1] & ' ' & [fld2]", "tbl1", "inx = " & Me.txtInx)
x = instr(1,sq," ")
i= left(sq,x-1)
j = mid(sq,x+1)
แต่ถ้าได้ มาหลายฟิลด์ ควรใช้ split() เข้าอาเรย์ดีกว่าครับ (นี่เป็นวิธีของคนที่ไม่ค่อยขยันเขียน แบบดึง ชุดเรคคอร์ดนะเนี่ย อิอิ)
dim sq
sq = DLookup("[fld1] & ' ' & [fld2]", "tbl1", "inx = " & Me.txtInx)
x = instr(1,sq," ")
i= left(sq,x-1)
j = mid(sq,x+1)
แต่ถ้าได้ มาหลายฟิลด์ ควรใช้ split() เข้าอาเรย์ดีกว่าครับ (นี่เป็นวิธีของคนที่ไม่ค่อยขยันเขียน แบบดึง ชุดเรคคอร์ดนะเนี่ย อิอิ)
3 @R02073
ขอบคุณค่ะ
ถามต่ออีกนิดว่า ทำไม DLookup ถ้าไม่เจอข้อมูลแล้วมันขึ้น error '94' คะ
ถามต่ออีกนิดว่า ทำไม DLookup ถ้าไม่เจอข้อมูลแล้วมันขึ้น error '94' คะ
4 @R02074
อิอิ จะบอกว่า "ถามกวน ??รือเปล่านี่" ก็กระไรอยู่
คือเมื่อเราสั่งให้มันไปหาข้อมูล มันไม่เจอ มันก็ต้องแจ้งกลับมาซักอย่างนั่นแหละครับ โดยกรณี นี้ มันแจ้งกลับมาในรูป error หมายเลข 94
เราไม่ควรสงสัยว่า "ทำไม" แต่เราควรถามต่อว่า "เราจะทำอย่างไรต่อไป"
ด้วยการที่มัน แจ้งกลับมาอย่างถูกต้องตามหน้าที่ของมันนี่เอง เราก็สามารถนำไปประยุกต์ต่อได้ครับ เช่น
on error resume next
sq = dlookup(.........)
if err=94 then
sq =""
msgbox "ไม่มีข้อมูลตามที่ต้องการ"
end if
หรือเราจะดักมันก่อนที่จะเกิด error ก็ได้เช่น
if dlookup(........)<>Null then
เพราะไม่ว่าจะรัดกุมเพียงใดก็ตาม การเขียนโปรแกรมมันคือการกำหนดล่วงหน้าทั้งนั้น เราไม่รู้หรอกว่าเมื่อใช้งานจริงๆ หรือเมื่อโปรแกรมของเราไปประสบกับข้อมูลจริงๆ มันจะไปเจอข้อยกเว้น ข้อห้าม หรือข้อจำกัดอื่นใดอีกหรือเปล่า อย่างที่ทั่วโลกเขาประสบล่ะครับ ที่บอกกันว่า เจอ Bug ในโปรแกรม นั่นส่วนหนึ่งก็เกิดจากการที่โปรแกรมเมอร์คาดไม่ถึงว่าจะเกิดเหตุการณ์อย่างนั้น หรือจะเจอกับข้อมูลแบบนั้นเข้า
ดังนั้นเมื่อเราเรียนรู้การเขียนโปรแกรม เราก็ต้องเรียนรู้การ Debug ไปด้วยครับ
คือเมื่อเราสั่งให้มันไปหาข้อมูล มันไม่เจอ มันก็ต้องแจ้งกลับมาซักอย่างนั่นแหละครับ โดยกรณี นี้ มันแจ้งกลับมาในรูป error หมายเลข 94
เราไม่ควรสงสัยว่า "ทำไม" แต่เราควรถามต่อว่า "เราจะทำอย่างไรต่อไป"
ด้วยการที่มัน แจ้งกลับมาอย่างถูกต้องตามหน้าที่ของมันนี่เอง เราก็สามารถนำไปประยุกต์ต่อได้ครับ เช่น
on error resume next
sq = dlookup(.........)
if err=94 then
sq =""
msgbox "ไม่มีข้อมูลตามที่ต้องการ"
end if
หรือเราจะดักมันก่อนที่จะเกิด error ก็ได้เช่น
if dlookup(........)<>Null then
เพราะไม่ว่าจะรัดกุมเพียงใดก็ตาม การเขียนโปรแกรมมันคือการกำหนดล่วงหน้าทั้งนั้น เราไม่รู้หรอกว่าเมื่อใช้งานจริงๆ หรือเมื่อโปรแกรมของเราไปประสบกับข้อมูลจริงๆ มันจะไปเจอข้อยกเว้น ข้อห้าม หรือข้อจำกัดอื่นใดอีกหรือเปล่า อย่างที่ทั่วโลกเขาประสบล่ะครับ ที่บอกกันว่า เจอ Bug ในโปรแกรม นั่นส่วนหนึ่งก็เกิดจากการที่โปรแกรมเมอร์คาดไม่ถึงว่าจะเกิดเหตุการณ์อย่างนั้น หรือจะเจอกับข้อมูลแบบนั้นเข้า
ดังนั้นเมื่อเราเรียนรู้การเขียนโปรแกรม เราก็ต้องเรียนรู้การ Debug ไปด้วยครับ
5 @R02076
ขอบคุณอีกครั้งค่ะ
6 @R02079
Error 94 มันคือ Invalid use of Null นี่ครับ ไม่ใช่หาข้อมูลไม่พบ แต่เป็นเพราะ Me.txtInx หรือค่าของ fld1 หรือ fld2 เป็น Null มากกว่านะครับ
7 @R02080
อ้อ ขอบคุณครับ อาจารย์
ที่อาจารย์เขาบอกมา อย่างง นะครับ คุณ ลี่
ตามหลักการของ database แล้ว
ค่าของ "" จะไม่เท่ากับ Null นะครับ มันคนละค่ากัน
ที่อาจารย์เขาบอกมา อย่างง นะครับ คุณ ลี่
ตามหลักการของ database แล้ว
ค่าของ "" จะไม่เท่ากับ Null นะครับ มันคนละค่ากัน
Time: 0.3567s