aardio - MsSql数据库+虚表示例

给同事写了个数据录入的小程序,算是一个简单的【mssql数据库+虚表】示例。

主窗口

主窗口设计界面:

主窗口运行界面:

主窗口代码:

import fonts.fontAwesome;
import win.ui;
import win.ui.ctrl.vlistEx;
/*DSG{{*/
mainForm = win.form(text="张某的程序";right=959;bottom=591;image=$"\res\20090526_315b100ca64e65d61fb7Wh5pSZjX9laE.jpg";bkBottom=0;bkLeft=0;bkRight=0;bkTop=0;border="none";exmode="none";maximize=1;mode="popup";sysmenu=false;title=false)
mainForm.add(
datetimepick={cls="datetimepick";left=55;top=549;right=167;bottom=572;db=1;dl=1;edge=1;font=LOGFONT(h=-16);z=8};
datetimepick2={cls="datetimepick";left=198;top=549;right=314;bottom=572;db=1;dl=1;edge=1;font=LOGFONT(h=-16);z=12};
edit={cls="edit";left=380;top=549;right=511;bottom=572;db=1;dl=1;edge=1;font=LOGFONT(h=-16);tabstop=1;z=9};
plus={cls="plus";text='\uF044 添加';left=744;top=543;right=838;bottom=578;bgcolor=-5197169;db=1;dl=1;font=LOGFONT(h=-16;name='FontAwesome');notify=1;z=4};
plus2={cls="plus";text='\uF002 查询';left=526;top=543;right=620;bottom=578;bgcolor=-5197169;db=1;dl=1;font=LOGFONT(h=-16;name='FontAwesome');notify=1;z=3};
plus3={cls="plus";text='\uF122 退出';left=849;top=543;right=943;bottom=578;bgcolor=-5197169;db=1;dr=1;font=LOGFONT(h=-16;name='FontAwesome');notify=1;z=5};
plus4={cls="plus";left=7;top=4;right=28;bottom=27;dl=1;dt=1;foreRepeat="stretch";foreground="\res\png-0056.png";z=6};
plus5={cls="plus";text='\uF045 导出';left=635;top=543;right=729;bottom=578;bgcolor=-5197169;db=1;dl=1;font=LOGFONT(h=-16;name='FontAwesome');notify=1;z=7};
static={cls="static";text="日期";left=15;top=549;right=55;bottom=572;color=16777215;db=1;dl=1;font=LOGFONT(h=-16);transparent=1;z=10};
static2={cls="static";text="至";left=176;top=549;right=196;bottom=572;color=16777215;db=1;dl=1;font=LOGFONT(h=-16);transparent=1;z=11};
static3={cls="static";text="客户";left=339;top=549;right=379;bottom=572;color=16777215;db=1;dl=1;font=LOGFONT(h=-16);transparent=1;z=13};
vlist={cls="vlistEx";text="自定义控件";left=3;top=30;right=958;bottom=527;border=1;db=1;dl=1;dr=1;dt=1;frame=1;z=1};
张某的程序={cls="static";text="张某的程序";left=36;top=4;right=343;bottom=31;color=16777215;dl=1;dt=1;font=LOGFONT(h=-16);transparent=1;z=2}
)
/*}}*/

//定义按钮样式
var skin = {
	background={
		active=0xFFD3E0BC;
		default=0xFF8FB2B0;
		hover=0xFF928BB3
	}
}
mainForm.plus.skin(skin)
mainForm.plus2.skin(skin)
mainForm.plus3.skin(skin)
mainForm.plus5.skin(skin)

//连接mssql数据库
import sqlServerEx
var db=sqlServerEx("221.1.2.3",11433,"zhang","zhang","123456");
if !db {
	win.msgboxErr("连接数据库失败!程序自动退出")
	//mainForm.close()
	//win.quitMessage()
	return ; 
}

