ÍÒ¨ÒÃÂì¢Í§ÍÒ¨ÒÃÂìÊ͹ÍÒ¨ÒÃÂìÁÒ¡çãªé Crystal Report ¾ÍÍÒ¨ÒÃÂìÁÒÊ͹àÃÒ¡çãªé Crystal Report ¾ÍàÃÒÁÒà»ç¹ÍÒ¨ÒÃÂì¡çàÍÒäÍéà¨éÒ¹ÕèáËÅÐÁÒÊ͹ÅÙ¡ÈÔÉÂìµèÍä» ¾ÍÅÙ¡ÈÔÉÂ쨺ä»Ê͹ ¡çàÍÒà¨éÒ¹ÕèáËÅÐä»Ê͹µèÍÍÕ¡ (Forever) ... ¡éÒ¡¡¡¡ ÍÔ¹â·ÃẺ¡Ç¹æÅèÐÃͺ¹Õé ¡çäÁèä´éÁÕਵ¹Òä»·éÒ·ÒÂâ»Ãá¡ÃÁäÎâ« (ÂÍ´ÎÔµ) ¢Í§ Crystal Report ËÃÍ¡¤ÃѺ à¹×èͧ¨Ò¡¼ÁäÁèä´éä»ÃèÓàÃÕ¹·Ò§´éÒ¹¹Õé¡Ðã¤Ãà¢ÒÁÒ¹Õè¹Ò à¾Õ§áµèÍÂÒ¡¨Ð¹ÓàʹÍÍÕ¡á¹Ç·Ò§ ËÃ×Í ÍÕ¡·Ò§àÅ×͡˹Öè§ãËé¡Ñº¾Õè¹éͧ·Ñé§ËÅÒÂä´éÃѺÃÙé áÅÐ »ÃШѡÉìá¡èÊÒµҡѹ Áѹá»Å¡´éÇÂàËÃÍ·Õè¼Á¨Ð·ÓÍÐä÷ÕèäÁèàËÁ×͹ªÒǺéÒ¹ªÒÇàÁ×ͧà¢Ò ... àÍÔê¡ææææ ...
µÍ¹·ÕèàÃÔèÁµé¹ãªé§Ò¹ Active Report à¹Õè "ÁѹäÁè¤èÍÂÊдǡ¤ÃѺ" ¡çà¾ÃÒеÑÇÍÂèÒ§·ÕèÁÕÁÒãËé Áѹà»ç¹ DAO ·Ñé§ËÁ´ áÅÐ á¶Á¼Ù¡µÔ´¡Ñºä¿Åì°Ò¹¢éÍÁÙÅÁÒ´éÇ ËÒ¡·Óâ»Ãਤ ADO áÅéÇÁÒ¼ÊÁ¾Ñ¹¸Øì¡Ñº DAO ¹ÕèÁѹªèÒ§´Ù¡ÃÐäÃæàÊÕ¨ÃÔ§æ ... ÂÒ¡µèÍ¡ÒäǺ¤ØÁ áÅÐ ¡ÒùÓä»ãªé§Ò¹ ·ÓãËéäÁèÁÕ¤ÇÒÁÂ×´ËÂØè¹ÁÒ¡¹Ñ¡ áµè¾ÍËÅѧ¨Ò¡à¡çºµÑÇà§Õºæ äÁèÂÍÁÍ͡仡ê§àËÅéÒµÒÁ¤ÓàªÔ¢Í§ºÃôÒà¾×è͹¾éͧ¹éͧ¾Õè (Íѹ¹ÕéäÁèÃÙéÇèҾǡà¢Ò¨ÐàÊÕÂ㨠ËÃ×Í ´Õ㨡ѹá¹è) ¡çàÅÂËÒ¡ÅÇÔ¸Õ·Õè¨Ð¾ÔªÔµ (ËÑÇã¨) ÁѹãËéä´é ... ËÅѧ¨Ò¡ÅÙºæ¤ÅÓæÁѹÍÂÙèËÅÒ¤׹ ¨¹ã¹·ÕèÊØ´Áѹ¡ç·éͧ àÍê ¡çä´é¤ÓµÍºÊØ´·éÒÂÍÍ¡ÁÒ ... â¸èàÍê ¡çàÃÒäÁèà¢éÒ㨡Åä¡ ÇÔ¸Õ¡Ò÷ӧҹ áÅÐ ¡ÒäǺ¤ØÁ·Õèá·é¨ÃÔ§¢Í§Áѹàͧ¹ÕèËÇèÒ ... ¡Òä鹾ºáʧÊÇèҧ㹤ÃÑé§¹Õé ¨ÐÇèÒä»áÅéÇ·Ò§¤èÒ DataDynamics µéͧÁҢͺ¤Ø³¼ÁàÊÕ´éÇ«éÓ àËÍææææ ... ·ÐÅÖè§·ÓµÑÇÍÂèÒ§ÍÍ¡ÁÒä´é´Õ¡Çèҵ鹩ºÑº«èЧÑé¹ 55555
ËÅÑ¡¡Òâͧ Active Report : ·Ó Query ¢éÍÁÙÅ㹿ÍÃìÁ¢Í§ Visual Basic ¨Ò¡¹Ñé¹¼Ù¡ RecordSet à¢éҡѺ ADO Data Control ã¹ Active Report Designer (DSR) ¶Ñ´ÁÒã¹ Designer ¡ç¨Ð·Ó¡Òü١¿ÔÅ´ì¢éÍÁÙÅ (ADO) à¢éҡѺ TextBox Control (ËÃ×ÍÍ×è¹æ) áÅÐǹÃͺ¤èҢͧ RecordSet à¾×èÍ·Ó¡ÒÃáÊ´§¼Å¨¹¡ÃзÑè§ËÁ´¢éÍÁÙÅ ... ¨º
¢éÍá¹Ð¹Ó: ¢ÍãËéÁͧ Active Report Designer (DSR) à»ç¹àÊÁ×͹¿ÍÃìÁæË¹Ö觢ͧ MS Visual Basic
 ÅÒ¡ Control ARViewer à¾×èÍ·Ó¡ÒÃáÊ´§¼Å (Preview) ÁÒÇÒ§á»ÐäÇ麹¿ÍÃìÁ Name : ARViewerEmployeeList
 à¾ÔèÁ Designer à¢éÒÁÒ ... ¡Ã³Õ·ÕèÁÕä¿Åìà´ÔÁÍÂÙèáÅéÇ¡çãËé·Ó¡Òà Add File ... à¢éÒÁÒ
 ÊÃéÒ§¤ÇÒÁÊÑÁ¾Ñ¹¸ì¢Í§µÒÃÒ§¢éÍÁÙÅà¾×è͹ÓÁÒãªé㹡ÒÃáÊ´§¼Å
 ¿ÔÅ´ì·ÕèàÅ×Í¡ÁÒáÊ´§¼Å
