📄 pfm_accept.pas
字号:
FromTime+''' where 上报内容='''+backtime+'''';
//showmessage(tempsql);
query1.Active :=false;
query1.SQL.Clear ;
//tempSql:='delete from '+tempName+' where 办事处='''+fromoffice+''' and 上报时间='''+
//backtime+'''';
query1.SQL.Add(tempSql);
query1.ExecSQL ;
end;
end;
procedure Tfm_databack.Button1Click(Sender: TObject);
begin
//howmessage(floattostr(yearof(today))+'-'+floattostr(monthof(today)));
Application.CreateForm(tfm_selectdir, fm_selectdir);
if (fm_selectdir.Showmodal=IDOK) then
edit1.text:=fm_selectdir.retpath;
fm_selectdir.free;
end;
procedure Tfm_databack.Button2Click(Sender: TObject);
begin
OpenDialog1.Filter :='文本文件(*.txt;)|*.txt';
OpenDialog1.InitialDir:='backdata\';
if opendialog1.Execute then
begin
//edit1.Text :=opendialog1.FileName ;
if rightstr(opendialog1.FileName,8) <>'zxjx.txt' then
begin
showmessage('文件名必须为zxjx.txt');
edit1.Text :='';
bitbtn2.Enabled :=false;
exit;
end
else
begin
cklbox1.Items.Clear ;
edit1.Text :=opendialog1.FileName ;
filePath:=midstr(edit1.Text ,1,(length(edit1.Text)-8));
OpenFile(edit1.Text );
end;
end;
end;
procedure Tfm_databack.OpenFile(tempFile:string);
var
i,j :integer;
TableName:string;
begin
//使所有的选项失效
//读出文件中的内容
j:=0;
memo1.Lines.Clear ;
memo1.Lines.Add('以下为打开的文件信息:');
AssignFile(myFileName,tempFile);
reset(myFileName);
//读出上报的时间
readln (myfilename,filecontent);
if leftstr(filecontent,8)<>'上报时间' then
begin
showmessage('文件可能已经破坏');
memo1.Lines.Clear ;
edit1.Text :='';
closeFile(myFileName);
exit;
end;
memo1.Lines.Add(filecontent);
FromTime:=midstr(filecontent,10,(length(filecontent)-9));
//读出上报办事处
readln (myfilename,filecontent);
if leftstr(filecontent,6)<>'办事处' then
begin
showmessage('文件可能已经破坏');
memo1.Lines.Clear ;
edit1.Text :='';
closeFile(myFileName);
exit;
end;
memo1.Lines.Add(filecontent);
FromOffice:=midstr(filecontent,8,(length(filecontent)-7));
if (FromOffice<>unit_wxp.myOffice) and (FromOffice<>'总部') and
(unit_wxp.myOffice<>'总部') then
begin
showmessage('文件可能已经破坏');
memo1.Lines.Clear ;
edit1.Text :='';
closeFile(myFileName);
exit;
end;
//读出上报人
readln (myfilename,filecontent);
if leftstr(filecontent,6)<>'上报人' then
begin
showmessage('文件可能已经破坏');
memo1.Lines.Clear ;
edit1.Text :='';
closeFile(myFileName);
exit;
end;
memo1.Lines.Add(filecontent);
FromUser:=midstr(filecontent,8,(length(filecontent)-7));
//上报表数
readln (myfilename,filecontent);
if leftstr(filecontent,8)<>'上报表数' then
begin
showmessage('文件可能已经破坏');
memo1.Lines.Clear ;
closeFile(myFileName);
exit;
end;
memo1.Lines.Add(filecontent);
tablecount:= strtoint(midstr(filecontent,10,(length(filecontent)-9)));
//上报类型
readln (myfilename,filecontent);
if leftstr(filecontent,8)<>'上报类型' then
begin
showmessage('文件可能已经破坏');
memo1.Lines.Clear ;
closeFile(myFileName);
exit;
end;
memo1.Lines.Add(filecontent);
backstyle:=rightstr(filecontent,2);
//上报内容
readln (myfilename,filecontent);
if leftstr(filecontent,8)<>'上报内容' then
begin
showmessage('文件可能已经破坏');
memo1.Lines.Clear ;
closeFile(myFileName);
exit;
end;
memo1.Lines.Add(filecontent);
backtime:=midstr(filecontent,10,(length(filecontent)-9));
AcceptTableName:=tstringlist.Create ;
while not eof(myFileName) do
begin
readln(myfilename,filecontent);
//memo1.Lines.Add(filecontent);
TableName:=midstr(filecontent,6,(length(filecontent)-5));
if fileexists(filepath+TableName+'.db')=true then
AcceptTableName.Add(TableName)
else
begin
showmessage('表"'+ TableName+'"不存在!');
continue;
end;
if ((FromOffice=unit_wxp.myOffice) )
then
begin
for i:=0 to stable.Count -1 do
begin
if TableName=stable.strings[i] then
begin
CkLBox1.Items.Add(stabledes.strings[i]) ;
cklbox1.Checked[j]:=true;
hastable[j]:=i;
j:=j+1;
//tableindex[j]:=i;
end;
end;
{for i:=0 to cklbox1.Count -1 do
begin
end;}
end
else if (unit_wxp.myOffice<>'总部') and (fromoffice='总部') then
begin
if (TableName='pub_z_part') or (TableName='std_machine')
then
begin
for i:=0 to stable.Count -1 do
begin
if TableName=stable.strings[i] then
begin
CkLBox1.Items.Add(stabledes.strings[i]) ;
cklbox1.Checked[j]:=true;
hastable[j]:=i;
j:=j+1;
//tableindex[j]:=i;
end;
end;
end;
end
else if (unit_wxp.myOffice='总部') and (fromoffice<>'总部') then
begin
for i:=0 to stable.Count -1 do
begin
if TableName=stable.strings[i] then
begin
CkLBox1.Items.Add(stabledes.strings[i]) ;
cklbox1.Checked[j]:=true;
hastable[j]:=i;
j:=j+1;
//tableindex[j]:=i;
end;
end;
end;
end;
bitbtn2.Enabled :=true;
closeFile(myFileName);
end;
procedure Tfm_databack.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
action:=cafree;
end;
procedure Tfm_databack.RadioGroup1Click(Sender: TObject);
begin
if RadioGroup1.ItemIndex =3 then
begin
GroupBox2.Visible :=true;
backstyle:='';
end
else
begin
GroupBox2.visible :=false;
backstyle:='';
end;
end;
procedure Tfm_databack.Button3Click(Sender: TObject);
begin
//mkdir(edit1.Text +datetostr(today));
//filelistbox1.Directory :='';
//showmessage(application.ExeName );
//DealPartInfo;
end;
procedure Tfm_databack.Button4Click(Sender: TObject);
begin
//deletefile();
end;
//判断是否该目录已经存在,如果存在则让用户选择是否删除
//如果不存在则创建
function Tfm_databack.DelDir(DriverPath:string):boolean;
var
tempPath:string;
i:integer;
ExeFile:string;
begin
ExeFile:=leftstr(application.ExeName ,length(application.ExeName)-8);
if not DirectoryExists(ExeFile+'backdata\') then
mkdir(ExeFile+'backdata\');
if midstr(DriverPath ,2,1)<>':' then
begin
tempPath:=leftstr(application.ExeName ,length(application.ExeName)-8);
tempPath:=temppath+'backdata\'+unit_wxp.myOffice +'_'+backtime;
end
else
begin
tempPath:= Driverpath +unit_wxp.myOffice +'_'+backtime;
end;
if DirectoryExists(tempPath) then
begin
if application.MessageBox(pchar('目录'+temppath+'已经存在,说明数据以前上报过,'+
'要删除原来数据重新上报嘛?'),
pchar('注意'),MB_OKCANCEL)=IDOK then
begin
{FileListbox1.Directory :=temppath;
if filelistbox1.Count <>0 then
begin
for i:=0 to filelistbox1.count-1 do
begin
deletefile(temppath+filelistbox1.Items.Strings[i]);
end;
end;}
edit1.Text :=temppath;
filepath:= temppath+'\';
result:=true;
end
else
result:=false;
end
else
begin
mkdir(temppath);
edit1.Text:=temppath;
filepath:= temppath+'\';
result:=true;
end;
end;
procedure Tfm_databack.AddBackUpFields (tablename:string);
var
i:integer;
begin
query1.Close ;
batmove1.Mappings.Clear ;
query1.SQL.Clear ;
query1.SQL.Add('select * from '+tablename);
query1.Active :=true;
if tablename<>'partleft' then
begin
for i:=0 to query1.FieldCount-1 do
begin
if query1.Fields[i].FieldName <>'序号' then
batmove1.Mappings.Add(query1.fields[i].fieldname
+'='+query1.fields[i].fieldname);
end;
end
else
begin
for i:=0 to query1.FieldCount-1 do
begin
if (query1.Fields[i].FieldName ='办事处') or
(query1.Fields[i].FieldName ='编号') or
(query1.Fields[i].FieldName ='名称') or
(query1.Fields[i].FieldName ='库存量') or
(query1.Fields[i].FieldName ='最小库存')
then
batmove1.Mappings.Add(query1.fields[i].fieldname
+'='+query1.fields[i].fieldname);
end;
{batmove1.Mappings.Add('办事处=办事处');
batmove1.Mappings.Add('编号=编号');
batmove1.Mappings.Add('名称=名称');
batmove1.Mappings.Add('库存量=库存量');
batmove1.Mappings.Add('最小库存=最小库存');}
end;
query1.Active :=false;
end;
procedure Tfm_databack.DealPartInfo ();
var
tempSql:string;
begin
tempSql:='insert into pub_z_part select temp_z_part.* from '
+'temp_z_part where temp_z_part.编号 not in (select 编号 from pub_z_part)';
dm_wxp.ADOQuery1.Active :=false;
dm_wxp.ADOQuery1.SQL.Clear ;
dm_wxp.ADOQuery1.SQL.Add(tempsql);
dm_wxp.ADOQuery1.ExecSQL ;
tempSql:='truncate table temp_z_part';
dm_wxp.ADOQuery1.SQL.Clear ;
dm_wxp.ADOQuery1.SQL.Add(tempsql);
dm_wxp.ADOQuery1.ExecSQL;
end;
procedure Tfm_databack.RadioGroup2Click(Sender: TObject);
begin
if RadioGroup2.ItemIndex =0 then
begin
backstyle :='年';
combobox1.Enabled :=true;
combobox2.Enabled :=false;
combobox3.Enabled :=false;
end
else if RadioGroup2.ItemIndex =1 then
begin
backstyle:='月';
combobox1.Enabled :=true;
combobox2.Enabled :=true;
combobox3.Enabled :=false;
end
else
begin
backstyle:='日';
combobox1.Enabled :=true;
combobox2.Enabled :=true;
combobox3.Enabled :=true;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -