今天局域网连了共享打印机,打了些资料,准备周六周日有时间看一看.
今儿个真高兴,够意思的同学帮我把实习证明和实习报告发给开明的院长,任务搞定了.
前台终于明白套路了,具体代码还需看.
周六同事去题球,矿业大学,可惜没装备,技术也不好,等年后装备全了再参加吧,等会就下班啦:)
局域网共享打印机:
⑴安装打印机的电脑设置:点"开始"---"设置"--- "打印机和传真" 进入打印机管理页面,右键点需要共享的打印机,选择共享就OK了.
⑵其他需要共享打印机的电脑设置:点"开始"---"设置"--- "打印机和传真" 进入打印机管理页面,在打印机管理页面的左边里选择"添加打印机"--"添加网络打印机"---"浏览打印机"---然后系统会自动搜索网络内共享的打印机,搜索完后,选择一个结果一路点下一步就好了。
需要注意的是:必须先设置安装了打印机的电脑,另外其他电脑需要使用打印机的时候,安装有打印机的电脑必须开机,要不然打印不了.
<?xml version="1.0" encoding="GBK" ?>
<TRANSACTION RIGHTS="11100000000000000000000000000000" TITLE="3201 一般存款"
xmlns="http://www.otd.org/MENU" xmlns:W3CNS="http://www.w3c.org">
<!--
COMMSEND标签的内容是一段脚本,这段脚本在交易被提交前(非callserver函数)被执行
-->
<COMMSEND>"{
<!-- 自定义函数配置文件的默认位置是$HOME/xml/FUNCTIONS.XML -->
commsend_001();
<!--
<USERFUN NAME="commsend_001">"{
$FD2=$OPNBR;
$FD3=$KINBR;
$FD5=$HDATE;
$FD7=$TLRNO;
$FD10=$TTYNAME;
$FD16=$TXNO;
$FD79=#PASSWD;
//$FD6=time();
}"
</USERFUN>
-->
commsend_101();
<!--
存款交易结构
<USERFUN NAME="commsend_101">"{
$FD101=getitems('#ACTNO24#ACTSEQ#TXAMT#VOCTYPE#VOCNUM#DESC10#NBFLAG#CUSTNAME#AVBAL#CURCD#CASHFLAG#DSCPT#ACTTYPE#ACTSEQ_2#PRODNAME');
}"
</USERFUN>
-->
// if(waitsuper()){
<!--
<USERFUN NAME="waitsuper">"{
dim @bak_fd78 as string;
dim @bak_fd16 as string;
dim @bak_fd72 as string;
dim @bak_fd77 as string;
dim @bak_fd9 as string;
dim @tota as string;
dim @ch as string;
@bak_fd78=$FD78;
@bak_fd16=$FD16;
@bak_fd72=$FD72;
@bak_fd77=$FD77;
@bak_fd9=$FD9;
$FD77=$FD16;
$FD16='9597';
$FD72='1';
$FD78='00000000';
@tota=callserver();
$FD9=@bak_fd9;
if($FD12!='0000'){
showmsg(geterror());
$FD78=@bak_fd78;
$FD16=@bak_fd16;
$FD72=@bak_fd72;
$FD77=@bak_fd77;
return(false);
}
while(true){
while(true){
@ch=showmsg('请监督柜员监督['+$FD78+'],监督完成后请按1,取消请按2');
if(@ch=='1' or @ch=='2'){
break;
}
}
if(@ch=='2'){
$FD78=@bak_fd78;
$FD16=@bak_fd16;
$FD72=@bak_fd72;
$FD77=@bak_fd77;
return(false);
}
$FD72='0';
@tota=callserver();
if($FD12!='0000'){
showmsg(geterror());
$FD78=@bak_fd78;
$FD16=@bak_fd16;
$FD72=@bak_fd72;
$FD77=@bak_fd77;
return(false);
}
if($FD72!='2'){
showmsg('原交易未监督完成,不能提交!');
}else{
break;
}
}
$FD9=@bak_fd9;
$FD78=@bak_fd78;
$FD16=@bak_fd16;
$FD77=@bak_fd77;
if($FD72=='2'){
$FD72=@bak_fd72;
return(true);
}else{
$FD72=@bak_fd72;
return(false);
}
}"
</USERFUN>
-->
// return(true);
// }else{
// return(false);
// }
}"
</COMMSEND>
<COMMRECV>"{
commrecv_001();
<!--
<USERFUN NAME="commrecv_001">"{
//showmsg('FD12=['+$FD12+']');
}"
</USERFUN>
-->
}"
</COMMRECV>
<!--
界面及输入项的配置位于标签<VARIABLE>内,
每个<ITEM>标签表示一个输入项,在处理交易的过程中循环顺序执行所有的<ITEM>,
直到遇到SUBMIT按钮或者其他使处理循环结束的条件。
<VARIABLE>标签有一个属性UPLOOP可以为"TRUE"或者"FALSE"表示是否允许按上箭头从第一个输入项跳到最后一个输入项,
默认为FALSE。
-->
<VARIABLE UPLOOP="TRUE">
<ITEM LINE="3" COL="3" TYPE="%-44s" FUNCTIONS=
"T(3201 储蓄存款)"/> <!-- 显示项,LINE、COL等属性定位坐标,用于前台界面显示 -->
<ITEM LINE="4" COL="3" TYPE="%-74s" FUNCTIONS=
"T(─────────────────────────────────────)"/>
<ITEM NAME="#TXNO" TYPE="%-4s" FUNCTIONS="T($TXNO=2201)"/> <!--赋值给全局变量$TXNO -->
<ITEM NAME="#MSGTYPE" TYPE="%-5s" FUNCTIONS="T($MSGTYPE=03001)"/> <!--赋值给全局变量$MSGTYPE -->
<ITEM NAME="#TXCD" TYPE="%4s" FUNCTIONS="T(3201)"/> <!---交易代码--->
<ITEM NAME="#TXNAME" TYPE="%-10s" FUNCTIONS="T(储蓄存款)"/> <!---交易名称--->
<!--
关于TYPE的用法:
TYPE属性是<ITEM>的数据类型。
基本类型有三种,s-表示字符串,d-表示数字串,f-表示浮点型。
如果属性的第一个字符为"-"表示为左对齐,否则为右对齐。
基本类型之前可以跟长度,对于f型变量还可以指定整数和小数为数。
例如:"%-20s"表示长度为20的左对齐的字符串,"%13.2f"表示总长为13(含小数点)小数位数为2的浮点型变量。
-->
<IMPORT>SVACTINFO.IMP</IMPORT>
<!--输出变量--->
<ITEM NAME="#FD13" TYPE="%-1s" FUNCTIONS="T($FD13,1,1)"/> <!---FD13域-打折的标志--->
<!--
T(ITEM,YYYY,ZZZZ),
ITEM为一个变量,YYYY和ZZZZ可以是变量或者常量,
此函数的作用是把ITEM从第YYYY位起的ZZZZ个子符赋给当前变量,
偏移量从1开始计算。
-->
<ITEM LINE="21" COL="59" TYPE="%-6s" FUNCTIONS="T(确 定)" INPUT="SUBMIT"/>
<!--
INPUT="SUBMIT",提交按钮,它不响应按下事件,而是在按下时直接把交易提交
-->
</VARIABLE>
<!--
<REQUEST>配置发送的数据包格式,它有两个主要的属性:TYPE表示数据包的格式,
"8583"表示为8583数据包,此时<REQUEST>不需要有内容,TYPE为"TITA"为自定义格式,
此时<REQUEST>的内容为输入变量的组合。
默认为8583;NAME属性表示REQUEST的名字,
当存在多个REQUEST时用于区分它们,当只有一个REQUEST时可以不指定NAME
-->
<REQUEST>
</REQUEST>
<RESPONSE><!-- <RESPONSE>标签配置输出打印的格式 -->
<!--SCREEN---屏幕,DESC-打印时的提示信息-->
<PACKAGE DEVICE="SCREEN" DESC="储蓄存款"><!-- 应答在显示器的过程 -->
NOTHING
</PACKAGE>
<!--
<PRINT>标签的内容是一段脚本,
它在找到每一个与PACKAGE匹配的行时执行,
它可能会被执行多次,在PRINT脚本中可以使用PACKAGE中的@变量
-->
<PRINT>
"{
<!--
print(number,number,string,[string …])
参数:
行号(0开始)
列号(0开始)
输出内容
变量组
功能:
输出一行
-->
print( 3,30,'储蓄存款');
print( 4,22,'帐 号:[19]',#ACTNO);
print( 5,22,'户 名:[60]',#CUSTNAME);
print( 6,22,'产品名称:[30]',#PRODNAME);
print( 7,22,'凭证类型:[30]',#SVOCTYPE);
print( 8,22,'凭证号码:[16]',#VOCNUM);
if(substr(#ACTNO,0,6) != '622936') <!--substr()函数,截取子串 -->
{
print( 9,22,'有无存折:[ 4]',#SNBFLAG);
print(10,22,'存款方式:[ 4]',#SCASHFLAG);
print(11,22,'交易金额:[21]',#LTXAMT);
print(12,22,'流 水 号:[ 6]',$FD4);
}
else
{
print( 9,22,'存款方式:[ 4]',#SCASHFLAG);
print(10,22,'交易金额:[21]',#LTXAMT);
print(11,22,'流 水 号:[ 6]',$FD4);
}
}"
</PRINT>
</RESPONSE>
<IMPORT>CXCZ.IMP</IMPORT>
<RESPONSE>
<!--
<PACKAGE>配置返回数据的格式,它的格式如下所示:
CKPT|@actno|@custname|@txamt|@prodname|@txday|@brno|@custno|||||@avbal
其中CKPT为标识字符,
用于和返回的文件内容进行匹配,
具体方法是按行扫描返回文件,
找到以CKPT开头的行则把此行内容按|分割字段的格式依次赋给CKPT后面指定的这些@变量,
对于不需要的字段可以不写变量名,
需要注意的是在文件中在标识符CKPT和第一个变量@actno之间是没有|符号的 //???????
<PACKAGE>标签有如下属性:
·DEVICE-打印介质
PRINTER---打印机
SCREEN----屏幕
MSR---------磁条
·LINESPACE-行间距
·DESC-打印时的提示信息
·CHECK-打印之前的判断条件,如果条件不符合则不打印
格式为 变量名=值 或者 变量名?值
变量必须为#变量或者$变量
-->
<!--PRINTER---打印机,DESC-打印时的提示信息-->
<PACKAGE DEVICE="PRINTER" LINESPACE="11" DESC="请打印储蓄存款凭证"> <!-- 应答在打印机的过程 -->
CKPT|@actno|@custname|@txamt|@prodname|@opn_day|@brno|@custno|||||@avbal||||||@tx_type|||@ct_name||||||||||@id_type|@id_no|@br_name||@note_no||@acc_no|@tx_brno|@term|@term_type|@rate|
</PACKAGE>
<!--
<INIT>标签的内容是一段脚本,
它在找到第一个与PACKAGE匹配的行时执行,
且只会被执行一次,
在INIT的脚本中可以使用PACKAGE中的@变量
-->
<INIT>
"{
$KINDNO='00';
}"
</INIT>
<!-- <PRINT>标签的内容是一段脚本,
它在找到每一个与PACKAGE匹配的行时执行,
它可能会被执行多次,在PRINT脚本中可以使用PACKAGE中的@变量
-->
<PRINT>"{
dim @txday as string;
dim @txtime as string;
dim @year as string; //年
dim @month as string; //月
dim @day as string; //日
@txday = substr($HDATE,0,4)+'-'+substr($HDATE,4,2)+'-'+substr($HDATE,6,2);
@txtime = substr($SYSTIME,0,2)+':'+substr($SYSTIME,2,2)+':'+substr($SYSTIME,4,2);
@year = substr($HDATE,0,4);
@month = substr($HDATE,4,2);
@day = substr($HDATE,6,2);
//
print(11, 16,'[7 ] [20 ] [8]',@acc_no,#TXNAME,$HDATE);
if(substr(@actno,0,6) != '622936')//帐号和卡号分开
{
print(13, 11,'帐 号:[20 ] 户 名:[20 ] 开 户 行:[5 ] [20]',@actno,@custname,@brno,@actno);
}
else
{
print(13, 11,'帐 号:[20 ] 户 名:[20 ] 开 户 行:[5 ]',@actno,@custname,@brno);
}
print(15, 11,'储 种:[20 ] 利 率:[7 ]% 流 水 号:[6 ]',@prodname,@rate,$FD4);
if(substr(@actno,0,6) == '622936')//帐号和卡号分开
{
print(17, 11,'存 期:[2 ][2 ] 交易金额:[21 ] 交易日期:[8 ] [20]',@term,@term_type,ltrim(comma(@txamt,16)),$HDATE,@actno);
}
else
{
print(17, 11,'存 期:[2 ][2 ] 交易金额:[21 ] 交易日期:[8 ]',@term,@term_type,ltrim(comma(@txamt,16)),$HDATE);
}
print(19, 11,'凭 证 号:[16 ] 余 额:[21 ] 操 作 员:[4 ] [20]',@note_no,ltrim(comma(@avbal,16)),$TLRNO,@custname);
print(21, 11,'交易类型:[ 4 ] 现转标志:[4 ] 交 易 行:[7 ]',@tx_type,@ct_name,@tx_brno);
print(23,102,'[21]',ltrim(comma(@txamt,16)));<!-- ltrim(string):功能:去掉左边空格 -->
<!-- comma(string,[number]):功能:把一个数字型字符串转换为','分割的形式,返回值:string,字符串-->
print(26,102,'[21]',ltrim(comma(@avbal,16)));
print(29,102,'[20]',@prodname);
print(32,102,'[2 ][2 ]',@term,@term_type);
print(35,102,'[7]%',@rate);
print(38, 74,'[4 ] [4]',$TLRNO,$TLRNO);
}"
</PRINT>
</RESPONSE>
</TRANSACTION>