¤ÃÑé§ã´¡çµÒÁ·Õ·Õè¼ÁµéͧÃѺ˹éÒ·Õèà»ç¹·Õè»ÃÖ¡ÉÒ ËÃ×Í »ÃÐàÁÔ¹¼Å§Ò¹â»Ãਤ¹Ñ¡ÈÖ¡ÉÒ ·Õèà¡ÕèÂÇ¢éͧ¡Ñº¡ÒÃ·Ó CAI (Computer Assisted Instruction) ËÃ×Í ¡ÒùӤÍÁ¾ÔÇàµÍÃìÁÒªèÇ·Ñé§ã¹àÃ×èͧ¢Í§¡ÒÃàÃÕ¹ áÅÐ ¡ÒÃÊ͹ .. ¼Á¨Ðá¨é§ä»Âѧà´ç¡¹Ñ¡ÈÖ¡ÉÒ·Ø¡¡ÅØèÁàÅÂÇèÒ ËÒ¡¨Ð·Ó˹éÒ¨Í Login à¢éÒÊÙèÃкº áµè¶éÒäÁèÊÒÁÒö¹Ó¢éÍÁÙÅÁÒãªé»ÃÐ⪹ìÍÐäÃä´éàÅ (ÁÕáµèÊÇÑÊ´Õ¤ÃѺ ÊÇÑÊ´Õ¤èÐ ¤Ø³ ... ) ¡ç¢Í¤ÇÒÁ¡ÃسÒÍÂèÒ·ÓÁÒ à˵ؼÅÊÑ鹿¤×Í ¼ÁÃÓ¤ÒÊÒÂµÒ 55555+ ... ·Õè¨ÃÔ§¡çà¾ÃÒÐà´ç¡¹Ñ¡ÈÖ¡ÉÒàËÅèÒ¹Õéà¢Ò (ËÃ×Íà¸Í) ÂѧäÁèÁÕ»ÃÐʺ¡Òóìã¹§Ò¹Ê͹¨ÃÔ§àÅ ¡Ò÷Õè¨ÐµÕ¤ÇÒÁËÁÒÂã¹ÊÔè§·Õè¨ÐÊ͹ áÅéǵéͧàÍÒÁѹÁÒ¹ÓàʹÍÍÂÙèã¹ÃٻẺ¢Í§Ê×èͤÍÁ¾ÔÇàµÍÃì ¡çÂÔè§ÂÒ¡ÁÒ¡ÁÒ ... ´Ñ§¹Ñé¹µéͧÁͧ»ÃÐà´ç¹ËÅÑ¡æàÊÕ¡è͹ áµè ... ¼Á¨ÐÁÕµÑÇÍÂèÒ§¢Í§¨ÃÔ§ãËéà¢Ò´Ùã¹Êèǹ¢Í§¡ÒõԴµè͡Ѻ°Ò¹¢éÍÁÙÅ ... à¾×èÍÍÐäà ... ¡çà¾×èÍÊÃéÒ§áç¨Ù§ã¨ãËéà´ç¡Âѧä§ÅèФÃѺ ËÒ¡à¢ÒÊÒÁÒö·Ó§Ò¹ËÅÑ¡æä´éÊÓàÃç¨ ¼Á¡ç¨Ðà¨Õ´àÇÅÒ (¡Ô¹àËÅéÒ 55555+) ¢Í§¼Á ÁÒÊ͹ÇÔ¸Õ¡ÒâÑ鹵͹µèÒ§æãËé ... ËÒ¡à¢ÒÍÂÒ¡¨Ðä´é¤ÇÒÁÃÙé áÅÐ »ÃÐʺ¡Òóì·Õèà¾ÔèÁÁÒ¡¢Öé¹¹èÐ ... áµè¶éÒäÁèÍÂÒ¡ä´é¡çáÅéÇä» àËÍææææ ... äÁèàÊÕÂàÇÅÒ |
 |
 |