ÂéÓÍÕ¡¤ÃÑé§: ¢ÍãËéÁͧ Active Report Designer (DSR) à»ç¹àÊÁ×͹¿ÍÃìÁæË¹Ö觢ͧ MS Visual Basic ¡ÒÃÍ͡ẺÃÒ§ҹ ¡çá¤è¹Ó Control µèÒ§æ ÁÒÇÒ§á»Ðŧº¹¿ÍÃìÁÃÒ§ҹ ËÃ×Í Designer ¹ÕèáËÅФÃѺ ... ¾Õè¹éͧ ËÒ¡µéͧ¡ÒÃãËé Control ¼Ù¡à¢éҡѺ¿ÔÅ´ì°Ò¹¢éÍÁÙÅ ... á¹Ð¹ÓãËéãªé TextBox Êèǹ»éÒº͡µèÒ§æ ¡çä»ãªé Label àÍÒ
 ¡ÒõÑ駤èÒ Properties Ẻ Design Time
 Unbound Control
 µÑÇÍÂèÒ§¹Õé¼ÁµÑ駤èÒ¡ÃдÒÉÃÒ§ҹẺ A4 (210 x 297 mm.) ¾ÔÁ¾ìã¹á¹ÇµÑé§ (Portrait) ´Ñ§¹Ñé¹ã¹àÇÅÒÍ͡Ẻ¨Ò¡ Designer ¨ÐµéͧŴ¢¹Ò´¤ÇÒÁ¡ÇéÒ§¢Í§¡ÃдÒÉŧ 1 Cm. ËÃ×Í 10 mm.ÃѺÃͧ¤ÃѺÇèÒàÁ×è͵͹¾ÔÁ¾ìÍÍ¡ÁÒº¹¡ÃдÒɨÃÔ§æ ¨ÐäÁèà¡Ô¹¤ÇÒÁ¡ÇéÒ§¢Í§ÁѹàÅ äÁèÇèҤس¨ÐµÑ駤èÒ¢¹Ò´¢Í§¡ÃдÒÉẺä˹¡çµÒÁ·Õ ... àª×èͷͧ¡é͹àËÍÐ
 ¡ÒõÑé§¢¹Ò´¤ÇÒÁ¡ÇéÒ§¢Í§¡ÃдÒɼԴ
 ÊÑè§ãËéâ»Ãá¡ÃÁ·Ó§Ò¹
¡ÒÃãªé§Ò¹ Active Report Áѹáºè§¡Ò÷ӧҹÍÍ¡à»ç¹ 2 Êèǹ
Êèǹááà»ç¹Êèǹ¤Çº¤ØÁ ·Õè»ÃÒ¡¯ÍÂÙ躹¿ÍÃìÁ¢Í§ MS Visual Basic
Êèǹ·ÕèÊͧ ¨Ðà»ç¹¡ÒùӢéÍÁÙÅÁÒáÊ´§¼Å ¨ÐÍÂÙè·Õè Designer ... áÅÐÁѹ¨Ð¶Ù¡Êè§ÍÍ¡ÁÒ Preview Âѧ ARViewer
â¤é´¨Ò¡¿ÍÃìÁ frmPrintEmployee ã¹ MS Visual Basic
Option Explicit
' »ÃСÒȵÑÇá»ÃẺ Object à¾×èÍÃѺ§Ò¹ä»¾ÔÁ¾ì
Dim rptPrint As Object
' µÑÇá»Ã·Õèãªéã¹ÃкءÒäé¹ËÒ ËÃ×Í ¡Ó˹´ªèǧ¡ÒþÔÁ¾ìËÃ×ÍäÁè
Dim blnSearch As Boolean
Private Sub Form_Load()
On Error GoTo ErrorHandler
Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
' àª×èÍÁµèͰҹ¢éÍÁÙÅ
Call OpenDataBase
With ARViewEmployeeList
.Zoom = 100 ' ¤èÒ % ¡ÒÃáÊ´§¼Å
' áÅÐÍ×è¹æÍÕ¡ ... àÍÒäÇéµÍ¹Ë¹éÒÅèСѹ
End With
' µÑ駤èÒà»ç¹à·ç¨à¾×èͺ觺͡ÇèÒäÁèãªè¡Òäé¹ËÒ¢éÍÁÙÅ
blnSearch = False
' Íѹ·Õè¨ÃÔ§¡è͹·Ó¡Òà Preview ¼Á¨Ð·Óà»ç¹¿Ñ§¤ìªÑè¹á·¹àÍÒ àªè¹ PreviewReport(False)
' àÇÅÒ»ÃСÒÈ㹿ѧ¤ìªÑè¹ ¡ç¨Ð»ÃСÒÈẺ¹Õé ... Function PreviewReport(blnSearch As Boolean)
' à¾ÃÒÐÊÑè§áºº¹ÕéÁѹ§èÒ áÅÐ Êдǡ¡ÇèÒàÂÍФÃѺ
ExitProc:
Exit Sub
ErrorHandler:
MsgBox "Error : " & Err.Number & vbCrLf & Err.Description, vbOKOnly + vbExclamation, "ÃÒ§ҹ¤ÇÒÁ¼Ô´¾ÅÒ´"
Resume ExitProc
End Sub
|
' à¡Ô´à˵ءÒó존»ØèÁ Preview ËÃ×Í cmdPreview_Click
Private Sub cmdPreview_Click()
Set RS = New ADODB.Recordset
' ãËéáÊ´§¼Å·Ñé§ËÁ´¹èÐÁѹ¹Ò¹ ... ¨ÃÔ§æáÅéǵéͧàÅ×͡੾ÒÐÃÒ¡Ò÷Õèµéͧ¡ÒÃÁÒ¡¡ÇèÒ
' ¡Òäé¹ËÒ ËÃ×Í ¡Ó˹´ªèǧ¢éÍÁÙÅ
' Íѹ¹Õé¾Õè¹éͧµéͧÅͧä»ãÊèäÍà´Õ¢ͧµÑÇàͧà¢éÒä»´éÇÂÅèСѹ¤ÃѺ
If blnSearch Then
Statement = "SELECT tblEmployee.EmployeePK, tblEmployee.EmployeeID, tblEmployee.EmployeeName, " & _
" tblEmployee.DateStart, tblPosition.PositionName, tblDepartment.DepartmentName " & _
" FROM (tblPosition INNER JOIN tblEmployee ON tblPosition.PositionPK = " & _
" tblEmployee.PositionFK) INNER JOIN " & _
" tblDepartment ON tblEmployee.DepartmentFK = tblDepartment.DepartmentPK " '& _
" [EmployeeID] " & " Like '%" & Trim(txtSearch.Text) & "%'" & " OR " & _
" [EmployeeName] " & " Like '%" & Trim(txtSearch.Text) & "%'" & " OR " & _
" [PositionName] " & " Like '%" & Trim(txtSearch.Text) & "%'" & " OR " & _
" [DepartmentName] " & " Like '%" & Trim(txtSearch.Text) & "%'" & _
" ORDER BY EmployeeID "
' ËÃ×Í BETWEEN ...
' ãËéáÊ´§¼ÅÍÍ¡ÁÒ·Ñé§ËÁ´
Else
Statement = "SELECT tblEmployee.EmployeePK, tblEmployee.EmployeeID, tblEmployee.EmployeeName, " & _
" tblEmployee.DateStart, tblPosition.PositionName, tblDepartment.DepartmentName " & _
" FROM (tblPosition INNER JOIN tblEmployee ON tblPosition.PositionPK = " & _
" tblEmployee.PositionFK) INNER JOIN " & _
" tblDepartment ON tblEmployee.DepartmentFK = tblDepartment.DepartmentPK " & _
" ORDER BY EmployeeID "
End If
'
RS.Open Statement, ConnDB, adOpenForwardOnly, adLockReadOnly, adCmdText
' =====================================================
' ÊèǹÊÓ¤Ñ㹡Ò÷ÓÃÒ§ҹ´éÇ Active Report
' µÑ駤èÒ ËÃ×Í ¡Òü١ÃÒ§ҹà¢éҡѺ Object
Set rptPrint = New arEmployeeList ' ÁÒ¨Ò¡ª×èÍä¿ÅìÃÒ§ҹ (Designer)
' ARViewEmployeeList µÑǹÕé¤×Í ARViewer Control ·ÕèÇÒ§äÇéÍÂÙ躹¿ÍÃìÁ frmPrintEmployee
Set Me.ARViewEmployeeList.object = rptPrint
' ¼Ù¡°Ò¹¢éÍÁÙÅ (Bound Control) Ẻ Run Time à¢éҡѺ Object
' dcRptData µÑǹÕéÁѹä»ÍÂÙè·ÕèẺ¿ÍÃìÁÃÒ§ҹ¢Í§ ActiveReport (Designer) ¹èФÃѺ
Set rptPrint.dcRptData.Recordset = RS
' RecordSet µÑǹÕé¹ÕèáËÅзÕè¶Ù¡Êè§ÍÍ¡ä»Âѧ Designer â´Â dcRptData ¨Ðà»ç¹µÑÇÃѺ¤èÒ
' =====================================================
End Sub
|
â¤é´¨Ò¡ Designer ¢Í§ Active Report
' àÁ×èͼ١¤èÒµèÒ§æà¢éÒËҡѹáÅéÇ ... µèÍ仡ç¨Ð¡ÃÐâ´´ä»·Ó§Ò¹Âѧ Designer ·ÕèàÃÒÍ͡ẺàÍÒäÇé
' àÃÔèÁµé¹¡ÒõÑ駤èÒµèÒ§æ·Õè¹Õè ... àËÁ×͹¡Ñº Form_Load ã¹ MS Visual Basic ¤ÃѺ
Private Sub ActiveReport_Initialize()
' ¡ÒäǺ¤ØÁ¡Ò÷ӧҹẺ Run Time ¨ÐÁÕ»ÃÐÊÔ·¸ÔÀÒ¾·Õè´Õ¡ÇèÒ Design Time
' ¢¹Ò´¢Í§¡ÃдÒÉ
PageSettings.PaperSize = 9 ' A4
' µÑ駤èÒã¹á¹ÇµÑé§
PageSettings.Orientation = ddOPortrait
' ËÃ×Íá¹Ç¹Í¹
' PageSettings.Orientation = ddOLandscape
' ˹èÇ Twip ¹èФÃѺ ¹Ñ蹤×Í 1440 Twip = 1 ¹ÔéÇ ËÃ×Í 2.54 Cm.
' ÍÂÒ¡ä´é˹èÇÂÇѴẺä˹¡ç·ÓºÑѵÔäµÃÂÒ§¤ìËÒ¤èÒàÍÒàͧ¤ÃѺ
PageSettings.LeftMargin = 300
PageSettings.RightMargin = 300
PageSettings.BottomMargin = 300
PageSettings.TopMargin = 300
' à¤ÅÕÂÃì¤èÒ¡è͹·Ó¡ÒÃáÊ´§¼Å
txtItem.Text = ""
txtEmployeeID.Text = ""
txtName.Text = ""
txtPosition.Text = ""
txtDepartment.Text = ""
txtDateStart.Text = ""
txtDayWork.Text = ""
lblContinued.Caption = ""
End Sub
' ÃÒÂÅÐàÍÕ´µèÒ§æ¡ç¨Ð¹ÓÁÒáÊ´§ã¹ Detail ÍÂÙèáÅéÇ
Private Sub Detail_Format()
' ÍÂÒ¡ãËé¾Õè¹éͧÅͧ·´ÊͺàÍÒàͧ¤ÃѺ ÇèÒËÒ¡àÃÒäÁèãªéµÑÇá»Ã i à»ç¹ Static áÅéǼŷÕèä´éÁѹ¨Ðà»ç¹Âѧä§
'Dim i As Long
' à¡çº¤èҢͧµÑÇá»Ã i àÍÒäÇéµÅÍ´ ... ¹Ò¹æ¤ÃÑé§·Õèä´éãªéµÑÇá»ÃẺ¹Õé
Static i As Long
i = i + 1
txtItem.Text = i & "."
' dcRptData ¡ç¤×Í ADO Control ·ÕèàÃÒ¹ÓÁÒÇÒ§äÇ麹ÃÒ§ҹ¹Ñè¹áËÅÐ
' à¾Õ§áµèàÃÒ¼Ù¡°Ò¹¢éÍÁÙÅà¢éÒ (Bound Control) µÍ¹ÊÑè§ Run Time â´ÂÇÔ¸Õ·ÕèÊØ´áʹ¨Ð§èÒ´ÒÂ
' rptPrint.dcRptData.Recordset = RS 㹿ÍÃìÁ¾ÔÁ¾ì§Ò¹ (frmPrintEmployee)
' ¨Ò¡¹Ñé¹áµèÅпÔÅ´ì (¨Ò¡ Query ·ÕèÍÂÙè㹿ÍÃìÁ frmPrintEmployee) àÃÒ¡ç¹ÓÁÒ¼Ù¡à¢éҡѺ TextBox Control
' ´Ñ§¹Ñé¹ ... ÍÂèÒÅ×ÁµéͧÊÃéÒ§¤ÇÒÁÊÑÁ¾Ñ¹¸ìãËéÁѹµÃ§ ËÃ×Í ÊÍ´¤Åéͧ¡Ñ¹´éǹèТÍÃѺ
txtEmployeeID.Text = "" & Trim(dcRptData.Recordset("EmployeeID"))
txtName.Text = "" & Trim(dcRptData.Recordset("EmployeeName"))
txtPosition.Text = "" & Trim(dcRptData.Recordset("PositionName"))
txtDepartment.Text = "" & Trim(dcRptData.Recordset("DepartmentName"))
txtDateStart.Text = FormatDateTime(dcRptData.Recordset("DateStart"), vbShortDate)
' àÃÕ¡ãªé§Ò¹ Public Function CalcDate(Çѹ·ÕèàÃÔèÁ§Ò¹, Çѹ·Õè»Ñ¨¨ØºÑ¹) ... Ê觤èÒ¡ÅѺÁÒà»ç¹ String
txtDayWork.Text = "(ÍÒÂØ§Ò¹: " & CalcDate(txtDateStart.Text, Now) & ")"
' ¡Å䡢ͧÁѹµèÍä» ¤×Í ¡ÒÃǹÃͺÍÕ¡ ¨¹¡ÇèÒ¢éÍÁÙÅã¹ dcRptData ¨ÐËÁ´Å§¹Ñè¹àͧ
' ======================================================================
' ÁͧãËéªÑ´æ ¹Ñ蹡ç¤×Í ¤Ø³ÊÒÁÒö·Ó¡Òäӹdz ËÃ×Í µÑ駤èÒÊٵõèÒ§æä´é´éǵÑǤسàͧ
' â´Â¤èÒµèÒ§æ·ÕèàÃÒãªé¤Ó¹Ç³ Áѹ¨Ð¶Ù¡¹ÓÁÒáÊ´§¼Åŧ TextBox ËÃ×Í Label Control ä´éÍÂèÒ§§èÒÂÁÒ¡
' áÅзÕèÊÓ¤Ñ ... Áѹ·Ó§Ò¹áºº Real Time ¤ÃѺ¾Õè¹éͧ
' ÁÒ¶Ö§µÃ§¹Õé ... ¤Ø³¤Ô´ÇèÒ¶Ö§àÇÅÒ·Õè¨ÐÊÅÑ´ÃÑ¡à¨éÒ Crystal Report ä´éáÅéÇËÃ×ÍÂѧ ... 55555
' ======================================================================
End Sub
|
 àÅ×Í¡ãªé§Ò¹¡Òà Export ÃÒ§ҹãËéÍÂÙèã¹ÃٻẺÍ×è¹æ ... µÒÁ㨪ͺ¢Í§¾Õè¹éͧàŤÃѺ
 Êè§ÃÒ§ҹÍÍ¡à»ç¹ MS Excel ... à˹×ͤӺÃÃÂÒ¨ÃÔ§æàÅÂ
