WITH OleApp.Application
i=1
do while .t.
bb=type('.sheets(i).name')
if bb='U'
exit
endif
err=.f.
enddata=.f.
aa=.sheets(i).name
.sheets(i).select && Ñ¡Ôñ±íµ¥
wait windows "ÕýÔÚת»»EXCEL±íµÄ"+aa nowait
&& ¼ì²éÊý¾ÝÊÇ·ñºÏÀí
getvalue=.ActiveSheet.cells(4,2).value
if type('getvalue')<>'N'
messagebox("ת»»:"+alltrim(aa)+"Êý¾Ý³ö´í",0)
i=i+1
loop
endif
if used('subject')=.f.
use subject in 0
endif
select subject
go top
locate for alltrim(subname)=alltrim(aa)
if eof() &&ÈôÏîÄ¿±íûÓÐÔò¼ÓÈë
&&È¡ÏîÄ¿±àºÅ
select max(subcode) from subject into array mysubject where left(allt(subcode),3)=allt(sbegincode)
if type('mysubject')='U'
newsubcode=alltrim(sbegincode)+"0001#"
else
ss=substr(alltrim(mysubject(1,1)),len(alltrim(sbegincode))+1,len(alltrim(mysubject(1,1)))-len(alltrim(sbegincode)))
tt=val(ss)
uu=10000+tt+1
newsubcode=allt(sbegincode)+right(allt(str(uu)),4)+"#"
release mysubject
endif
select max(order) from subject into array mydata
if type('mydata')='U'
sorder=1
else
sorder=mydata(1,1)+1
release mydata
endif
insert into subject (order,subcode,subname,gdsname,byqmainstuff,byqsubstuff,dymainstuff,dysubstuff,;
gymainstuff,gysubstuff) values ;
(sorder,newsubcode,aa,sgdsname,'0','0','0','0','0','0')
repl &operfields with '1'
else
if &operfields='1'
messagebox("ÏîÄ¿±íÒÑÓиÃ:"+aa+"²ÄÁÏ¿ÆÄ¿")
i=i+1
loop
else
repl &operfields with '1'
newsubcode=subcode
endif
endif
first=1
for j=4 to 300
for k=2 to 10
getvalue=.ActiveSheet.cells(j,k).value
if k=2
if type('getvalue')<>'N'.and.first=1
messagebox("ת»»:"+alltrim(aa)+"Êý¾Ý³ö´í",0)
first=first+1
err=.t.
exit
endif
if type('getvalue')<>'N'.and.first>1
enddata=.t.
exit
endif
endif
first=first+1
IF k=BEGINCOLUMN && ÐòºÅ
sorder=chtype(getvalue,'N')
endif
if k=BEGINCOLUMN+1 && Ãû³Æ
sname=chtype(getvalue,'C')
endif
if k=BEGINCOLUMN+2 && ¹æ¸ñ
sgk=chtype(getvalue,'C')
sname=alltrim(sname)+alltrim(sgk)
endif
if k=BEGINCOLUMN+3 && µ¥Î»
sunit=chtype(getvalue,'C')
endif
if k=BEGINCOLUMN+4 && ÊýÁ¿
samount=chtype(getvalue,'N')
endif
if k=BEGINCOLUMN+5 && µ¥¼Û
sunitprice=chtype(getvalue,'N')
endif
if k=BEGINCOLUMN+6 && ½ð¶î
scost=chtype(getvalue,'N')
endif
endfor
if err=.f. .and. enddata=.f.
&& ²ÄÁϹéÀà
select code,name from stuff where alltrim(name)=alltrim(sname) into array mystuff
if type('mystuff')='U'
* select max(order) from stuff where substr(alltrim(belong),val(sbelong),1)='1' into array myorder
select max(order) from stuff into array myorder
if type('myorder')='U'
myneworder=1
scl=CL+"0001#"
else
order2=myorder(1,1)+1
myneworder=order2
if order2<10
scl=CL+"000"+alltrim(str(order2))+"#"
endif
if order2>=10 .and.order<100
scl=CL+"00"+alltrim(str(order2))+"#"
endif
if order2>=100.and.order<1000
scl=CL+"0"+alltrim(str(order2))+"#"
endif
if order2>=1000.and.order<10000
scl=CL+alltrim(str(order2))+"#"
endif
&& ½«Êý¾ÝдÈë²ÄÁϱí
insert into &operfields (subcode,order,zlbh,name,unit,amount,unitprice,cost) values ;
(newsubcode,sorder,scl,sname,sunit,samount,sunitprice,scost)
select stuff
go top
locate for alltrim(code)=alltrim(scl)
if eof()
messagebox("È¡²ÄÁÏ:"+scl+"³ö´í",0,"³ö´í")
else
aa=int(val(alltrim(sbelong)))
if aa=1
sflag='1'+right(alltrim(belong),len(alltrim(belong))-1)
else
if len(alltrim(belong))=aa
sflag=left(belong,aa-1)+'1'
else
sflag=left(belong,aa-1)+'1'+right(alltrim(belong),len(alltrim(belong))-aa)
endif
endif
repl belong with sflag
endif
endif
if err.or.enddata
exit
endif
endfor
i=i+1
enddo
* .ActiveWindow.SelectedSheets.Delete
* .ActiveWorkbook.Save
ENDWITH
OleApp.Quit && ¹Ø±ÕEXCEL£¬±£´æ¸üкóµÄ¹¤×÷²¾Îļþ
release oleapp
if used('subject')
select subject
use
endif
select &operfields
use
messagebox("Finish!!")
return