à¢éÒàÃ×èͧ à¢éÒ»ÃÐà´ç¹¡Ñ¹àÅ ... º·¤ÇÒÁªÔé¹¹Õé ¼Á¡çäÁèä´éà˹×èÍ ËÃ×Í ÊÔé¹à»Å×ͧàÇÅÒä»ÁÒ¡ÁÒÂàÅ à¾ÃÒÐÅÍ¡ÁÒ¨Ò¡§Ò¹¢Í§ Visual Basic 6 + MS Access ·Õè¼Áà¢Õ¹äÇé¡è͹˹éÒ¹ÕéáÅéÇ ã¹ËÑÇ¢éÍàÃ×èͧ VB6 ¡Ñº¡Ò÷Ó˹éÒ¨Í Login ÃдѺÁ×ÍÍÒªÕ¾ ÀÒ¤ 1 - »°Áº· ... ¡ç¹ÓÁÒ»ÃѺáµè§¹Ô´Ë¹èÍ µÒÁÃٻẺ áÅÐ ¤ÓÊÑè§·Õèãªé§Ò¹¢Í§ Visual Basic for Application ËÃ×Í VBA ÊÓËÃѺ PowerPoint ... |
 |
¡ÒõԴµè͡Ѻ°Ò¹¢éÍÁÙÅ´éÇ ADO - ActiveX Data Objects
 â´Â¡ÒÃà¢éÒä»·Õè Microsoft Visual Basic Editor ËÃ×Í ¡´»ØèÁ Alt + F11 ¨Ò¡¹Ñé¹ãËéàÅ×Í¡ Tools --> References ... (·ÕèàËÅ×Í¡çµÒÁÀÒ¾¤ÃѺ) |
 |
¡ÒûÃѺáµè§¤Ø³ÊÁºÑµÔ¢Í§ Control Ẻ Design Time (¤×Í ¡ÒõÑ駤èҤسÊÁºÑµÔµèÒ§æ¢Í§ Control ¡è͹·Õè¨ÐÊÑè§ Run Macro) |
â´Â¨ÐÁÕ¡ÒõÑ駤èÒ Properties ËÅÑ¡æ´Ñ§µèÍ仹Õé (äÁè¨Óà»ç¹µéͧ仵Ñ駤èÒ·Ñé§ËÁ´àŹèФÃѺ) (¢éÒ§ÅèÒ§¹Õé¤×͵ÑÇÍÂèÒ§ Control ºÒ§µÑǹèФÃѺ)
CommandButon (»ØèÁ¡´)
- Name = cmdOK (µÑÇÂèÍ cmd à¾×èÍÊ×èͶ֧ Command Button Control)
- Font = Angsana New (ËÃ×ÍàÅ×Í¡µÑÇÍ×è¹æ¡çä´é)
- Caption = »éÒº͡ª×èÍ»ØèÁÇèÒ¡´áÅéÇä»·Ó§Ò¹ÍÐäà àªè¹ ¨º¡Ò÷ӧҹ
TextBox (ªèͧ¡ÃÍ¡¢éÍÁÙÅ)
- Name = txtUserID (µÑÇÂèÍ txt à¾×èÍÊ×èͶ֧ TextBox Control)
- Font = Angsana New (ËÃ×ÍàÅ×Í¡µÑÇÍ×è¹æ¡çä´é)
- Text = ¡ÒáÓ˹´¤èÒãËé¡Ñº TextBox
- BorderStyle = 1 - frmBoderStyleSingle (ãÊè¡Ãͺªèͧ»é͹¢éÍÁÙÅãËéàËç¹à´è¹ªÑ´)
Label (»éÒº͡)
- Name = lblUserID (µÑÇÂèÍ lbl à¾×èÍÊ×èͶ֧ Label Control)
- Font = Angsana New (ËÃ×ÍàÅ×Í¡µÑÇÍ×è¹æ¡çä´é)
- Caption = »éÒº͡ ËÃ×Í ¤Ó͸ԺÒ àªè¹ ¡Ãسһé͹ª×èͼÙéãªé§Ò¹
|
ÇÔ¸ÕÅçͤ¡Òá´¤ÕÂìºÍÃì´ áÅÐ ¤ÅÔê¡àÁÒÊ캹 Slide ¢Í§ PowerPoint (¡àÇ鹡Òá´»ØèÁ Escape) ¨Ø´»ÃÐʧ¤ì à¾×èÍäÁèµéͧ¡ÒÃãËé User ÊÒÁÒöà¢éÒ¶Ö§ Slide Í×è¹æä´é ¨¹¡ÇèҨзӡÒà Login à¢éÒÊÙèÃкºä´éàÊÃç¨ÊÁºÙóì ËÃ×Í ËÒ¡µéͧ¡Òà Lock ¡Òá´¤ÕÂìä´éËÁ´àÅ ÊÒÁÒö´ÒǹìâËÅ´ Add-In ÁÒãªé§Ò¹ä´é·Õè¹Õè

ÇÔ¸Õ¡ÒÃÊÃéÒ§ä¿Åì Module ãËÁè (¹ÒÁÊ¡ØÅ BAS) ¤ÓÇèÒ Module ¨Ðà»ç¹¡ÒÃÃǺÃÇÁµÑÇá»ÃµèÒ§æ·Õè¨Óà»ç¹µéͧãªé§Ò¹ºèÍÂæ áÅÐ µéͧ¡ÒÃãËéÊÒÁÒöÁͧàËç¹µÑÇá»Ãà¾×èÍãªé§Ò¹ä´é·Ñé§â»Ãਤ ÃÇÁä»¶Ö§¡ÒèѴà¡çº¾Ç¡â»Ãá¡ÃÁÂèÍÂæ (Sub Program ËÃ×Í Function) ·ÕèÊÓ¤ÑæàÍÒäÇéãªé§Ò¹ à¾×èÍ·Õè¨Ðä´éäÁèµéͧ¹Ñè§ÁÒà¢Õ¹â¤é´¢Öé¹ãËÁèµÅÍ´·Ø¡¤ÃÑé§´éÇ ´Ñ§¹Ñ鹡ÒõÑ駪×èÍ Module àËÅèÒ¹Õé àÃÒµéͧ¾ÂÒÂÒÁµÑ駪×èÍà¾×èÍÊ×èͤÇÒÁ´éÇ àªè¹ modDataBase.bas à»ç¹âÁ´ÙÅ·Õèà¡ÕèÂÇ¢éͧ¡Ñº¡ÒõԴµè͡Ѻ°Ò¹¢éÍÁÙÅ à»ç¹µé¹
 ¨Ò¡àÁ¹ÙàÅ×Í¡ Insert --> Module (ËÅѧ¨Ò¡¹Ñ鹡çãÊèâ¤é´µèÒ§æÅ§ä»)
 ¡Òúѹ·Ö¡ä¿Åì Module àÍÒäÇéàÃÕ¡ãªé§Ò¹ã¹ÀÒÂËÅѧ ËÃ×Í ã¹â»ÃਤÍ×è¹æµèÍä»ä´éÍÕ¡
 ¡ÒõÑ駪×èÍä¿Åì ¡ç¤ÇõÑé§ãËéÊ×èͤÇÒÁËÁÒÂã¹§Ò¹¹Ñ鹿´éǹèФÃѺ
