unit U_WageList; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, DB, ADODB, cxInplaceContainer, cxDBTL, cxControls, cxTLData, ComCtrls, ToolWin, StdCtrls, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, DBClient, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ExtCtrls, cxSplitter, cxGridLevel, cxClasses, cxGridCustomView, cxGrid, cxGridCustomPopupMenu, cxGridPopupMenu, RM_Dataset, RM_System, RM_Common, RM_Class, RM_GridReport, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdFTP, ShellAPI, IniFiles, cxCheckBox, cxCalendar, cxButtonEdit, cxTextEdit, cxDBLookupComboBox, cxPC, cxDropDownEdit, Menus, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu, DateUtils; type TfrmWageList = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBClose: TToolButton; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; Panel1: TPanel; ToolButton2: TToolButton; ADOQueryMain: TADOQuery; ToolButton1: TToolButton; RM1: TRMGridReport; RMDB_Main: TRMDBDataSet; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; cxGridLevel1: TcxGridLevel; cxGridPopupMenu2: TcxGridPopupMenu; DS_HZ: TDataSource; CDS_HZ: TClientDataSet; v2Column2: TcxGridDBColumn; v2Column5: TcxGridDBColumn; Label1: TLabel; CP_Code: TEdit; Label2: TLabel; v2Column17: TcxGridDBColumn; v2Column19: TcxGridDBColumn; v2Column3: TcxGridDBColumn; v2Column7: TcxGridDBColumn; ToolButton6: TToolButton; Label5: TLabel; PopupMenu2: TPopupMenu; ToolButton4: TToolButton; v2Column8: TcxGridDBColumn; N1: TMenuItem; N2: TMenuItem; v2Column15: TcxGridDBColumn; v2Column16: TcxGridDBColumn; v2Column20: TcxGridDBColumn; v2Column21: TcxGridDBColumn; ToolButton5: TToolButton; YGName: TEdit; YGType: TEdit; v2Column1: TcxGridDBColumn; Label3: TLabel; ComboBox1: TComboBox; DateTimePicker1: TDateTimePicker; Label6: TLabel; Button1: TButton; Panel2: TPanel; dtpYear: TDateTimePicker; Label7: TLabel; cxTabControl1: TcxTabControl; v2Column4: TcxGridDBColumn; Label4: TLabel; Edit1: TEdit; Button3: TButton; Tv2Column1: TcxGridDBColumn; Label8: TLabel; isSJ: TComboBox; Tv2Column2: TcxGridDBColumn; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure C_CodeNameChange(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure v2Column4PropertiesEditValueChanged(Sender: TObject); procedure v2Column7PropertiesEditValueChanged(Sender: TObject); procedure ToolButton6Click(Sender: TObject); procedure v2Column19PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject); procedure ToolButton5Click(Sender: TObject); procedure v2Column5PropertiesEditValueChanged(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure DateTimePicker1Change(Sender: TObject); private canshu1: string; procedure InitGrid(); function SaveData(): Boolean; { Private declarations } public fkhType: string; Fmanage: string; end; var frmWageList: TfrmWageList; implementation uses U_DataLink, U_Fun, U_ZDYHelp, U_WageListInput, U_InspectionInfo, U_WorkDetail, U_JTList; {$R *.dfm} function TfrmWageList.SaveData(): Boolean; var maxId, CRID, FXHNOPZ, FXHNO: string; begin Result := False; try if Trim(CDS_HZ.fieldbyname('GZID').AsString) = '' then begin if GetLSNo(ADOQueryCmd, maxId, 'GZ', 'DCGMoney', 4, 1) = False then begin Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; end else begin maxId := Trim(CDS_HZ.fieldbyname('GZID').AsString); end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from DCGMoney where GZID=' + Quotedstr(Trim(maxId))); Open; end; with ADOQueryCmd do begin if Trim(CDS_HZ.fieldbyname('GZID').AsString) = '' then begin Append; FieldByName('GZID').Value := maxId; FieldByName('Filler').Value := Trim(DName); FieldByName('FillTime').Value := SGetServerDateTime(ADOQueryTemp); end else begin Edit; FieldByName('Editer').Value := Trim(DName); FieldByName('EditTime').Value := SGetServerDateTime(ADOQueryTemp); end; RTSetSaveDataCDS(ADOQueryCmd, Tv2, CDS_HZ, 'DCGMoney', 0); Post; end; with CDS_HZ do begin Edit; FieldByName('GZID').Value := Trim(maxId); Post; end; Result := True; except Result := Result; end; end; procedure TfrmWageList.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered := False; Close; SQL.Clear; sql.Add(' select * from DCGMoney '); if cxTabControl1.TabIndex = 12 then begin sql.Add(' where year(GZDate)= ' + quotedstr(trim(FormatDateTime('yyyy', dtpYear.DateTime)))); DateTimePicker1.DateTime := dtpYear.DateTime; end else begin if cxTabControl1.TabIndex < 9 then begin sql.Add(' where GZDate= ' + quotedstr(trim(FormatDateTime('yyyy-', dtpYear.DateTime)) + '0' + inttostr(cxTabControl1.TabIndex + 1))); DateTimePicker1.DateTime := StrToDate(trim(FormatDateTime('yyyy-', dtpYear.DateTime)) + '0' + inttostr(cxTabControl1.TabIndex + 1) + '-01'); end else begin sql.Add(' where GZDate= ' + quotedstr(trim(FormatDateTime('yyyy-', dtpYear.DateTime)) + inttostr(cxTabControl1.TabIndex + 1))); DateTimePicker1.DateTime := StrToDate(trim(FormatDateTime('yyyy-', dtpYear.DateTime)) + inttostr(cxTabControl1.TabIndex + 1) + '-01'); end; end; // sql.Add(' and isnull(GZType,''产品'') <>''员工'' '); // ShowMessage(SQL.Text); // sql.Add(' where GZDate>= ' + quotedstr(trim(FormatDateTime('yyyy-MM-dd', Begdate.DateTime)))); // sql.Add(' and GZDate<' + quotedstr(trim(FormatDateTime('yyyy-MM-dd', enddate.DateTime + 1)))); Open; end; SCreateCDS20(ADOQueryMain, CDS_HZ); SInitCDSData20(ADOQueryMain, CDS_HZ); CDS_HZ.Last; finally ADOQueryMain.EnableControls; end; end; procedure TfrmWageList.FormDestroy(Sender: TObject); begin frmWageList := nil; end; procedure TfrmWageList.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TfrmWageList.TBCloseClick(Sender: TObject); begin WriteCxGrid('客户资料FM2', Tv2, '客户自定义'); Close; end; procedure TfrmWageList.FormShow(Sender: TObject); begin ReadCxGrid('客户资料FM2', Tv2, '客户自定义'); InitGrid(); end; procedure TfrmWageList.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmWageList.ToolButton2Click(Sender: TObject); begin if ADOQueryMain.Active then begin SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS20(ADOQueryMain, CDS_HZ); SInitCDSData20(ADOQueryMain, CDS_HZ); end; end; procedure TfrmWageList.C_CodeNameChange(Sender: TObject); begin ToolButton2.Click; end; procedure TfrmWageList.ToolButton1Click(Sender: TObject); begin if ADOQueryMain.IsEmpty then Exit; TcxGridToExcel(self.Caption, cxgrid2); // SelExportData(Tv2,ADOQueryMain,'客户资料列表'); end; procedure TfrmWageList.FormCreate(Sender: TObject); begin dtpYear.DateTime := SGetServerDate10(ADOQueryTemp); DateTimePicker1.DateTime := SGetServerDate10(ADOQueryTemp); canshu1 := Trim(DParameters1); end; procedure TfrmWageList.v2Column4PropertiesEditValueChanged(Sender: TObject); var FFieldName, mvalue: string; begin mvalue := TcxTextEdit(Sender).EditingText; FFieldName := Trim(Tv2.Controller.FocusedColumn.DataBinding.FilterFieldName); with CDS_HZ do begin Edit; FieldByName(FFieldName).Value := mvalue; Post; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('update DCGMoney set GZMoney=' + mvalue); sql.Add(' where GZID=' + trim(Self.CDS_HZ.FieldByName('GZID').AsString)); EXECSQL; end; tv2.Controller.EditingController.ShowEdit(); end; procedure TfrmWageList.v2Column7PropertiesEditValueChanged(Sender: TObject); var FFieldName, mvalue: string; begin mvalue := TcxTextEdit(Sender).EditingText; FFieldName := Trim(Tv2.Controller.FocusedColumn.DataBinding.FilterFieldName); with CDS_HZ do begin Edit; FieldByName(FFieldName).Value := mvalue; Post; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('update DCGMoney set ' + FFieldName + '=' + QuotedStr(Trim(mvalue))); sql.Add(' where GZID=' + trim(Self.CDS_HZ.FieldByName('GZID').AsString)); EXECSQL; end; tv2.Controller.EditingController.ShowEdit(); end; procedure TfrmWageList.ToolButton6Click(Sender: TObject); begin with Self.CDS_HZ do begin Append; FieldByName('GZDate').Value := SGetServerDate(ADOQueryTemp); Post; end; end; procedure TfrmWageList.v2Column19PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'SCPerson'; flagname := '挡车工'; fnote := True; V1Name.Caption := '工号'; V1Note.Caption := '姓名'; // V1Note1.Caption := '班组'; // fnote1 := True; TBAdd.Visible := False; TBDel.Visible := False; TBEdit.Visible := False; TBSave.Visible := False; if ShowModal = 1 then begin with CDS_HZ do begin Edit; FieldByName('DName').Value := Trim(ClientDataSet1.FieldByName('ZDYName').AsString); Post; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('update DCGMoney set DName=' + QuotedStr(Trim(ClientDataSet1.FieldByName('ZDYName').AsString))); sql.Add(' where GZID=' + trim(Self.CDS_HZ.FieldByName('GZID').AsString)); EXECSQL; end; tv2.Controller.EditingController.ShowEdit(); end; end; finally frmZDYHelp.free; end; end; procedure TfrmWageList.N1Click(Sender: TObject); begin SelOKNo(CDS_HZ, True); end; procedure TfrmWageList.N2Click(Sender: TObject); begin SelOKNo(CDS_HZ, false); end; procedure TfrmWageList.ToolButton4Click(Sender: TObject); begin try CDS_HZ.DisableControls; ADOQueryCmd.Connection.BeginTrans; with CDS_HZ do begin while CDS_HZ.Locate('SSel', True, []) do begin if Trim(CDS_HZ.fieldbyname('GZID').AsString) <> '' then begin with Self.ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete DCGMoney where GZID=' + quotedstr(Trim(CDS_HZ.fieldbyname('GZID').AsString))); ExecSQL; end; end; CDS_HZ.Delete; end; end; ADOQueryCmd.Connection.CommitTrans; CDS_HZ.EnableControls; except ADOQueryCmd.Connection.RollbackTrans; CDS_HZ.EnableControls; application.MessageBox('数据生成失败!', '提示信息', 0); end; end; procedure TfrmWageList.ToolButton5Click(Sender: TObject); begin if CDS_HZ.IsEmpty then Exit; ToolBar1.SetFocus; if not CDS_HZ.Locate('SSel', True, []) then begin Application.MessageBox('请选择数据!', '提示', 0); Exit; end; try ADOQueryCmd.Connection.BeginTrans; CDS_HZ.DisableControls; with CDS_HZ do begin while CDS_HZ.Locate('SSel', True, []) do begin if not SaveData() then begin CDS_HZ.EnableControls; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!', '提示', 0); Exit; end; with CDS_HZ do begin Edit; FieldByName('SSel').Value := False; Post; end; Next; end; end; CDS_HZ.EnableControls; ADOQueryCmd.Connection.CommitTrans; Application.MessageBox('保存成功!', '提示', 0); except CDS_HZ.EnableControls; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!', '提示', 0); end; end; procedure TfrmWageList.v2Column5PropertiesEditValueChanged(Sender: TObject); var mvalue, FFieldName: string; FGZQty, FGZPrice, FCLMoney, FJLMoney, FCFMoney, FGZMoney: Double; begin mvalue := TcxTextEdit(Sender).EditingText; FFieldName := Trim(Tv2.Controller.FocusedColumn.DataBinding.FilterFieldName); with CDS_HZ do begin Edit; FieldByName(FFieldName).Value := Trim(mvalue); Post; FGZQty := CDS_HZ.fieldbyname('GZQty').AsFloat; FGZPrice := CDS_HZ.fieldbyname('GZPrice').AsFloat; FJLMoney := CDS_HZ.fieldbyname('JLMoney').AsFloat; FCFMoney := CDS_HZ.fieldbyname('CFMoney').AsFloat; FCLMoney := RoundFloat(FGZQty * FGZPrice, 2); FGZMoney := FCLMoney + FJLMoney - FCFMoney; end; with CDS_HZ do begin Edit; FieldByName('GZMoney').Value := FGZMoney; FieldByName('CLMoney').Value := FCLMoney; Post; end; tv2.Controller.EditingController.ShowEdit(); end; procedure TfrmWageList.cxTabControl1Change(Sender: TObject); begin InitGrid(); end; procedure TfrmWageList.Button1Click(Sender: TObject); begin with ADOQueryMain do begin Filtered := False; Close; SQL.Clear; sql.Add(' exec P_GZ_All '); sql.Add(' @FGZDate= ' + quotedstr(trim(FormatDateTime('yyyy-MM', DateTimePicker1.DateTime)))); sql.Add(' ,@GZType=' + quotedstr(trim(ComboBox1.Text))); Open; end; SCreateCDS20(ADOQueryMain, CDS_HZ); SInitCDSData20(ADOQueryMain, CDS_HZ); end; procedure TfrmWageList.Button3Click(Sender: TObject); var mvalue, FFieldName: string; FGZQty, FGZPrice, FCLMoney, FJLMoney, FCFMoney, FGZMoney: Double; begin FGZPrice := StrToFloatDef(Edit1.Text, 0); with CDS_HZ do begin First; while not Eof do begin if CDS_HZ.fieldbyname('SSel').AsBoolean then begin FGZQty := CDS_HZ.fieldbyname('GZQty').AsFloat; FJLMoney := CDS_HZ.fieldbyname('JLMoney').AsFloat; FCFMoney := CDS_HZ.fieldbyname('CFMoney').AsFloat; FCLMoney := RoundFloat(FGZQty * FGZPrice, 2); FGZMoney := FCLMoney + FJLMoney - FCFMoney; with CDS_HZ do begin Edit; FieldByName('GZPrice').Value := FGZPrice; FieldByName('GZMoney').Value := FGZMoney; FieldByName('CLMoney').Value := FCLMoney; Post; end; end; Next; end; end; tv2.Controller.EditingController.ShowEdit(); end; procedure TfrmWageList.DateTimePicker1Change(Sender: TObject); begin dtpYear.DateTime := DateTimePicker1.DateTime; cxTabControl1.TabIndex := MonthOf(dtpYear.DateTime) - 1; end; end.