📄 imp.~pas
字号:
str1:=copy(str1,i+1,length(str1)-i);
i:=pos(',',str1);
end;
txt:=Tstringlist.Create ;
txt.LoadFromFile(filename);
for i:=0 to txt.Count-1 do
begin
line:=txt[i];
pos1:=0; DelQuery.Close ;
j:=pos(split,line); fieldstr:='';valuestr:=''; b1:=false; b2:=false;
while (j>0) and (pos1<=pos2) do
begin
if j>1 then
str:=copy(line,1,j-1)
else
begin
line:=copy(line,j+1,length(line)-j);
j:=pos(split,line);
inc(pos1);
continue ;
end;
//str:=copy(line,1,j-1); psseno=:param1 and cpseno=:param2
str:=trim(str);
line:=copy(line,j+1,length(line)-j);
{if (pos1>0) and (pos1<3) then
DelQuery.Params[pos1-1].AsString :=trim(str); }
if str<>'' then
begin
if fieldstr='' then
begin
fieldstr:='('+Fieldname[pos1];
valuestr:='('+Quotedstr(str);
if fieldname[pos1]='psseno' then
begin
DelQuery.ParamByName('param1').AsString :=str;
b1:=true;
end;
if Fieldname[pos1]='cpseno' then
begin
DelQuery.ParamByName('param2').AsString :=str;
b2:=true;
end;
end
else
begin
fieldstr:=fieldstr+','+fieldname[pos1];
valuestr:=valuestr+','+Quotedstr(str);
if fieldname[pos1]='psseno' then
begin
DelQuery.ParamByName('param1').AsString :=str;
b1:=true;
end;
if Fieldname[pos1]='cpseno' then
begin
DelQuery.ParamByName('param2').AsString :=str;
b2:=true;
end;
end;
end;
inc(pos1);
j:=pos(split,line);
end;
if (b1 and b2) then
begin
DelQuery.Prepare ;
DelQuery.ExecSQL ;
end;
with Query do
begin
close;
sql.Clear ;
sql.Add('insert into '+tablename);
sql.Add(Fieldstr+')');
sql.Add('values');
sql.Add(valuestr+')');
str:=sql[0]+sql[1]+sql[2]+sql[3];
Prepare ;
ExecSQL ;
end;
end;
DelQuery.Close ;
Query.Close ;
txt.Free ;
deletefile(pchar(filename));
end;
//SBDB_RTARCH增加了字段
procedure Imp_SBDB_RTARCH(filename,tablename,split:string;Query,DelQuery:TQuery);
var
line,fieldstr,valuestr:widestring;
txt:Tstrings;
i,j,pos1:integer;
str:string;
fieldname:array[0..67] of string;
begin
if not FileExists(filename) then exit;
with delQuery do
begin
close;
sql.Clear ;
sql.Add('delete from '+tablename+' where psseno=:param1 and cpseno=:param2');
end;
fieldname[0]:='PRSENO';fieldname[1]:='PSSENO';fieldname[2]:='CPSENO';fieldname[3]:='ISCODE';fieldname[4]:='AGCARDNO';
fieldname[5]:='PSNAME';fieldname[6]:='SEX'; fieldname[7]:='BDATE'; fieldname[8]:='WKDATE';fieldname[9]:='ADDRESS';
fieldname[10]:='ZIP'; fieldname[11]:='PYYEARS';fieldname[12]:='WKATTR';fieldname[13]:='IDENTITY';fieldname[14]:='RTDATE';
fieldname[15]:='RTCODE';fieldname[16]:='HOUSEHOLD';fieldname[17]:='RTWG';fieldname[18]:='PSACPY';fieldname[19]:='ACCTSAVE';
fieldname[20]:='ACPSSAVE';fieldname[21]:='TRCODE';fieldname[22]:='ACCTNO';fieldname[23]:='MADDR';fieldname[24]:='STREET';
fieldname[25]:='SACODE';fieldname[26]:='PDCODE';fieldname[27]:='RTFLAG';fieldname[28]:='STATUS';fieldname[29]:='RECADJ';
fieldname[30]:='CUAGWG';fieldname[31]:='ALLOWANCE';fieldname[32]:='WDFEE';fieldname[33]:='OPYEAR';fieldname[34]:='OPMONTH';
fieldname[35]:='OPDATE';fieldname[36]:='MTRNAME';fieldname[37]:='MACCTNO';fieldname[38]:='ADDWGMONTHS';fieldname[39]:='NOTES';
fieldname[40]:='MTRZIP';fieldname[41]:='ARCODE';fieldname[42]:='MTRPRO'; fieldname[43]:='MTRCITY';fieldname[44]:='RTKIND';
fieldname[45]:='LBWORK';fieldname[46]:='JZGB';fieldname[47]:='GSYZ';fieldname[48]:='IDENTITY1';fieldname[49]:='LXDH';
fieldname[50]:='COMCODE';fieldname[51]:='ATMETHOD';fieldname[52]:='ATMETHODNAME';fieldname[53]:='FACOUNT';fieldname[54]:='RZBZ';
fieldname[55]:='BJBZ';fieldname[56]:='NATIONAL';fieldname[57]:='NACODE';fieldname[58]:='AGE';fieldname[59]:='INDUSTRY';
fieldname[60]:='HEALTH';fieldname[62]:='LIFEFIELD';fieldname[63]:='WKTYPE';fieldname[64]:='WKTYPEMON';
fieldname[65]:='WORKHURT';fieldname[66]:='BLACK';fieldname[67]:='RTPY';
{with Query do
begin
close;
sql.Clear ;
sql.Add('insert into '+tablename+' values(');
sql.Add(':param1,:param2,:param3,:param4,:param5,:param6,:param7,:param8,:param9,:param10');
sql.Add(':param11,:param12,:param13,:param14,:param15,:param16,:param17,:param18,:param19,:param20');
sql.Add(':param21,:param22,:param23,:param24,:param25,:param26,:parma27,:param28,:param29,:param30');
sql.Add(':param31,:param32,:param33,:param34,:param35,:param36,:param37,:param38,:param39,:param40');
sql.Add(':param41,:param42,:param43,:param44,:param45,:param46,:param47,:param48,:param49,:param50');
sql.Add(':param51,:param52,:param53,:param54,:param55,:param56,:param57,:param58,:param59,:param60');
sql.Add(':param61,:param62,:param63,:param64,:param65,:param66,:param67,:param68 )');
end;}
txt:=Tstringlist.Create ;
txt.LoadFromFile(filename);
for i:=0 to txt.Count-1 do
begin
line:=txt[i];
pos1:=0;
j:=pos(split,line);fieldstr:='';valuestr:=''; DelQuery.Close ;
while (j>0) and (pos1<68) do
begin
if j>1 then
str:=copy(line,1,j-1)
else
begin
line:=copy(line,j+1,length(line)-j);
j:=pos(split,line);
inc(pos1);
continue ;
end;
//str:=copy(line,1,j-1);
str:=trim(str);
line:=copy(line,j+1,length(line)-j);
if (pos1>0) and (pos1<3) then
DelQuery.Params[pos1-1].AsString :=trim(str);
if str<>'' then
begin
if fieldstr='' then
begin
fieldstr:='('+Fieldname[pos1];
valuestr:='('+Quotedstr(str);
end
else
begin
fieldstr:=fieldstr+','+fieldname[pos1];
valuestr:=valuestr+','+Quotedstr(str);
end;
end;
inc(pos1);
j:=pos(split,line);
end;
if (pos1>2) then
begin
DelQuery.Prepare ;
DelQuery.ExecSQL ;
end;
with Query do
begin
close;
sql.Clear ;
sql.Add('insert into '+tablename);
sql.Add(Fieldstr+')');
sql.Add('values');
sql.Add(valuestr+')');
Prepare ;
ExecSQL ;
end;
end;
DelQuery.Close ;
Query.Close ;
txt.Free ;
deletefile(pchar(filename));
{PRSENO NUMBER(13) 数据库记录行号::所有表的行号取至SB_PRSENO
PSSENO NUMBER(8) 人员内码::SB_PSSENO产生的序列号
CPSENO NUMBER(6) 单位内码::
ISCODE CHAR(18) Y 社会保障号::
AGCARDNO CHAR(8) Y 手册编号::
PSNAME VARCHAR2(10) Y 姓名::
SEX CHAR(1) 性别::[1 男. 0 女]
BDATE DATE Y 出生日期::
WKDATE DATE Y 参加工作时间::
ADDRESS VARCHAR2(80) Y 家庭住址::
ZIP VARCHAR2(6) Y 邮编::
PYYEARS NUMBER(5,2) 缴费年限::累积缴费年限
WKATTR CHAR(1) Y 用工性质::[0 固定工.1 合同工.2 临时工.3 农民工]
IDENTITY CHAR(2) Y 身份代码::机关事业身份代码SBDC_IDTYPE
RTDATE DATE Y 离退休时间::
RTCODE CHAR(2) 离退休类型::参见离退休类型编码表SBDC_RTTYPE
HOUSEHOLD CHAR(1) Y 户籍关系::[0 城镇.1 农村]
RTWG NUMBER(13,2) Y 原基本养老金::退休时核定的月基本养老金
PSACPY NUMBER(13,2) 原个人帐户支出额::退休时核定的月基本养老金中的个人帐户支出额
ACCTSAVE NUMBER(13,2) 个人帐户储存额::退休时个人帐户累计储存额
ACPSSAVE NUMBER(13,2) 个人帐户个人部分储存额::退休时个人帐户累计储存额中的个人部分储存额
TRCODE NUMBER(4) 委托机构编码::参见委托机构编码表SBDC_TRUST
ACCTNO VARCHAR2(40) Y 银行帐号::银行帐号
MADDR VARCHAR2(60) Y 异地发放的联系地址::
STREET NUMBER(7) Y 所属社区::参见社区编码表SBDC_COMMUNITY
SACODE CHAR(6) Y 辖区编号::参见辖区编码表SBDC_SIAREA
PDCODE CHAR(2) Y 险种编码::参见险种编码表SBDC_PDTYPE[01.02.04]
RTFLAG CHAR(1) Y 统一制度前退休标志::
STATUS CHAR(1) 当前保险状态::[0 正常.1 暂停.2 终止]
RECADJ NUMBER(13,2) Y 最近调整额::(暂不使用)
CUAGWG NUMBER(13,2) 本月基本养老金::(暂不使用)
ALLOWANCE NUMBER(13,2) 其中津贴::(暂不使用)
WDFEE NUMBER(13,2) 工伤护理费::(暂不使用)
OPYEAR NUMBER(4) Y 操作年份::(暂不使用)
OPMONTH NUMBER(2) Y 操作月份::(暂不使用)
OPDATE DATE Y 业务操作时间::本业务被处理时的数据自然日期(暂不使用)
MTRNAME VARCHAR2(100) Y MTRNAME
MACCTNO VARCHAR2(40) Y MACCTNO
ADDWGMONTHS NUMBER(3) ADDWGMONTHS
NOTES VARCHAR2(200) Y
MTRZIP VARCHAR2(6) Y MTRZIP
ARCODE CHAR(6) ARCODE
MTRPRO VARCHAR2(30) Y MTRPRO
MTRCITY VARCHAR2(30) Y MTRCITY
RTKIND CHAR(1) RTKIND
LBWORK CHAR(1) Y 解放前参加工作
JZGB CHAR(1) Y 军转干部
GSYZ CHAR(1) Y 原工商业者
IDENTITY1 CHAR(1) Y 高级职称
LXDH CHAR(13) Y 联系电话
COMCODE NUMBER(7) Y 未使用
ATMETHOD NUMBER(1) Y 认证方法
ATMETHODNAME VARCHAR2(30) Y 认证办法中文名
FACOUNT NUMBER(8,2) Y 信用值
RZBZ CHAR(1) Y 认证标志0表示正常1表示暂停发放养老金2表示终止养老保险
BJBZ CHAR(1) Y 报警标志0表示没有被报警1表示已经被报警
NATIONAL VARCHAR2(10) Y 民族(中文)
NACODE CHAR(2) Y 民族编码
AGE VARCHAR2(3) Y 年龄
INDUSTRY CHAR(2) Y 所属行业
HEALTH VARCHAR2(10) Y 健康状况
LIFEFIELD VARCHAR2(10) Y 长期生活地
WKTYPE CHAR(2) Y 特殊工种
WKTYPEMON VARCHAR2(3) Y 特殊工种月数
WORKHURT VARCHAR2(10) Y 工伤
BLACK CHAR(1) Y '0'是黑名单'1'不是黑名单
RTPY VARCHAR2(5) Y 养老金总额
}
end;
procedure Imp_SBDB_RTARCH(filename,tablename,split:string;fieldnames:widestring;Query,DelQuery:TQuery);overload;
var
line,fieldstr,valuestr,str1:widestring;
txt:Tstrings;
i,j,pos1,pos2:integer;
str:string;
fieldname:array[0..99] of string;
b1,b2:boolean;
begin
if not FileExists(filename) then exit;
with delQuery do
begin
close;
sql.Clear ;
sql.Add('delete from '+tablename+' where psseno=:param1 and cpseno=:param2');
end;
//b1:=false;b2:=false;
str1:=fieldnames+',';
i:=pos(',',str1); pos2:=0;
while i>1 do
begin
fieldname[pos2]:=trim(copy(str1,1,i-1));
inc(pos2);
str1:=copy(str1,i+1,length(str1)-i);
i:=pos(',',str1);
end;
txt:=Tstringlist.Create ;
txt.LoadFromFile(filename);
for i:=0 to txt.Count-1 do
begin
line:=txt[i]; // showmessage(line); line:=Stringreplace(line,chr(10),'',[rfReplaceAll, rfIgnoreCase]); showmessage(line);
pos1:=0; DelQuery.Close ;
j:=pos(split,line);fieldstr:='';valuestr:=''; b1:=false; b2:=false;
while (j>0) and (pos1<=pos2) do
begin
if j>1 then
str:=copy(line,1,j-1)
else
begin
line:=copy(line,j+1,length(line)-j);
j:=pos(split,line);
inc(pos1);
continue ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -