กระทู้เก่าบอร์ด อ.Yeadram
        
           2,059   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.4878s
    
      
		