´ÒǹìâËÅ´â»Ãá¡ÃÁ RSS Reader ä´é·Õè¹Õè ...

|
|
|
Visitors - Session views |       
7 ¸Ñ¹ÇÒ¤Á ¾.È.2549 109 Users On-Line. |
|
Visitors - Page views |        1 ¡ØÁÀҾѹ¸ì ¾.È.2551 |
|
|
|
 |
|
Visual Basic 6.0 ¡Ñº¡Ò÷ÓÃÒ§ҹ´éÇ Active Report µÍ¹·Õè 2 |
Category »
VB 6/VB.Net â´Â : Webmaster àÁ×èÍ 12/2/2551 12:00:00 | (ÍèÒ¹ : 37936) | º·¤ÇÒÁÊÓËÃѺµÍ¹¹Õé ¼Á¨ÐÁÒ¹ÓàʹÍá¹Ç·Ò§ áÅÐ ¡ÅÇÔ¸Õ ã¹¡ÒäǺ¤ØÁ¡ÒÃáÊ´§¼Å¢Í§ÃÒ§ҹ â´Âãªéâ¤é´¨ÃÔ§æ äÁèãªéµÑÇ»ÃСͺ ËÃ×Í µÑÇáÊ´§á·¹áµèÍÂèÒ§ã´ ... àÍÔê¡ææææ ... ¡Ò÷ÓÃÒ§ҹ·ÕèÁÕÃٻẺ·Õè¤ÅéÒ¤ÅÖ§¡Ñ¹¹Ñé¹ àÃÒäÁè¨Óà»ç¹µéͧÁÒ¹Ñè§Í͡Ẻ¨Ò¡ Designer á¡à»ç¹ä¿Åìæä»¹èФÃѺ áµèàÃÒÊÒÁÒö¡Ó˹´µÒÁ¤ÇÒÁµéͧ¡Òà (¢Í§àÃÒ ËÃ×Í ¼ÙéÇèÒ¨éÒ§) â´Â¡ÒÃÊÑè§â»Ãá¡ÃÁãËé·Ó§Ò¹ã¹ÅѡɳТͧ Run-Time ¹Ñ蹤×Í ¨ÐÁͧàËç¹¼ÅÅѾ¸ì¡çµèÍàÁ×èÍÊÑè§Ãѹâ»Ãá¡ÃÁáÅéÇà·èÒ¹Ñé¹ äÍé»ÃÐàÀ·ÁÒ¼Ù¡¤Í¹â·ÃŵԴµÒµÑǡѺ¿ÔÅ´ì¢Í§°Ò¹¢éÍÁÙŹÑé¹ (Design Time) â»Ãá¡ÃÁ¢Í§àÃÒ¡ç¨Ð¢Ò´¤ÇÒÁÂ×´ËÂØè¹ä»àÂÍÐàÅ·Õà´ÕÂÇ º·¤ÇÒÁ¹Õé¼ÁàÅÂÃǺÂÍ´ËÅÒÂÊÔè§ËÅÒÂÍÂèÒ§à¢éÒÁÒ¹ÓàʹÍäÇéãËé¡Ñº§Ò¹¹Õéä»àÅ áµè»ÃÐà´ç¹ËÅÑ¡æ ¡ç¤×Í ã¹àÃ×èͧ¢Í§¡ÒèѴ¡ÅØèÁ (Group) à¾×èÍá¡ÃÒ§ҹÍÍ¡à»ç¹ËÁÇ´ËÁÙèä´é â´Â¡ÒÃãªé Designer à¾Õ§µÑÇà´ÕÂÇ Íѹà´ÕÂÇ ËÃ×Í ä¿Åìà´ÕÂÇ ... áÅй͡¨Ò¡áÅéǹÕé ¾Õè¹éͧ¡ç¨Ðä´éãËéàËç¹¶Ö§¡ÒäӹdzËÒ¤èÒ·Ò§¤³ÔµÈÒʵÃì â´ÂäÁèµéͧÁÒãªéÊٵà (ËÃ×ÍãÊè»Õ¡¡Ò ¨¹Ë¹éÒ¹ÔèǤÔéÇ¢ÁÇ´ ·ÓãËéÃ͵չ¡Ò¢Öé¹Ë¹éÒâ´ÂÍѵâ¹ÁÑµÔ ... 55555) áµèÍÒÈÑ¡ÒáÓ˹´¤èÒŧ㹵ÑÇá»Ãá·¹ ... á¹è¹Í¹¤ÃѺ·Õè¼ÁÇèÒÁÒ¹Õé àÃÒãªé¡ÒÃâ¤é´µÒÁẺÊäµÅì¢Í§ Visual Basic Åéǹæ ... áÅÐÁÒ¶Ö§ ³ µÃ§¹Õé ¼ÁºÍ¡ä´éàÅÂÇèҤسÊÒÁÒö¹ÓÁѹ任ÃÐÂØ¡µìãªé§Ò¹à¾×è;ÔÁ¾ìãºàʹÍÃÒ¤Ò ËÃ×Í ãºÃÒ¡Òë×éÍ¢ÒÂä´éÍÂèÒ§äÁèÂÒ¡àÂç¹àŤÃѺ ... ¾Õè¹éͧ
Êèǹà¾ÔèÁàµÔÁ㹵͹¹Õé ¤×Í ¡ÒÃ¹Ó ComboBox ÁÒà»ç¹à§×è͹ä¢ã¹¡ÒÃàÅ×Í¡§Ò¹¾ÔÁ¾ì
¨Ò¡ Designer ãËé¤ÅÔê¡àÁÒÊì¢ÇÒ ¨Ò¡¹Ñ鹡çãËéàÅ×Í¡ Insert Group Header à¢éÒÁÒ
»ÃÒ¡¯ GroupHeader áÅÐ GroupFooter à¢éÒÁÒà»ç¹¢Í§¤Ùè¡Ñ¹àÊÁÍ ¨Ò¡µÍ¹·Õè 1 ¾Õè¹éͧµéͧÂéÒÂÊèǹËÑǢͧÃÒ§ҹà¢éÒÁÒäÇé·Õè GroupHeader ´éÇ áÅÐà¾ÔèÁÅÒàºÅ lblGroupData à¢éÒÁÒ à¾×èÍá¨é§ãËé¼Ùéãªé§Ò¹ä´éÃÙéÇèÒà»ç¹ÃÒ§ҹẺã´ÍÂÙè
Êèǹ¢Í§ GroupFooter à¾ÔèÁ TextBox (txtSumSalary) à¾×èÍ·Õè¨Ð·Ó¡ÒÃÃÇÁ¨Ó¹Ç¹à§Ô¹à´×͹¾¹Ñ¡§Ò¹
ÃÒ§ҹÃÒª×è;¹Ñ¡§Ò¹·Ñé§ËÁ´
ᡵÒÁá¼¹¡ - DepartmentName
ᡵÒÁµÓáË¹è§ - PositionName
Êèǹ¢Í§ frmPrintEmployee
Private Sub Form_Load()
On Error GoTo ErrorHandler
Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
' àª×èÍÁµèͰҹ¢éÍÁÙÅ
Call OpenDataBase
' ¼Áãªé ComboBox ÁÒà»ç¹à§×è͹ä¢ã¹¡ÒþÔÁ¾ìÃÒ§ҹ
cmbPrint.Clear
cmbPrint.AddItem " ¾ÔÁ¾ìÃÒª×è;¹Ñ¡§Ò¹·Ñé§ËÁ´"
cmbPrint.AddItem " ¾ÔÁ¾ìÃÒ§ҹµÒÁá¼¹¡"
cmbPrint.AddItem " ¾ÔÁ¾ìÃÒ§ҹµÒÁµÓá˹è§"
cmbPrint.ListIndex = 0
ExitProc:
Exit Sub
ErrorHandler:
MsgBox "Error : " & Err.Number & vbCrLf & Err.Description, vbOKOnly + vbExclamation, "ÃÒ§ҹ¤ÇÒÁ¼Ô´¾ÅÒ´"
Resume ExitProc
End Sub
Private Sub cmdPreview_Click()
Set RS = New ADODB.Recordset
' ¼Á¡µÑÇÍÂèÒ§¢Í§¡ÒÃàª×èÍÁ¤ÇÒÁÊÑÁ¾Ñ¹¸ìẺ§èÒÂæãËé¾Õè¹éͧä´éÃѺªÁ¡Ñ¹¹èФÃѺ
' Íѹ·Õè¨ÃÔ§ÍÂèÒ§¼ÅÃÇÁ¢Í§à§Ô¹à´×͹ àÃÒ¡çÊÒÁÒöãªé¡ÒÃ·Ó Group à¾×èÍËÒ¤èÒ Sum á·¹¡çä´é
' ¡çÅͧä»ÊÃÃËÒäÍà´ÕÂãÊèàÍÒàͧÅèСѹ
Statement = "SELECT tblEmployee.EmployeePK, tblEmployee.EmployeeID, " & _
" tblEmployee.EmployeeName, tblEmployee.DateStart, " & _
" tblPosition.PositionName, tblDepartment.DepartmentName, " & _
" tblEmployee.Salary " & _
" FROM (tblPosition INNER JOIN tblEmployee ON tblPosition.PositionPK = " & _
" tblEmployee.PositionFK) INNER JOIN " & _
" tblDepartment ON tblEmployee.DepartmentFK = tblDepartment.DepartmentPK "
' ¾Õè¹éͧ¤ÃѺ ... ¡ÒÃ·Ó¡ÅØèÁ ¡Ñº ¡ÒÃãªé ORDER ÁѹÁÕ¤ÇÒÁÊÑÁ¾Ñ¹¸ì¡Ñ¹¹èФÃѺ
' ËÅÒµèÍËÅÒ¤¹¡çÁÑ¡¨Ð¾ÅÒ´ÍÐäçèÒÂæáºº¹Õéä´éàÊÁÍ ... äÁèàª×èͼÁ¡çÅͧ·´Êͺ´Ùä´éàÅÂÇèÒ
' ËÒ¡¤Ø³·Ó ORDER äÁèµÃ§¡Ñº¡ÅØèÁ·Õèµéͧ¡Òà ¼ÅÅѾ¸ì¨Ðà¡Ô´ÍÐäâÖé¹ÁÒºéÒ§
Select Case cmbPrint.ListIndex
' áÊ´§¢éÍÁÙž¹Ñ¡§Ò¹·Ñé§ËÁ´
Case 0
Statement = Statement & " ORDER BY EmployeeID "
' áÊ´§ÃÒ§ҹµÒÁµÓá˹è§
Case 1
Statement = Statement & " ORDER BY DepartmentName, EmployeeID "
' áÊ´§ÃÒ§ҹµÒÁá¼¹¡
Case 2
Statement = Statement & " ORDER BY PositionName, EmployeeID "
End Select
RS.Open Statement, ConnDB, adOpenForwardOnly, adLockReadOnly, adCmdText
' ÊèǹÊÓ¤Ñ㹡Ò÷ÓÃÒ§ҹ´éÇ Active Report
' µÑ駤èÒ ËÃ×Í ¡Òü١ÃÒ§ҹà¢éҡѺ Object
Set rptPrint = New arEmployeeListGroup ' ÁÒ¨Ò¡ª×èÍä¿ÅìÃÒ§ҹ (Designer)
' ARViewEmployeeList µÑǹÕé¤×Í Control ·ÕèÇÒ§äÇéÍÂÙ躹¿ÍÃìÁ frmPrintEmployee
Set Me.ARViewEmployeeList.object = rptPrint
' ¼Ù¡°Ò¹¢éÍÁÙÅ (Bound Control) Ẻ Run Time à¢éҡѺ Object
' dcRptData µÑǹÕéÁѹä»ÍÂÙè·ÕèẺ¿ÍÃìÁ¡ÒÃáÊ´§¼Å¢Í§ ActiveReport ¹èФÃѺ
Set rptPrint.dcRptData.Recordset = RS
End Sub
|
Êèǹ¢Í§ Report Designer - arEmployeeListGroup
Option Explicit
Private bLastPage As Boolean
' »ÃСÒȵÑÇá»Ã i ãËÁè à»ÅÕè¹ÁÒà»ç¹áºº Public ÊÓËÃѺÃÒ§ҹ¹Õé
' ËÁÒ¤ÇÒÁÇèÒã¹·Ø¡æâ»Ãá¡ÃÁÂèÍ¢ͧÃÒ§ҹ¹Õéà·èÒ¹Ñé¹ ¨ÐÁͧàËç¹µÑÇá»Ã·Õè¼Á»ÃСÒÈäÇéº¹ÊØ´
' ÃÒ§ҹÍ×è¹¹èÐÁѹÁͧäÁèàËç¹ËÃÍ¡¤ÃѺ ... ¾Õè¹éͧ
Private i As Integer
Private SumSalary As Double
' àËÍææææ §§¡Ñ¹ÅèÐ«Ô ÎèÇ ... »ÃСÒȵÑÇá»Ãà»ç¹áºº Private ´Ñ¹ÁҺ͡à»ç¹ Public
' Êèǹ¹Õéà»ç¹Êèǹ¢Í§¡ÒÃÍèÒ¹¢éÍÁÙÅà¢éÒÁÒ·ÕÅÐÃÒ¡ÒÃ
' ¹Í¡¨Ò¡¹Õé GroupHeader1.GroupValue ¹ÕèáËÅÐ ¤×Í ¡ÒèѴ¡ÅØèÁÃÒ§ҹ
Private Sub ActiveReport_FetchData(eof As Boolean)
' ËÒ¡ËÁ´¢éÍÁÙÅ bLastPage ¨ÐÁÕ¤èÒà»ç¹¨ÃÔ§
bLastPage = dcRptData.Recordset.eof
If Not eof Then
' à¾ÔèÁ¨Ó¹Ç¹¡ÒùѺ¢Í§ÅӴѺ·Õè
i = i + 1
Select Case frmPrintEmployee.cmbPrint.ListIndex
Case 0 ' áÊ´§ÃÒ¡Ò÷Ñé§ËÁ´
Case 1 ' ᡵÒÁá¼¹¡
GroupHeader1.GroupValue = dcRptData.Recordset("DepartmentName")
Case 2 ' ᡵÒÁµÓá˹è§
GroupHeader1.GroupValue = dcRptData.Recordset("PositionName")
End Select
End If
End Sub
' Êèǹ¢Í§¡ÒÃ·Ó¡ÅØèÁ¢éÍÁÙÅ ·Ó¡ÒÃá¨é§¼ÙéãªéÇèÒäÍé¹ÕèÁѹ¤×ÍÃÒ§ҹÍÐäà ??????
Private Sub GroupHeader1_Format()
Select Case frmPrintEmployee.cmbPrint.ListIndex
Case 0 ' áÊ´§ÃÒ¡Ò÷Ñé§ËÁ´
lblGroupData.Caption = "ÃÒ§ҹÃÒª×è;¹Ñ¡§Ò¹·Ñé§ËÁ´:"
lblDepartment.Alignment = ddTXLeft
lblDepartment.Caption = "á¼¹¡"
Case 1 ' ᡵÒÁá¼¹¡
lblGroupData.Caption = "á¼¹¡: " & dcRptData.Recordset("DepartmentName")
' ãªé§Ò¹ Control ãË館éÁ¤èÒ â´Â¡ÒáÓ˹´ã¹¢³Ð Run-Time
lblDepartment.Alignment = ddTXRight
lblDepartment.Caption = "à§Ô¹à´×͹"
Case 2 ' ᡵÒÁµÓá˹è§
lblGroupData.Caption = "µÓá˹è§: " & dcRptData.Recordset("PositionName")
' ãªé§Ò¹ Control ãË館éÁ¤èÒ â´Â¡ÒáÓ˹´ã¹¢³Ð Run-Time
lblPosition.Caption = "á¼¹¡"
lblPosition.Alignment = ddTXLeft
lblDepartment.Caption = "à§Ô¹à´×͹"
txtDepartment.Alignment = ddTXRight
End Select
End Sub
' ÃÒÂÅÐàÍÕ´µèÒ§æ¡ç¨Ð¹ÓÁÒáÊ´§ã¹ Detail ÍÂÙèáÅéÇ
Private Sub Detail_Format()
' ¤ÃÒǹÕé¤èÒ i ¨Ðà¾ÔèÁ¤èÒ¡çÍÂÙè·Õè Group á·¹
txtItem.Text = i & "."
txtEmployeeID.Text = "" & Trim(dcRptData.Recordset("EmployeeID"))
txtName.Text = "" & Trim(dcRptData.Recordset("EmployeeName"))
txtPosition.Text = "" & Trim(dcRptData.Recordset("PositionName"))
' µÃǨÊͺà§×è͹䢢ͧ¡ÒþÔÁ¾ì
Select Case frmPrintEmployee.cmbPrint.ListIndex
Case 0
' ¾ÔÁ¾ìÃÒ§ҹÍÍ¡»¡µÔ
txtDepartment.Text = "" & Trim(dcRptData.Recordset("DepartmentName"))
Case 1
' àÍÒª×èÍá¼¹¡ä»äÇéÊèǹËÑÇÃÒ§ҹ (GroupHeader) ´Ñ§¹Ñé¹¼Á¡çàÅÂàÍÒà§Ô¹à´×͹
' ÁÒÂÑ´ãÊèäÇéã¹ÃÒª×èÍá¼¹¡á·¹ ... (ãªé§Ò¹ Control ãË館éÁ¤èÒ)
txtDepartment.Text = Format(Trim(dcRptData.Recordset("Salary")), "#,##0.00")
txtDepartment.Alignment = ddTXRight
Case 2
' Êèǹ¹Õé¼Á¡ç¹Óª×èÍá¼¹¡ÁÒãÊèäÇéµÃ§µÓá˹觫èÐ Êèǹà§Ô¹à´×͹¡çä»ãÊèäÇéã¹á¼¹¡á·¹ ... ÍÔÍÔÍÔÍÔÍÔ
txtPosition.Text = "" & Trim(dcRptData.Recordset("DepartmentName"))
txtDepartment.Text = Format(Trim(dcRptData.Recordset("Salary")), "#,##0.00")
End Select
txtDateStart.Text = FormatDateTime(dcRptData.Recordset("DateStart"), vbShortDate)
' ¼Á¶Ö§ä´éºÍ¡ÇèÒ¹ÕèáËÅТéʹբͧ Active Report à¾ÃÒÐâ¤é´Áѹà¹Õ¹æ¨Ò¡ VB à´êÐæææææ
' ·ÓãËéäÁèä»ÊѺʹ ËÃ×Í ¨´¨Ó ÊÔè§Í×è¹ã´ ... à¾ÔèÁàµÔÁ
' äÁèµéͧãªéÊٵà áµèÍÒÈѵÑÇá»Ã㹡ÒÃà¡çº¤èÒá·¹
SumSalary = SumSalary + dcRptData.Recordset("Salary")
' ¤èÒ¹Õé¨Ð¹Óä»áÊ´§µÍ¹·éÒÂÃÒ§ҹ ËÃ×Í GroupFooter ¤ÃѺ¾Õè¹éͧ
' ÊÁÁصÔÇèÒá¼¹¡¹ÕéÁÕ¾¹Ñ¡§Ò¹ 10 ¤¹ ÃÒ§ҹ (Detail) ã¹Êèǹ¹Õé¡ç¨Ð Loop ä»·Õè
' ActiveReport_FetchData(eof As Boolean) 10 Ãͺ à¾×èÍ·Ó¡ÒÃáÊ´§¼ÅÃÒ§ҹ
' «Öè§ã¹áµèÅÐÃͺ¡ç¨Ð·Ó¡Òúǡ¨Ó¹Ç¹à§Ô¹à´×͹¢Í§¾¹Ñ¡§Ò¹áµèÅФ¹äÇéã¹ SumSalary
End Sub
Private Sub GroupFooter1_Format()
' ¡Ã³Õ·ÕèãËé¾ÔÁ¾ìÃÒª×è;¹Ñ¡§Ò¹ÍÍ¡ÁÒ·Ñé§ËÁ´ ´Ñ§¹Ñé¹ ...
' ¼Á¨ÐäÁèáÊ´§¨Ó¹Ç¹à§Ô¹à´×͹ÍÍ¡ÁÒ ¡ç§èÒÂæá¤è¡Ó˹´¤ÇÒÁÊÙ§¢Í§Êèǹ¹Õéà»ç¹ 0
' âË ... ¤Ô´ä´éä§à¹Õè 55555
If frmPrintEmployee.cmbPrint.ListIndex = 0 Then GroupFooter1.Height = 0
' ¡Ã³ÕàÅ×Í¡¡Ò÷ÓÃÒ§ҹµÒÁá¼¹¡ ËÃ×Í µÓáË¹è§ ¤ÇÒÁÊÙ§¨ÐÁÕ¤èÒ»¡µÔ à·èҡѺµÍ¹ Design
' ¼ÅÃÇÁ¢Í§à§Ô¹à´×͹¡ç¨Ð»ÃÒ¡¯ÍÍ¡ÁÒ â´Â ...
' ¹Ó¤èÒ·Õèä´é¨Ò¡¡Òúǡ (Sum) ã¹ Detail ÁÒáÊ´§¼ÅµÍ¹·éÒÂÃÒ§ҹ (GroupFooter)
txtSumSalary.Text = "ÃÇÁ¨Ó¹Ç¹à§Ô¹à´×͹: " & Format(SumSalary, "#,##0.00")
' Íѹ¹Õé¨ÐÇèÒä»áÅéÇ¡çä»ãªé SQL Statement ã¹àÃ×èͧ¢Í§ Group á·¹¡çä´éà¹éÍ ... ¾Õè¹éͧ
' ¡Ã³Õ·Õèà»ç¹ Group
' àÁ×è;ÔÁ¾ì¼ÅÅѾ¸ìã¹áµèÅÐ¡ÅØèÁàÃÕºÃéÍÂáÅéÇ ¡ç·Ó¡ÒÃà¤ÅÕÂÃì¤èÒãËÁè
i = 1: SumSalary = 0
End Sub
|
Conclusion: ͹Öè§ ... ¾Õè¹éͧ·Ñé§ËÅÒ¤ÃѺ ... ÅӾѧá¤èà¾Õ§áµèä´éâ¤é´¨ÃÔ§æ¢Í§¼Á仹͹¡Í´àÅè¹æãËéÍºÍØè¹áÅéÇ ÁѹäÁèä´éªèÇ·ÓãËé¾Õè¹éͧÊÒÁÒö¾Ñ²¹Ò·Ñ¡ÉÐä´é´Õ¢Öé¹ËÃÍ¡¤ÃѺ ËÒ¡äÁè¾Ô¹Ô¨ ¾Ô¨ÒóÒäÅèàÃÕ§¡Ò÷ӧҹ áÅÐ ·Ó¤ÇÒÁà¢éÒã¨ÍÂèÒ§¶èͧá·éáÅéÇ (ãªé Trace ËÃ×Í Step Into ´éÇ¡Òá´ F8 ´Ù¤ÃѺ) Åͧ¤Ô´¨Ô¹µ¹Ò¡Òô٫ԤÃѺÇèÒ¨ÐÅͧ任ÃѺ»ÃÐÂØ¡µìãªé§Ò¹ä´éÍÂèÒ§äúéÒ§ àÍÒà»ç¹ÇèÒËÒ¡¤Ô´äÁèÍÍ¡ ¡çÅͧàÍÒ⨷Âì令ԴàÅè¹æ´Ù¤ÃѺ ... Åͧ·Ó Query ÃÒ¡ÒÃá¼¹¡ (Department) ãÊèà¢éÒä»ã¹ ComboBox à¾×èÍãËéÁѹàÅ×Í¡¾ÔÁ¾ìÃÒ¡ÒÃá¡ÍÍ¡ÁÒà»ç¹áµèÅÐá¼¹¡´Ù«Ô¤ÃѺ ... àÍéÒ !!! àÃçÇææææ ... ã¤Ã¨Ð·Óä´é¡è͹¡Ñ¹
|
|