µÑÇÍÂèÒ§¢Í§¡Òà Export ä»Âѧ MS Excel
' Êè§ÍÍ¡à»ç¹ä¿Åì MS Excel ¡çÊØ´áʹ¨Ð§èÒ´Ò («èÐäÁèÁÕÅèÐ)
Private Sub cmdExportExcel_Click()
' ====================================================================
' ¡è͹ãªé§Ò¹ÍÂèÒÅ×Áä»àÅ×Í¡ Project --> References ... --> ActiveReports Excel Export Filter
' ====================================================================
Dim oEXL As ActiveReportsExcelExport.ARExportExcel
Set oEXL = New ActiveReportsExcelExport.ARExportExcel
' Êè§Í͡价Õèä¿Åì MS Excel
' ËÒ¡µéͧ¡ÒÃãËé¼Ùéãªé§Ò¹ µÑ駪×èÍä¿ÅìàÍÒàͧ ¡ç¹Ó Common Dialog Control ÁÒãªé§Ò¹
' ã¹àÇçºä«µìáËè§¹ÕéÁÕãËé¾Õè¹éͧÍÂÙèáÅéÇ ... â»Ã´àÅ×Í¡àÍÒÁÒãªé§Ò¹àͧà¶Ô´
oEXL.FileName = App.Path & "\EXCELTest.xls"
oEXL.Export rptPrint.Pages
End Sub
|
Conclusion: àËç¹ËÃ×ÍÂѧ¤ÃѺ ... ¾Õè¹éͧ ËÒ¡àÍÒà¢éÒ¨ÃÔ§æáÅéÇ ÁѹäÁèä´éÂÒ¡àÂç¹áʹà¢çàÅ ÊÓËÃѺ¡Ò÷ÓÃÒ§ҹÍÍ¡ÁÒÊÑ¡µÑǹ֧ ËÒ¡àÃÒÁÕáËÅè§¢éÍÁÙÅ (·Õè¶Ù¡µéͧ áÅÐ ¹èÒàª×èͶ×Íä´é) à¾×èͨйÓÊÔè§µèÒ§æàËÅèÒ¹Õé ÁÒà¼Âá¾Ãèä»Âѧ¼Ùé·Õè¡ÓÅѧ¨ÐàÃÕ¹ÃÙé ËÃ×Í µéͧ¡ÒþѲ¹Ò·Ñ¡ÉÐ㹡ÒÃà¢Õ¹â»Ãá¡ÃÁ ... «Í¿·ìáÇÃìä·ÂäÁèµéͧ仹͡ËÃÍ¡¤ÃѺ àÍÒá¤è¾Ñ²¹Ò ËÃ×Í ÊÃéÒ§â»Ãá¡ÃÁàÁÍÃìÃØè¹ãËÁèæ ãËé¾ÃéÍÁ áÅÐ à»ç¹ÃкºÁÒ¡¡ÇèÒ·Õèà»ç¹ÍÂÙè ... äÁè´Õ¡ÇèÒàÃÍÐ ... Ãͺ˹éÒ¨ÐÇèҡѹàÃ×èͧ¢Í§¡ÒÃ·Ó¡ÅØèÁ ËÃ×Í Group ´éÇ Designer µÑÇà´ÕÂǤÃѺ ... ¾Õè¹éͧ
|