//查询mssql数据库,并显示到虚表中
mainForm.plus2.oncommand = function(id,event){
    var kehu = (#mainForm.edit.text>0)?"and kehu='"++mainForm.edit.text++"'":""
	var tb = db.getTable(`select
	id,
	riqi as 日期,
	kehu as 客户,
	pinming as 品名,
	jianshu as 件数,
	guige as 规格,
	kouqianzhongliang as 扣前重量,
	kouhouzhongliang as 扣后重量,
	kouqianzhongliang-kouhouzhongliang as 扣除重量,
	danjia as 单价,
	jine as 金额,
	baozhuangdanjia as 包装单价,
	baozhuangjine as 包装金额,
	rengongdanjia as 人工单价,
	rengongjine as 人工金额,
	zhuangchedanjia as 装车单价,
	zhuangchejine as 装车金额,
	kouqianjine as 扣前金额,
	kouhoujine as 扣后金额,
	kouchujine as 扣除金额,
	shifujine as 实付金额,
	shijian as 操作时间
	from jilu
	where riqi>='`++mainForm.datetimepick.text++`'
	and riqi<='`++mainForm.datetimepick2.text++`'`
	++ kehu ++
	`order by id`)
	// 添加合计行
	var sum={}
	for (i=1;#tb){
		tb[i]["id"]=i //将id改为序号
		for (c=1;#tb.fields){
			sum[tb.fields[c]]:=0
			if math.isFinite(tb[i][tb.fields[c]])
			sum[tb.fields[c]]+=tonumber(tb[i][tb.fields[c]])
		}
	}
	sum["id"]=""
	sum["日期"]="合计"
	table.push(tb,sum)
	mainForm.vlist.setTable(tb)
}

import win.ui.simpleWindow
win.ui.simpleWindow(mainForm)
mainForm.show();

//退出程序
mainForm.plus3.oncommand = function(id,event){
	//mainForm.close()
	win.quitMessage()
}

//载入“添加”窗口
mainForm.plus.oncommand = function(id,event){
	var frmChild = mainForm.loadForm("\dlg\addjilu.aardio",db);
	frmChild.show();
}

//导出csv格式文件
mainForm.plus5.oncommand = function(id,event){
    if mainForm.vlist.count=0 {
    	mainForm.msgboxErr("没有查询内容!")
    	return ;
    } 
    import fsys.dlg
    var f=fsys.dlg.save("*.csv|*.csv","请选择要导出的文件",,mainForm)
	if !f return ;  
	
    
    var csv=""
    var items=mainForm.vlist.getItems()
    for (i=1;#items){
    	var it=string.join(items[i],",")
		csv+=it+'\r\n'
    }
    
	import fsys.file
	var f=fsys.file(f,"w")
	if f.write(string.fromto(csv)){
		mainForm.msgbox("文件导出完毕!")
	}else{
		mainForm.msgboxErr("文件导出失败!")
	} 
	f.close()
}

return win.loopMessage();

“添加” 窗口

1、窗口设计界面

2、窗口运行界面

3、代码

import win.ui;
import fonts.fontAwesome
import win.dlg.message
/*DSG{{*/
var winform = win.form(text="aardio form";right=699;bottom=469;image=$"\res\20090526_315b100ca64e65d61fb7Wh5pSZjX9laE.jpg";bkBottom=0;bkLeft=0;bkRight=0;bkTop=0;border="none";max=false;min=false)
winform.add(
datetimepick={cls="datetimepick";left=100;top=44;right=270;bottom=70;edge=1;font=LOGFONT(h=-16);z=3};
plus={cls="plus";text='\uF044 保存';left=579;top=336;right=673;bottom=371;bgcolor=-5197169;db=1;dr=1;font=LOGFONT(h=-16;name='FontAwesome');notify=1;z=1};
plus2={cls="plus";text='\uF122 取消';left=579;top=392;right=673;bottom=427;bgcolor=-5197169;db=1;dr=1;font=LOGFONT(h=-16;name='FontAwesome');notify=1;z=2};
plus3={cls="plus";left=3;top=2;right=24;bottom=25;dl=1;dt=1;foreRepeat="stretch";foreground="\res\png-0056.png";z=5};
static={cls="static";text="添加记录";left=32;top=2;right=147;bottom=29;color=16777215;dl=1;dt=1;font=LOGFONT(h=-16);transparent=1;z=4};
static2={cls="static";text="日期";left=29;top=46;right=103;bottom=73;color=16777215;dl=1;dt=1;font=LOGFONT(h=-16);transparent=1;z=6}
)
/*}}*/

var args={...}
if #args<2{
	winform.msgboxErr("数据库无效")
	winform.close()
	win.quitMessage()
	return winform; 
}
var db = args[2]
win.dlg.message(winform)
var fields1={"kehu","pinming","jianshu","guige","danjia","baozhuangdanjia","rengongdanjia","zhuangchedanjia","kouchubili"}
var names1 ={"客户","品名"   ,"件数"   ,"规格" ,"单价"  ,"包装单价"       ,"人工单价"     ,"装车单价"       ,"扣除比例"}
var fields2={"kouqianzhongliang","kouhouzhongliang","jine","baozhuangjine","rengongjine","zhuangchejine","kouqianjine","kouhoujine","kouchujine","shifujine"}
var names2 ={"重量"             ,"扣后重量"        ,"金额","包装金额"     ,"人工金额"   ,"装车金额"     ,"扣前金额"   ,"扣后金额"  ,"扣除金额"  ,"实付金额"}
var edits={}
for(i=1;math.max(#fields1,#fields2) ;1){
    var top=50+i*35
    var height=30
    if i<=#fields1{
    	winform.add({
			{cls="static";text=names1[i];left=30;top=top;right=100;bottom=top+height;color=16777215;dl=1;dt=1;font=LOGFONT(h=-16);transparent=1;z=7};
		})
    	edits[fields1[i]]=winform.add({
			{cls="edit";tabstop=i;left=100;top=top;right=270;bottom=top+height;edge=1;font=LOGFONT(h=-16);z=8};
    	})[1]
    }
    if i<=#fields2{
    	winform.add({
			{cls="static";text=names2[i];left=300;top=top;right=370;bottom=top+height;color=16777215;dl=1;dt=1;font=LOGFONT(h=-16);transparent=1;z=7};
		})
    	edits[fields2[i]]=winform.add({
			{cls="edit";left=370;top=top;right=540;bottom=top+height;edge=1;font=LOGFONT(h=-16);z=8};
    	})[1]
    }
}

