กระทู้เก่าบอร์ด อ.Yeadram
1,907 7
URL.หัวข้อ /
URL
รบกวนช่วยอธิบายหน่อยค่ะ
พอดีต้องการที่จะแปลงข้อมูลคล้ายๆ กับตัวอย่างของกระทู้นี้ค่ะ
http://www.thai-access.com/yeadram_view.php?topic_id=1583
แต่มีไม่เข้าใจเวลาเราเขียน Code ในโมดูล แล้วเราเอาไปใช้อ้างอิงใน sql มันต้องทำอย่างไรค่ะ เพราะทำไปแล้วมันบอกไม่รู้จัก fnGetExpr ค่ะ
http://www.thai-access.com/yeadram_view.php?topic_id=1583
แต่มีไม่เข้าใจเวลาเราเขียน Code ในโมดูล แล้วเราเอาไปใช้อ้างอิงใน sql มันต้องทำอย่างไรค่ะ เพราะทำไปแล้วมันบอกไม่รู้จัก fnGetExpr ค่ะ
7 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R11463
เอาโค้ดนั้นไว้ในโมดูลหรือเปล่า โมดูลที่อยู่ในส่วน Module Object หน่ะครับ ไม่ใช่ไว้ในส่วนของฟอร์มหรือรายงานตัวไหนนะครับ
2 @R11469
เรียน อ. สันติสุข
ตอนนี้ได้นำโค้ดเข้าไปไว้ใน โมดูลแล้วค่ะเป็นแบบนี้ค่ะ
Public Function fnGetExpr(txtUserName As String) As String
Dim DB As DAO.Database
Dim RS As DAO.Recordset
Dim SQL As String
SQL = "select [»ÃÐʺ¡Òóì] from [Table1] where [ª×èÍ] = """ & txtUserName & """ order by [»ÃÐʺ¡Òóì]"
Set DB = CurrentDb
Set RS = DB.OpenRecordset(SQL)
Do Until RS.EOF
If fnGetExpr = "" Then
fnGetExpr = RS![»ÃÐʺ¡Òóì]
Else
fnGetExpr = fnGetExpr & "/" & RS![»ÃÐʺ¡Òóì]
End If
RS.MoveNext
Loop
RS.Close: Set RS = Nothing
DB.Close: Set DB = Nothing
Exit Function
ส่วน SQL เป็นแบบนี้ค่ะ
SELECT Table1.[ชื่อ], fnGetExpr([ชื่อ])
FROM Table1
GROUP BY Table1.[ชื่อ];
แต่พอ Run แล้วมันขึ้นว่า "Compile error: Expected End Function"
ก็เลยแก้จาก Exit Function เป็น End Function
แล้ว Run ใหม่ ก็มาติดที่บรรทัด Set RS=DB.OpenRecordset(SQL) ค่ะ
รบกวน อ. ช่วยดูให้อีกนิดค่ะ
ขอบคุณค่ะ
ตอนนี้ได้นำโค้ดเข้าไปไว้ใน โมดูลแล้วค่ะเป็นแบบนี้ค่ะ
Public Function fnGetExpr(txtUserName As String) As String
Dim DB As DAO.Database
Dim RS As DAO.Recordset
Dim SQL As String
SQL = "select [»ÃÐʺ¡Òóì] from [Table1] where [ª×èÍ] = """ & txtUserName & """ order by [»ÃÐʺ¡Òóì]"
Set DB = CurrentDb
Set RS = DB.OpenRecordset(SQL)
Do Until RS.EOF
If fnGetExpr = "" Then
fnGetExpr = RS![»ÃÐʺ¡Òóì]
Else
fnGetExpr = fnGetExpr & "/" & RS![»ÃÐʺ¡Òóì]
End If
RS.MoveNext
Loop
RS.Close: Set RS = Nothing
DB.Close: Set DB = Nothing
Exit Function
ส่วน SQL เป็นแบบนี้ค่ะ
SELECT Table1.[ชื่อ], fnGetExpr([ชื่อ])
FROM Table1
GROUP BY Table1.[ชื่อ];
แต่พอ Run แล้วมันขึ้นว่า "Compile error: Expected End Function"
ก็เลยแก้จาก Exit Function เป็น End Function
แล้ว Run ใหม่ ก็มาติดที่บรรทัด Set RS=DB.OpenRecordset(SQL) ค่ะ
รบกวน อ. ช่วยดูให้อีกนิดค่ะ
ขอบคุณค่ะ
3 @R11470
ขอโทษนะคะ พอดีที่โพส ไปเห็นภาษาไทยไม่ขี้น ตรงที่เป็นตัวอักษร [»ÃÐʺ¡Òóì] คือ [ประสบการณ์]
[ª×èÍ] คื่อ [ชื่อ] ค่ะ
รบกวนด้วยค่ะ
[ª×èÍ] คื่อ [ชื่อ] ค่ะ
รบกวนด้วยค่ะ
4 @R11472
อย่างแรกคือ ได้ทำการ compile หรือยัง โดยไปที่เมนู Debug แล้วเลือก Compile ถ้าผ่านก็ช่วยบอกด้วยว่าที่ error มันเป็นรหัสอะไร ข้อความว่าอะไร
5 @R11473
รหัส 3061 ค่ะ "Too few parameters. Expected 2."
ในกรณีที่ จบด้วย End Function นะคะ
ในกรณีที่ จบด้วย End Function นะคะ
6 @R11474
ลองเช็คดูให้ดีว่ามีสะกดชื่อฟิลด์ตรงไหนผิดหรือเปล่า และชื่อเทเบิลผิดหรือเปล่า ... ถ้าอ่านดูแล้วเหมือนว่าจะไม่มี ก็ลองพิมพ์ใหม่ทั้งบรรทัดอีกครั้งเลยครับ
7 @R11475
ได้แล้วค่ะ ลองเปลี่ยนชื่อฟิลด์ใหม่เป็น field1,field2 กันพลาด ทำได้แล้ค่ะ ขอบคุณมากๆค่ะ
Time: 0.3301s