[aardio][SQL]usSplitFiling - 档案数字化分件工具

3 篇文章 0 订阅
2 篇文章 0 订阅

界面:

main.aarido

import win.ui;
import console;
/*DSG{{*/
mainForm = win.form(text="分件-SplitFiling";right=479;bottom=575;border="dialog frame";max=false)
mainForm.add(
btnDC={cls="button";text="数据校验";left=80;top=512;right=176;bottom=544;font=LOGFONT(h=-14);tabstop=1;z=27};
btnDIR={cls="button";text="选择目录";left=16;top=48;right=112;bottom=72;font=LOGFONT(h=-14);tabstop=1;z=15};
btnFJ={cls="button";text="分件";left=304;top=512;right=400;bottom=544;disabled=1;font=LOGFONT(h=-14);tabstop=1;z=28};
btnXLS={cls="button";text="选择文件";left=16;top=16;right=112;bottom=40;font=LOGFONT(h=-14);tabstop=1;z=13};
chkMN={cls="checkbox";text="一页多件";left=384;top=168;right=464;bottom=192;font=LOGFONT(h=-14);tabstop=1;z=26};
groupbox={cls="groupbox";left=8;top=80;right=472;bottom=200;ah=1;aw=1;cp=1;edge=1;font=LOGFONT(h=-14);z=2};
groupbox2={cls="groupbox";left=8;top=0;right=472;bottom=80;ah=1;aw=1;cp=1;edge=1;font=LOGFONT(h=-14);z=1};
lstInfo={cls="listbox";left=16;top=208;right=464;bottom=512;ah=1;aw=1;edge=1;font=LOGFONT(h=-14);items={};msel=1;vscroll=1;z=3};
static={cls="static";text="索引字段";left=16;top=80;right=96;bottom=112;center=1;font=LOGFONT(h=-14);notify=1;transparent=1;z=4};
static2={cls="static";text="排序字段";left=112;top=80;right=192;bottom=112;center=1;font=LOGFONT(h=-14);notify=1;transparent=1;z=5};
static3={cls="static";text="页数字段";left=384;top=80;right=464;bottom=112;center=1;font=LOGFONT(h=-14);notify=1;transparent=1;z=6};
static4={cls="static";text="页号字段";left=296;top=80;right=376;bottom=112;center=1;font=LOGFONT(h=-14);notify=1;transparent=1;z=7};
static5={cls="static";text="件名称字段";left=200;top=80;right=280;bottom=112;center=1;font=LOGFONT(h=-14);notify=1;transparent=1;z=8};
static6={cls="static";text="页号位数";left=16;top=136;right=96;bottom=168;center=1;font=LOGFONT(h=-14);notify=1;transparent=1;z=9};
static7={cls="static";text="页号前缀";left=112;top=136;right=192;bottom=168;center=1;font=LOGFONT(h=-14);notify=1;transparent=1;z=10};
static8={cls="static";text="页号后缀";left=200;top=136;right=280;bottom=168;center=1;font=LOGFONT(h=-14);notify=1;transparent=1;z=11};
static9={cls="static";text="后缀名";left=296;top=136;right=376;bottom=168;center=1;font=LOGFONT(h=-14);notify=1;transparent=1;z=12};
txtFile={cls="edit";text="D:\TEST\fafj.xls";left=120;top=16;right=464;bottom=40;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=14};
txtID={cls="edit";text="案卷级档号";left=16;top=112;right=96;bottom=136;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=17};
txtJM={cls="edit";text="文件级档号";left=200;top=112;right=280;bottom=136;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=19};
txtOB={cls="edit";text="件号";left=112;top=112;right=192;bottom=136;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=18};
txtPath={cls="edit";text="D:\TEST\fafj";left=120;top=48;right=464;bottom=72;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=16};
txtPfn={cls="edit";text=".jpg";left=296;top=168;right=376;bottom=192;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=25};
txtPostfix={cls="edit";left=200;top=168;right=280;bottom=192;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=24};
txtPrefix={cls="edit";left=112;top=168;right=192;bottom=192;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=23};
txtWS={cls="edit";text="4";left=16;top=168;right=96;bottom=192;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=22};
txtYH={cls="edit";text="页号";left=296;top=112;right=376;bottom=136;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=20};
txtYS={cls="edit";text="页数";left=384;top=112;right=464;bottom=136;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=21}
)
/*}}*/

/*菜单栏、状态栏{{*/
//菜单栏
import win.ui.menu;
var menuAbout = function(id){
	win.msgbox('档案、文件分件工具。\r\nBUG提交:\r\n30157133@qq.com');;
} 
var menuIntro = function(id){
	var frmIntro = mainForm.loadForm("intro.aardio");
	frmIntro.show();
} 
var menu = win.ui.menu(mainForm);//创建主菜单
menu.add('使用说明',menuIntro);
menu.add('联系方式',menuAbout);
//状态栏
import win.ui.statusbar;
var statusbar = win.ui.statusbar( mainForm);
/*}}*/