VBA ÊÓËÃѺ¡ÒÃàª×èÍÁµèÍä¿Åì°Ò¹¢éÍÁÙÅ Access â´Â¡Òúѹ·Ö¡à»ç¹ Module ÅÍ¡¨Ò¡â¤é´¢Í§ Visual Basic 6 ÁÒ·Ñé§ÍÑźÑéÁàÅÂÅèÐ ... ¤Ô¡ææææ
' ¡Ó˹´ãËéµéͧ»ÃСÒȵÑÇá»Ã áÅÐ ª¹Ô´µÑÇá»Ã¡è͹ãªé§Ò¹àÊÁÍ
Option Explicit
' Global à»ç¹¡ÒûÃСÒȵÑÇá»Ã·ÕèÁͧàËç¹ä´é·Ñé§ËÁ´ã¹áµèÅÐâ»Ãਤ
' µÑÇá»Ãàª×èÍÁµèÍä¿Åì°Ò¹¢éÍÁÙÅ MS Access
Global ConnDB As New ADODB.Connection
' ãªé RecordSet à¾×è͵Դµè͡ѺµÒÃÒ§¢éÍÁÙÅ (Table)
Global RS As New ADODB.Recordset
' ¡ÒÃÊÃéÒ§ Query ËÃ×Í SQL Statement à¾×è͵Դµè͡ѺµÒÃÒ§¢éÍÁÙÅ
Global Statement As String
' ËÒ¡à¢éÒÊÙèÃкºä´é¡ç¨Ðà¡çºª×èͼÙéãªé§Ò¹àÍÒäÇé (ËÃ×ÍÍ×è¹æ)
' ÍÒ·Ô àªè¹ Çѹ àÇÅÒà¢éÒÊÙèÃкº µÑÇá»Ãà¡çº¤Ðá¹¹·ÓẺ·´Êͺ ÍÐäûÃÐÁÒ³¹ÕéáËÅФÃѺ
Global CompleteName As String
' ######################################################
' ¡ÒÃàª×èÍÁµèÍä¿Åì°Ò¹¢éÍÁÙÅ MS Access
' ######################################################
Sub OpenDataBase()
On Error GoTo ErrorHandler
Dim DB_File As String
' ËÒµÓáË¹è§ Path »Ñ¨¨ØºÑ¹¢Í§ä¿Åì PowerPoint
' àªè¹ C:\CAI\PowerPointDB
DB_File = Application.ActivePresentation.Path
If Right$(DB_File, 1) <> "\" Then DB_File = DB_File & "\"
' áÅéǵÒÁ´éǪ×èÍä¿Åì°Ò¹¢éÍÁÙÅ MS Access
' àªè¹ C:\CAI\PowerPointDB\UserLog.MDB
DB_File = DB_File & "UserLog.MDB"
' àª×èÍÁµèÍä¿Åì°Ò¹¢éÍÁÙÅ MS Access
Set ConnDB = New ADODB.Connection
ConnDB.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & DB_File & ";" & _
"Persist Security Info=False"
ConnDB.Open
Exit Sub
ErrorHandler:
' ¡Òôѡ Error ·ÕèÍÒ¨¨Ðà¡Ô´¢Öé¹ã¹¡ÒÃàª×èÍÁµèÍä¿Åì¢éÍÁÙÅ
MsgBox "Error : " & Err.Number & " " & Err.Description
End
End Sub
' ######################################################
' »Ô´¡ÒÃàª×èÍÁµèÍä¿Åì°Ò¹¢éÍÁÙÅ MS Access
' ######################################################
Sub CloseDataBase()
' µÃǨÊͺÇèÒÁÕ¡ÒÃàª×èÍÁâ§ - Connect ¢éÍÁÙÅËÃ×ÍäÁè
If ConnDB.State = adStateOpen Then
ConnDB.Close
Set ConnDB = Nothing
End If
End Sub
|

VBA ÊÓËÃѺ Slide1 «Öè§ÍÒ¨¨Ðà»ç¹¡ÒÃ͸ԺÒ¡ÒÃà¢éÒãªé§Ò¹ãËé¡Ñº Users ´éÇÂ
' ¡Ó˹´ãËéµéͧ»ÃСÒȵÑÇá»Ã áÅÐ ª¹Ô´µÑÇá»Ã¡è͹ãªé§Ò¹àÊÁÍ
Option Explicit
' ######################################################
' à¢éÒÊÙè˹éÒ¨Í Slide 㹡Òûé͹¢éÍÁÙÅ¡ÒÃà¢éÒÊÙèÃкº
' ######################################################
Private Sub cmdOpen_Click()
' à»Ô´¡ÒÃàª×èÍÁµè͡Ѻä¿Åì°Ò¹¢éÍÁÙÅ MS Access
Call OpenDataBase
' à¤ÅÕÂÃì¢éÍÁÙÅà´ÔÁ
Slide2.txtUserID.Text = ""
Slide2.txtPassword.Text = ""
' àÃÕ¡˹éÒ Slide ¢Í§¡Òà Login ¢Öé¹ÁÒáÊ´§¼Å
ActivePresentation.SlideShowWindow.View.GotoSlide (2)
End Sub
' ######################################################
' ¨º¡Ò÷ӧҹ »Ô´ PowerPoint
' ######################################################
Private Sub cmdExit_Click()
' ÍéÒ§ÍÔ§ª×èÍä¿Åì PowerPoint
With Application.Presentations("PowerPoint-Login.ppt")
' ÊÑ觺ѹ·Ö¡ (Save) ¡è͹ÍÍ¡
.Saved = True
.Close
End With
End Sub
|
 ˹éҨͧ͢¡ÒÃÍ͡Ẻ ËÃ×Í Design Time
 µÑÇÍÂèÒ§ UserID/Password ... admin/admin ËÃ×Í student/student
 àÁ×èÍÊÒÁÒö Login à¢éÒÊÙèÃкºàÃÕºÃéÍ ¡ç¨ÐÊÒÁÒö¼èÒ¹à¢éÒä»Âѧ Slide µèÍä»ä´é
