PUBLIC goFormSales
goFormSales=NEWOBJECT("clsForm")
goFormSales.Show
Read Events
Close all
Clear All
RETURN
**************************************************
DEFINE CLASS clsForm AS form
AutoCenter = .T.
Caption = "Grid with calculated columns"
Width = 660
Height = 420
MinHeight = This.Height
MinWidth = This.Width
MaxWidth = This.Width
ADD OBJECT grdSales AS grid WITH ;
Left = 10, ;
Top = 36, ;
Width = 300, ;
Height = ThisForm.Height - 42, ;
TabIndex = 4, ;
ColumnCount = -1, ;
RecordSource = "csrSalesData", ;
Anchor = 15, ;
ReadOnly =.T.
PROCEDURE grdSales.Init
WITH This.Column1
.Header1.Caption = "ID"
ENDWITH
WITH This.Column2
.Header1.Caption = "Date"
ENDWITH
WITH This.Column3
.Header1.Caption = "Amount"
ENDWITH
ENDPROC
ADD OBJECT grdMonthlySales AS grid WITH ;
Left = 324, ;
Top = 36, ;
Width = 318, ;
Height = 240, ;
TabIndex = 5, ;
DeleteMark = .F., ;
RecordMark = .F., ;
ScrollBars = 0, ;
ReadOnly =.T., ;
Visible = .F.
ADD OBJECT lblDate as Label WITH ;
Left = 12, Top = 9, Caption = "Enter date :", AutoSize = .T.
ADD OBJECT txtDate as TextBox WITH ;
Left = 98, Top = 6, Width = 84, TabIndex = 1, Value = DATE()
ADD OBJECT lblSalesMonth as Label WITH ;
Left = 324, Top = 282, Caption = "Sales", Autosize = .T., FontBold = .T., Visible = .F.
ADD OBJECT cmdUndo AS CommandButton WITH ;
Left = 430, Top = 6, Height = 24, TabIndex = 3, Caption = "O-Data"
PROCEDURE cmdUndo.Click()
With ThisForm.grdSales
.Visible = .T.
.ColumnCount = -1
.Recordsource = "csrSalesData"
.Column1.Header1.Caption = "ID"
.Column2.Header1.Caption = "Date"
.Column3.Header1.Caption = "Amount"
ENDWITH
WITH ThisForm
.lblSalesMonth.Caption = ""
.grdMonthlySales.Visible = .F.
.Refresh()
ENDWITH
ENDPROC
ADD OBJECT cmdDoit AS CommandButton WITH ;
Left = 324, Top = 6, Height = 24, TabIndex = 2, Caption = "Calculate"
PROCEDURE cmdDoit.Click()
LOCAL ARRAY laYearlyAmount[1]
Select iRefMonth, cRefMonth, NVL(yMonthlyAmount, 0) ;
FROM csrMonths ;
LEFT JOIN ;
(SELECT MONTH(dSalesDate) as iMonth, SUM(ySalesAmount) as yMonthlyAmount ;
FROM csrSalesData ;
WHERE YEAR(dSalesDate) = YEAR(ThisForm.txtDate.Value) ;
GROUP BY 1 ) csrSumValues ;
ON iRefMonth = iMonth ;
ORDER BY 1 ;
INTO CURSOR csrTemp
SELECT SUM(ySalesAmount) ;
FROM csrSalesData ;
WHERE YEAR(dSalesDate) = YEAR(ThisForm.txtDate.Value) ;
INTO ARRAY laYearlyAmount
LOCATE
WITH ThisForm.grdMonthlySales
.ColumnCount = -1
.RecordSource = "csrTemp"
.SetAll("DynamicBackColor", "ICASE(MOD(iRefMonth, 2) = 1, RGB(0,255,255), RGB(0, 255, 0))", "Column")
.Visible = .T.
.Column1.Header1.Caption = "Month"
.Column2.Header1.Caption = "Month"
.Column3.Sparse = .F.
.Column3.Header1.Caption = "Monthly Sales"
.Column3.Text1.Inputmask = "999,999,999.9999"
ENDWITH
WITH ThisForm.lblSalesMonth
.Caption = "Sales in " + ALLTRIM(STR(YEAR(ThisForm.txtDate.Value))) + " : " + TRANSFORM(NVL(laYearlyAmount, 0), "999,999,999.9999")
.Visible = .T.
ENDWITH
ENDPROC
PROCEDURE Destroy
Thisform.Release()
CLOSE ALL
Clear Events
ENDPROC
PROCEDURE Load
LOCAL lnI
CREATE CURSOR csrMonths (iRefMonth I, cRefMonth C(10))
FOR lnI = 1 TO 12
INSERT INTO csrMonths VALUES (lni, CMONTH(DATE(2000, lni, 1)))
ENDFOR
CREATE CURSOR csrSalesData (Id I AUTOINC, ;
dSalesDate D DEFAULT DATE(YEAR(DATE()), 1, 1) + RAND() * 3600, ;
ySalesAmount Y DEFAULT Rand() * $500.00)
For lnI = 1 To 7200
Append Blank
EndFor
LOCATE
ENDPROC
ENDDEFINE
*********************************************