/*自定义过程、函数、全局变量{{*/
//全局变量
namespace inData{
	fil,fol,id,ob,jm,yh,ys,ws,prefix,postfix,pfn="";
}
//ADO连接excel字段
getDatabaseConnectionString=function(dataPath){
	var strCnn="Provider=Microsoft.Jet.OLEDB.4.0;
                Persist Security Info=False;
                Extended Properties='Excel 8.0;HDR=Yes';
                Data Source=" ++ dataPath;
	return strCnn; 
}
//读取界面信息并检查
getDataVal=function(){
    var dataVal=true;
    //读取数据
    inData.fil=string.trim(mainForm.txtFile.text);
	inData.fol=string.trim(mainForm.txtPath.text);
	inData.id=string.trim(mainForm.txtID.text);
	inData.ob=string.trim(mainForm.txtOB.text);				//ob = order by
	inData.jm=string.trim(mainForm.txtJM.text);
	inData.yh=string.trim(mainForm.txtYH.text);
	inData.ys=string.trim(mainForm.txtYS.text);
	inData.ws=string.trim(mainForm.txtWS.text);
	inData.prefix=string.trim(mainForm.txtPrefix.text);
	inData.postfix=string.trim(mainForm.txtPostfix.text);
	inData.pfn=string.trim(mainForm.txtPfn.text);
	//数据检测
	if(string.len(inData.fil)<1 || string.len(inData.fol)<1){
		mainForm.msgbox("请选择分件文件及目录。");
		dataVal=false;
	}
	if(string.len(inData.id)<1 || string.len(inData.ob)<1 || string.len(inData.jm)<1 || string.len(inData.yh)<1 || 
		string.len(inData.ys)<1 || string.len(inData.ws)<1 || string.len(inData.pfn)<1){
		mainForm.msgbox("字段名不能为空!");
		dataVal=false;
	}
	return dataVal; 
}

/*}}*/

/*选择文件、目录{{*/
//文件
import fsys.dlg;
mainForm.btnXLS.oncommand = function(id,event){
	var file = fsys.dlg.open('Excel文件|*.xls||',,,mainForm);
	if(!file){
		return false;
	}
	mainForm.txtFile.text="";
	mainForm.txtFile.text=file;
}
//目录
import fsys.dlg.dir;
mainForm.btnDIR.oncommand = function(id,event){
	var path=fsys.dlg.dir();
	if(!path){
		return false;
	}
	mainForm.txtPath.text="";
	mainForm.txtPath.text=path;
}
/*}}*/