VBA ÊÓËÃѺ Slide2 ·ÕèÍÂÙèã¹â»Ãá¡ÃÁ PowerPoint
Option Explicit
' ######################################################
' àÃÔèÁµé¹¡Ãкǹ¡ÒõÃǨÊͺÃÒª×èͼÙéãªé áÅÐ ÃËÑʼèÒ¹
' â´Â¨ÐàÃÔèÁ¡Òäé¹ËÒÃÒª×èÍ User à¢éÒÁÒ¡è͹ áÅéǤè͵ÃǨÊͺÃËÑʼèÒ¹·ÕËÅѧ
' à¾ÃÒкҧ¤ÃÑé§ÍÒ¨¨ÐÁÕ¡ÒÃà¢éÒÃËÑÊ (Encrypt) ÃËÑʼèÒ¹àÍÒäÇéÍÕ¡ªÑé¹Ë¹Öè§
' ######################################################
Private Sub cmdOK_Click()
' µÑÇá»Ãà¡çº¤èÒÃËÑʼèÒ¹¨Ò¡µÒÃÒ§¢éÍÁÙÅ
Dim strPass As String
' µÃǨÊͺ¤èÒÇèÒ§ËÃ×ÍäÁè ... ËÒ¡ãªèãËé¡ÅѺ任é͹ª×èͼÙéãªé ËÃ×Í ÃËÑʼèÒ¹ãËÁè
If Trim(txtUserID.Text) = "" Or Len(Trim(txtUserID.Text)) = 0 Then
MsgBox "¡Ãسһé͹ª×èͼÙéãªéãËéàÃÕºÃéÍ¡è͹´éÇÂ.", vbOKOnly + vbExclamation, "ÃÒ§ҹʶҹÐ"
' ÍÍ¡¨Ò¡â»Ãá¡ÃÁÂèÍÂä»àÅÂ
Exit Sub
ElseIf Trim(txtPassword.Text) = "" Or Len(Trim(txtPassword.Text)) = 0 Then
MsgBox "¡Ãسһé͹ÃËÑʼèÒ¹ãËéàÃÕºÃéÍ¡è͹´éÇÂ.", vbOKOnly + vbExclamation, "ÃÒ§ҹʶҹÐ"
' ÍÍ¡¨Ò¡â»Ãá¡ÃÁÂèÍÂä»àÅÂ
Exit Sub
End If
' àÃÔèÁµÃǨÊͺª×èͼÙéãªé§Ò¹¡è͹ÇèÒÁÕã¹ÃкºËÃ×ÍäÁè
' ¡ÒáÓ˹´ Set RS = New Recordset ËÁÒ¶֧¡ÒûԴ RecordSet à´ÔÁŧ (¡Ã³Õà»Ô´¤éÒ§äÇé)
Set RS = New Recordset
Statement = "SELECT * FROM tblUser WHERE UserID = " & "'" & Trim(txtUserID) & "'"
RS.CursorLocation = adUseClient
RS.Open Statement, ConnDB, adOpenForwardOnly, adLockReadOnly, adCmdText
' ¡ÒÃãªé RecordCount ä´é àÃÒµéͧµÑé§¡ÒÃÍèҹẺ RS.CursorLocation = adUseClient
If RS.RecordCount > 0 Then
strPass = "" & RS("Password")
' äÁ辺¢éÍÁÙÅãËé¡ÅѺä»á¡éä¢ãËÁè
Else
MsgBox "ª×èͼÙéãªé§Ò¹äÁè¶Ù¡µéͧ ¡ÃسÒÅͧãËÁèÍÕ¡¤ÃÑé§.", vbOKOnly + vbExclamation, "ÃÒ§ҹʶҹÐ"
RS.Close: Set RS = Nothing
Exit Sub
End If
' àÁ×èͪ×èͼÙéãªé¶Ù¡µéͧáÅéÇ ¡ç仵ÃǨÊͺÃËÑʼèÒ¹ã¹ÅӴѺµèÍä»
' µÃǨÊͺÃËÑʼèÒ¹¢Í§¼Ùéãªé§Ò¹¡è͹Çèҵç¡Ñ¹¡Ñºã¹ÃкºËÃ×ÍäÁè â´Â»ÃѺµÑÇÍÑ¡¢ÃзءµÑÇãËéà»ç¹µÑÇàÅç¡ (LCase)
If LCase(txtPassword.Text) <> LCase(strPass) Then
MsgBox "ÃËÑʼèÒ¹äÁè¶Ù¡µéͧ ¡ÃسÒÅͧãËÁèÍÕ¡¤ÃÑé§.", vbOKOnly + vbExclamation, "ÃÒ§ҹʶҹÐ"
RS.Close: Set RS = Nothing
Exit Sub
End If
' á¨é§¡ÒÃà¢éÒÊÙèÃкº
MsgBox "ÂÔ¹´Õµé͹ÃѺ¤Ø³ " & RS("CompleteName") & " à¢éÒÊÙèÃкº.", _
vbOKOnly + vbInformation, "à¢éÒÊÙèÃкºàÃÕºÃéÍÂ"
' ¡ÒÃà¡çº¤èÒµÑÇá»Ã ÅѡɳйÕé ¤×Í ¡ÒÃà¡çº¢éÍÁÙżÙéãªéàÍÒäÇéáÊ´§¼Åä´é·Ø¡æ Slide ¤ÃѺ
' ã¹·Ò§»¯ÔºÑµÔ¨ÃÔ§ àÃÒÍÒ¨¨Ðµéͧà¡çº¤èÒÍ×è¹æ·Õè¨Óà»ç¹àÍÒäÇé´éÇ àªè¹ Çѹ àÇÅÒ·Õè Login à¢éÒÁÒ
CompleteName = "" & RS("CompleteName")
' á¨é§ª×èÍä»·Õè˹éÒ Slide ¶Ñ´ä»
Slide3.lblWelcome.Caption = "ÂÔ¹´Õµé͹ÃѺ¤Ø³ " & CompleteName & " à¢éÒÊÙ躷àÃÕ¹"
' µÑ´¡ÒÃàª×èÍÁµè͵ÒÃÒ§¢éÍÁÙÅ (Table) áµèÂѧäÁèä´é»Ô´ä¿Åì°Ò¹¢éÍÁÙŹèФÃѺ
RS.Close: Set RS = Nothing
' ä»Ë¹éÒ Slide µèÍä»
ActivePresentation.SlideShowWindow.View.GotoSlide (3)
End Sub
' ######################################################
' ¨º¡Ò÷ӧҹ »Ô´ PowerPoint
' ######################################################
Private Sub cmdExit_Click()
' à¾×èͤÇÒÁ»ÅÍ´ÀÑ¢ͧä¿Åì¢éÍÁÙÅ µéͧ»Ô´¡ÒÃàª×èÍÁµèͰҹ¢éÍÁÙÅ¡è͹´éÇÂ
Call CloseDataBase
' à¤ÅÕÂÃì¢éÍÁÙÅà´ÔÁ¡è͹»Ô´ä¿Åì
Slide2.txtUserID.Text = ""
Slide2.txtPassword.Text = ""
' ÍéÒ§ÍÔ§ª×èÍä¿Åì
With Application.Presentations("PowerPoint-Login.ppt")
' ÊÑ觺ѹ·Ö¡ (Save) ¡è͹ÍÍ¡
.Saved = True
.Close
End With
End Sub
|
Conclusion: ¨ÐàËç¹ä´éÍÂèÒ§ªÑ´à¨¹ã¹áººÃÙ»¸ÃÃÁä»àÅÂÇèÒ ËÒ¡àÃÒãªéà¨éÒ PowerPoint à¾×èÍàª×èÍÁµè͡Ѻä¿Åì°Ò¹¢éÍÁÙÅä´éáÅéÇ ¡çÂèÍÁ·Õè¨ÐÊÒÁÒö¹Óä»ãªé»ÃÐ⪹ã¹ì´éÒ¹Í×è¹æä´éÍÕ¡ ÍÒ·Ôàªè¹ à¡çº¢éÍÁÙÅ¡ÒÃà¢éÒ ÍÍ¡¢Í§¼ÙéàÃÕ¹áµèÅФ¹ à¡çº¤Ðá¹¹¡Ò÷ÓẺ·´Êͺ ·Ñé§ Pre-Test/Post-Test ËÃ×ÍÍ×è¹æÍÕ¡àÂÍÐáÂÐä» à¾ÃÒТéÍÁÙÅàËÅèÒ¹ÕéàÃÒµéͧ¹Óä»ãªé㹡ÒûÃÐÁÇżŷҧʶԵԵèÍä» â´ÂÍÒÈÑ¢éÍÁÙŨҡ°Ò¹áË觤ÇÒÁà»ç¹¨ÃÔ§Âѧä§ÅèФÃѺ ... ¾Õè¹éͧ
|