📄 udataout.pas
字号:
unit uDataOut;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ComCtrls, ExtCtrls, Tabs, Db, DBTables, kdb2text, shlobj,
activex, FileCtrl, Spin, Grids, DBGrids;
type
TfrmDataOut = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
btnOK: TBitBtn;
BitBtn2: TBitBtn;
TabSet1: TTabSet;
Panel3: TPanel;
grpJG: TGroupBox;
chkJG_1: TCheckBox;
chkJG_2: TCheckBox;
chkJG_3: TCheckBox;
chkJG_4: TCheckBox;
chkJG_5: TCheckBox;
chkJG_6: TCheckBox;
chkJG_7: TCheckBox;
Panel4: TPanel;
Label6: TLabel;
edtPath: TEdit;
mmoMain: TMemo;
btnDir: TSpeedButton;
toCSV: TKDatasetToText;
qryMain: TQuery;
pnlDW: TPanel;
Label1: TLabel;
edtDW: TEdit;
lblDWMC: TLabel;
pnlSJ: TPanel;
Label2: TLabel;
edtYear: TSpinEdit;
edtMonth: TSpinEdit;
Label3: TLabel;
Label4: TLabel;
Label9: TLabel;
edtYear2: TSpinEdit;
Label7: TLabel;
edtMonth2: TSpinEdit;
Label8: TLabel;
procedure FormShow(Sender: TObject);
procedure TabSet1Change(Sender: TObject; NewTab: Integer;
var AllowChange: Boolean);
procedure btnDirClick(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure edtDWChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
procedure ShowStyle(TabInd: Integer);
public
{ Public declarations }
end;
var
frmDataOut: TfrmDataOut;
strlst_1, strlst_2, strlst_3, strlst_4, strlst_5: TStringList;
implementation
uses dMain, uCommon;
{$R *.DFM}
procedure TfrmDataOut.FormShow(Sender: TObject);
var
year, month, day: Word;
begin
TabSet1.TabIndex := 0;
chkJG_1.Checked := True;
chkJG_2.Checked := True;
chkJG_3.Checked := True;
chkJG_4.Checked := True;
chkJG_5.Checked := True;
chkJG_6.Checked := True;
chkJG_7.Checked := True;
pnlDW.Visible := False;
DecodeDate(Now, year, month, day);
edtYear.Value := Year;
edtMonth.Value := Month;
edtYear2.Value := Year;
edtMonth2.Value := Month;
ShowStyle(TabSet1.TabIndex);
end;
procedure TfrmDataOut.TabSet1Change(Sender: TObject; NewTab: Integer;
var AllowChange: Boolean);
begin
case TabSet1.TabIndex of
0:
strlst_1.Assign(mmoMain.Lines);
1:
strlst_2.Assign(mmoMain.Lines);
2:
strlst_3.Assign(mmoMain.Lines);
3:
strlst_4.Assign(mmoMain.Lines);
4:
strlst_5.Assign(mmoMain.Lines);
end;
case NewTab of
0: //单位汇总表
begin
mmoMain.Lines.Assign(strlst_1);
pnlDW.Visible := False;
pnlSJ.Visible := False;
end;
1: //发放名册
begin
mmoMain.Lines.Assign(strlst_2);
pnlDW.Visible := False;
pnlSJ.Visible := True;
Label2.Caption := '所属年月';
end;
2: //补发数据
begin
mmoMain.Lines.Assign(strlst_3);
pnlDW.Visible := False;
pnlSJ.Visible := True;
Label2.Caption := '补发年月';
end;
3: //新增人员
begin
mmoMain.Lines.Assign(strlst_4);
pnlDW.Visible := False;
pnlSJ.Visible := True;
Label2.Caption := '新增年月';
end;
4: //发放机构变更人员表
begin
mmoMain.Lines.Assign(strlst_5);
pnlDW.Visible := False;
pnlSJ.Visible := True;
Label2.Caption := '补发年月';
end;
end;
ShowStyle(NewTab);
end;
procedure TfrmDataOut.btnDirClick(Sender: TObject);
var
bi: TBROWSEINFO;
str: array[0..MAX_PATH] of Char;
pIDListItem: PItemIDList;
pStr: PChar;
begin
bi.hwndOwner := GetActiveWindow;
bi.lpszTitle := PChar('目录选择');
bi.pidlRoot := nil;
bi.pszDisplayName := @str;
bi.ulFlags := BIF_RETURNONLYFSDIRS;
bi.lpfn := nil;
pIDListItem := SHBrowseForFolder(bi);
if pIDListItem <> nil then
begin
pStr := @Str;
SHGetPathFromIDList(pIDListItem, pStr);
CoTaskMemFree(pIDListItem);
edtPath.Text := pStr;
end;
end;
procedure TfrmDataOut.btnOKClick(Sender: TObject);
var
path: string;
i: integer;
procedure AddLine;
begin
// mmoMain.Lines.Add('**********************************');
mmoMain.Lines.Add('');
Self.Update;
end;
function isDWDMValide(dwdm: string): boolean;
begin
with TQuery.Create(Self) do
try
DataBaseName := dfmMain.dbsMain.DataBaseName;
SQL.Add('SELECT count(*) FROM tff_dwxx WHERE ssdwid=dwid_ff and dwdm=''' +
edtDW.Text +
'''');
Open;
if Fields[0].AsInteger = 0 then
Result := False
else
Result := True;
finally
Free;
end;
end;
function FillWord(inStr: string; WordLength: Integer): string;
begin
Result := inStr;
if Length(inStr) < WordLength then
begin
Result := StringOfChar('0', WordLength - length(inStr)) + inStr;
end;
end;
begin
//检查路径
if not DirectoryExists(edtPath.Text) then
begin
gfShowError('路径不存在,无法生成文件');
Abort;
end
else
begin
if Copy(edtPath.Text, length(edtPath.Text), 1) <> '\' then
Path := edtPath.Text + '\'
else
Path := edtPath.Text;
end;
// 生成所有单位发放数据
// if (TabSet1.TabIndex = 0) then
// if not isDWDMValide(edtDW.Text) then
// begin
// gfShowError('请输入正确的单位代码');
// Abort;
// end;
//清空Memo
mmoMain.Lines.Clear;
Self.Repaint;
case TabSet1.TabIndex of
0: //单位汇总表
begin
//查询所有单位信息
with TQuery.Create(Self) do
try
DataBaseName := dfmMain.dbsMain.DatabaseName;
SQL.Add('select dwid_ff,dwdm,dwmc from tff_dwxx');
SQL.Add('where dwid_ff=ssdwid');
SQL.Add('order by dwdm');
Open;
//显示该单位的发放数据
mmoMain.Lines.Add('单位汇总表正在生成...');
mmoMain.Lines.Add('共有单位' + IntToStr(RecordCount) + '家');
mmoMain.Lines.Add('');
i := 1;
while not EOF do
begin
Self.Update;
mmoMain.Lines.Add(FieldByName('DWMC').AsString +
'(' +
FieldByName('DWDM').AsString +
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -