}
procedure TGzxFzjsDlg.AddSumExpClick(Sender: TObject);
begin
with SUMExpressionDlg do
begin
if ShowModal = mrOK then
begin
DataFrm.Tgzxjs.Edit;
case CalStyle.ItemIndex of {CalStyle是包括上述5种合计表达式的选项控件}
0: //即SUM
begin
GzxFzjsDlg.Expression.Text := GzxFzjsDlg.Expression.Text + ''(SELECT SUM(''+SumExpression.Text+'') FROM 工资表 WHERE ''+DataFrm.TgzxjsSubQuery.AsString+'')'';
DataFrm.TgzxjsSingleExp.AsString := DataFrm.TgzxjsSingleExp.AsString + ''SUM(''+SumExpression.Text+'')'';
end;
1: //即AVG
begin
GzxFzjsDlg.Expression.Text := GzxFzjsDlg.Expression.Text + ''(SELECT AVG(''+SumExpression.Text+'') FROM 工资表 WHERE ''+DataFrm.TgzxjsSubQuery.AsString+'')'';
DataFrm.TgzxjsSingleExp.AsString := DataFrm.TgzxjsSingleExp.AsString + ''AVG(''+SumExpression.Text+'')'';
end;
2: //即MAX
begin
GzxFzjsDlg.Expression.Text := GzxFzjsDlg.Expression.Text + ''(SELECT MAX(''+SumExpression.Text+'') FROM 工资表 WHERE ''+DataFrm.TgzxjsSubQuery.AsString+'')'';
DataFrm.TgzxjsSingleExp.AsString := DataFrm.TgzxjsSingleExp.AsString + ''MAX(''+SumExpression.Text+'')'';
end;
3: //即MIN
begin
GzxFzjsDlg.Expression.Text := GzxFzjsDlg.Expression.Text + ''(SELECT MIN(''+SumExpression.Text+'') FROM 工资表 WHERE ''+DataFrm.TgzxjsSubQuery.AsString+'')'';
DataFrm.TgzxjsSingleExp.AsString := DataFrm.TgzxjsSingleExp.AsString + ''MIN(''+SumExpression.Text+'')'';
end;
4: //即COUNT
begin
GzxFzjsDlg.Expression.Text := GzxFzjsDlg.Expression.Text + ''(SELECT COUNT(''+SumExpression.Text+'') FROM 工资表 WHERE ''+DataFrm.TgzxjsSubQuery.AsString+'')'';
DataFrm.TgzxjsSingleExp.AsString := DataFrm.TgzxjsSingleExp.AsString + ''COUNT(''+SumExpression.Text+'')'';
end;
end;
DataFrm.Tgzxjs.Post;
end;
end;
end;
{下面过程通过响应双击鼠标将对应的算术运算符+、-、X、/、(、)加到计算表
达式 }
procedure TGzxFzjsDlg.AddOperationalCharacterDblClick(Sender: TObject);
begin
DataFrm.Tgzxjs.Edit;
GzxFzjsDlg.Expression.Text := GzxFzjsDlg.Expression.Text + ListBox2.Items[ListBox2.ItemIndex];
DataFrm.TgzxjsSingleExp.AsString := DataFrm.TgzxjsSingleExp.AsString + ListBox2.Items[ListBox2.ItemIndex];
DataFrm.Tgzxjs.Post;
end;
{下面的过程是在用户按下“执行当前工资项计算”按钮后执行的,它的任务是对话
框显示的被定义工资项,对工资表中的该字段根据条件表达式和计算表达式进行重新计
算}
procedure TGzxFzjsDlg.OKBtnClick(Sender: TObject);
begin
if DataFrm.Sgzxjs.State IN [dsEdit,dsInsert] then
ShowMessage(''记录正在编辑或插入状态,现退回!'')
else
begin
if Data.Confirm(''真的需要根据条件和表达式对工资项 ''+DataFrm.TgzxjsGzx.Value+'' 执行工资项赋值吗?'') then
begin
MyPromptFrm.Show; //显示进度和
图片 MyPromptFrm.Update;
try
DataFrm.DynamicQuery.Close;
DataFrm.DynamicQuery.SQL.Clear;
DataFrm.DynamicQuery.SQL.Add(''UPDATE 工资表 SET ''+DataFrm.Tgzxj