winform.plus2.oncommand = function(id,event){
	winform.close()
}

var skin = {
	background={
		active=0xFFD3E0BC;
		default=0xFF8FB2B0;
		hover=0xFF928BB3
	}
}
winform.plus.skin(skin)
winform.plus2.skin(skin)

edits_oncommand = function(id,event){
    var jianshu=tonumber(edits["jianshu"].text):0
    var guige= tonumber(edits["guige"].text):0
    var danjia= tonumber(edits["danjia"].text):0
    var baozhuangdanjia= tonumber(edits["baozhuangdanjia"].text):0
    var rengongdanjia= tonumber(edits["rengongdanjia"].text):0
    var zhuangchedanjia= tonumber(edits["zhuangchedanjia"].text):0
    var kouchubili = tonumber(edits["kouchubili"].text):0
   
    var kouqianzhongliang= math.round(jianshu*guige,2)
    var kouhouzhongliang = math.round(jianshu*guige*kouchubili,2)
    var jine = math.round(kouqianzhongliang*danjia,2)
 	var baozhuangjine = math.round(baozhuangdanjia*jianshu,2)
    var rengongjine = math.round(rengongdanjia*kouqianzhongliang,2)
    var zhuangchejine = math.round(zhuangchedanjia*jianshu,2)
    var kouqianjine = jine + baozhuangjine + rengongjine + zhuangchejine
    var kouhoujine = math.round(kouhouzhongliang*danjia,2) + baozhuangjine + rengongjine + zhuangchejine
    var kouchujine = math.round( kouqianjine - kouhoujine,2)
    var shifujine = math.floor(kouhoujine/10,0)*10
    
    edits["kouqianzhongliang"].text=tostring(kouqianzhongliang)
    edits["kouhouzhongliang"].text=tostring(kouhouzhongliang)
    edits["jine"].text=tostring(jine)
    edits["baozhuangjine"].text=tostring(baozhuangjine)
    edits["rengongjine"].text=tostring(rengongjine)
    edits["zhuangchejine"].text=tostring(zhuangchejine)
    edits["kouqianjine"].text=tostring(kouqianjine)
    edits["kouhoujine"].text=tostring(kouhoujine)
    edits["kouchujine"].text=tostring(kouchujine)
    edits["shifujine"].text=tostring(shifujine)
}

fields1={"jianshu","guige","danjia","baozhuangdanjia","rengongdanjia","zhuangchedanjia","kouchubili"}
for(i=1;#fields1;1){
	edits[fields1[i]].oncommand = edits_oncommand
}

winform.plus.oncommand = function(id,event){
	import console
	var names="riqi,"
	var values="'"+winform.datetimepick.text+"',"
	for k,v in edits{
		if !#v.text{
   			winform.msgboxErr("信息没有填写完整!","错误")
   			return ; 
   		}
		names+=k+","
   		if k="kehu" or k="pinming"{
   			values+="'"+v.text+"',"
		}else {
			values+=(#v.text?v.text:"0")+","
		}
	}
	
	names=string.trimright(names,",")
	values=string.trimright(values,",")
	var sql="insert into jilu("+names+") values("+values+")"
	if db.exec(sql) {
		for(hwnd,ctrl in winform.eachControlEx("edit")){
			ctrl.text=""
		}
		winform.msgOk("已添加",1500)
	}else {
		winform.msgErr("添加失败",1500)
	}
	
}

import win.ui.simpleWindow
win.ui.simpleWindow(winform)
winform.show();
edits["kehu"].setFocus()

win.loopMessage();
return winform;

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卢光庆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值