/*分件{{*/
import fsys;
//import access;
mainForm.btnFJ.oncommand = function(id,event){
	//初始化,变量赋值
	mainForm.lstInfo.clear();
	if(!getDataVal()){
		return false;
	};
//	var fjfile,fjpath,path,dh,jh,yh,ys,prefix,postfix,mn;
	var fjml,srcFile,srcFull,tarFull,strSQL; 
	mainForm.btnFJ.disabled=true;
	mainForm.btnFJ.text="分件中……";
	//建立数据表连接
	var cnn=com.CreateObject("ADODB.Connection");
	var rst=com.CreateObject("ADODB.Recordset");
	cnn.ConnectionString=getDatabaseConnectionString(inData.fil);
	cnn.open();
	//遍历目录
	fsys.enum(inData.fol, "*.*",,
		function(dirPath,dirName){
			//分件
			strSQL="Select * From [Sheet1$] Where " 
				+ inData.id + "='" + dirName + "' Order By " 
				+ inData.id + "," + inData.ob;
			rst.open(strSQL,cnn,1,3);
			if(rst.recordcount<1){				//无记录提示
				mainForm.lstInfo.add(dirName + "  无记录!");
				mainForm.lstInfo.ensureVisible(mainForm.lstInfo.count);
				rst.close();
				return false;
			}
			fjml=inData.fol + "_FJOK\" + dirName;
			fsys.createDir(fjml,1);				//创建分件目录,选择的目录后加_FJOK
			rst.movefirst();
			for(i=1;rst.recordcount;1){
				fsys.createDir(fjml + "\" + rst(inData.jm).value,1);
				for(j=rst(inData.yh).value;rst(inData.yh).value + rst(inData.ys).value - 1;1){
					if(string.len(inData.prefix)>0){
						srcFile=string.concat(inData.prefix,string.format(
							"%0"+inData.ws+"i",j));
					}
					else{
						srcFile=string.format("%0"+inData.ws+"i",j);
					}
					if(string.len(inData.postfix)>0){
						srcFile=string.concat(srcFile,inData.postfix);
					}
					srcFull=dirPath + "\" + srcFile + inData.pfn;
					tarFull=fjml + "\" + rst(inData.jm).value + "\" + srcFile + inData.pfn;
					if(io.exist(srcFull)==null){
						mainForm.lstInfo.add(srcFull + "  文件不存在!");
					}
					else{
						fsys.copy(srcFull,tarFull);
						statusbar.addItem(srcFull, /*宽度*/);
					}
				}
				rst.movenext();
			}
			rst.close();
			return false;
		}
	);
	statusbar.addItem("分件完成!", /*宽度*/);
	mainForm.lstInfo.add("分件完成!");
	mainForm.lstInfo.ensureVisible(mainForm.lstInfo.count);
	mainForm.lstInfo.setFocus();
//	mainForm.btnFJ.disabled=false;
	mainForm.btnFJ.text="分件";
	cnn.close();
	cnn=null;
}
/*}}*/

mainForm.btnDC.oncommand = function(id,event){
	var soreDir,strSQL,zys,i;
	mainForm.btnFJ.disabled=true;
	mainForm.lstInfo.clear();
	if(!getDataVal()){
		return false;
	};
	//建立数据表连接
	var cnn=com.CreateObject("ADODB.Connection");
	var rst=com.CreateObject("ADODB.Recordset");
	cnn.ConnectionString=getDatabaseConnectionString(inData.fil);
	cnn.open();
	//遍历目录
	fsys.enum(inData.fol, "*.*",,
		function(dirPath,dirName){
			i=0;
			fsys.enum(dirPath, "*.*",
				function(dir,filename,fullpath,findData){ 
					if(filename){ 
						i+=1;			           	
					}
				} 
				,false/*如果此参数为false则忽略子目录*/
			);
			if(mainForm.chkMN.checked){				//一页多件
				strSQL="Select * From [Sheet1$] Where " + inData.id + "='" 
					+ dirName + "' Order By " + inData.ob;
				rst.open(strSQL,cnn,1,3);
				if(rst.eof or rst.bof){
					zys=0;
				}
				else {
					rst.movelast();
					//zys=tonumber(rst(inData.yh).value) + tonumber(rst(inData.ys).value) - 1;
					zys=rst(inData.yh).value + rst(inData.ys).value - 1;
				}
				if(zys != i and i != 0){
					mainForm.lstInfo.add(dirName + "  		图片:" + tostring(i) 
						+ "  		数据:" + tostring(zys));
					mainForm.lstInfo.ensureVisible(mainForm.lstInfo.count);
				}
				rst.close();
			}
			else {									//正常分件
				//读取表数据
				strSQL="Select Sum(" + inData.ys 
						+ ") From [Sheet1$] Where " + inData.id + "='" + dirName + "'";
				rst=cnn.execute(strSQL);
				//数据校验,错误则输出
				if(rst.fields(0).value != i and i != 0){
					mainForm.lstInfo.add(dirName + "  		图片:" + tostring(i) 
						+ "  		数据:" + tostring(rst.fields(0).value));
					mainForm.lstInfo.ensureVisible(mainForm.lstInfo.count);
				}
			}
//			return true;
		} 
	);
	if(mainForm.lstInfo.count<1){
		mainForm.btnFJ.disabled=false;
	}
	mainForm.lstInfo.add("数据校验完成!");
	mainForm.statusbar.addItem("数据校验完成!", /*宽度*/);
}

mainForm.show();
return win.loopMessage();

 intro.aarido

import win.ui;
/*DSG{{*/
var winform = win.form(text="使用说明";right=479;bottom=575)
winform.add(
edit={cls="static";left=8;top=8;right=472;bottom=568;edge=1;font=LOGFONT(h=-14);multiline=1;z=1}
)
/*}}*/

winform.edit.text=/*
      本软件用于档案数字化加工,根据EXCEL文件提供的数据对图片(或
    
  文件)进行分件。

      索引字段:通常是 案卷级档号;
    
      排序字段:用于卷内排序,纯数字值,顺序号、件号、页号……;
    
      件名称字段:分件文件夹根据此字段值命名;
    
      页号字段:分件的数据依据;
    
      页数字段:同上;
    
      页号位数:图片(或文件)命名位数,如 0001.jpg 为4位数;
    
      页号前缀:图片(或文件)数字命名前的字符或数字,如图片命名为:

  N0001.jpg 填写 ‘N’;

      页号后缀:图片(或文件)数字命名后的字符或数字,如图片命名为:

  N000100000.jpg 填写 ‘00000’;

      后缀名:即文件后缀名,通常为 ‘.jpg’;

      一页多件:特殊分件形式,允许一张图片(或文件)分到多个件中;
*/;

winform.show();
win.loopMessage();
return winform;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值