分类分类
2015-08-03 15:04作者:fang
本文实例讲述了Javascript连接Access数据库的方法。分享给大家供大家参考。具体实现方法如下:
var roc = roc || {};
roc.db = roc.db ||{};
//创建一个连接
roc.db.createDb = function(){
var conn = new ActiveXObject("ADODB.Connection"),
fso = new ActiveXObject("Scripting.FileSystemObject"),
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fso.GetFile("./db/Sigma.mdb");
conn.Open(connstr);//打开数据库
roc.db.conn = conn;
return roc.db.conn;
};
//获取连接
roc.db.getDb = function(){
if( roc.db.conn ){
return roc.db.conn;
}else{
return roc.db.createDb();
}
};
//关闭连接
roc.db.closeConn = function(){
if( roc.db.conn ){
roc.db.conn.close();
roc.db.conn = null;
}
};
//获取结果集
roc.db.getRs = function( sqlStr ){
var mysql = roc.dom.trim( sqlStr );
if(mysql == ''){return;}
var rs = new ActiveXObject("ADODB.Recordset"),
myConn = roc.db.getDb();
rs.open( sqlStr , myConn );
return rs;
};
//关闭结果集
roc.db.closeRs = function( rs ){
rs.close();
rs =null;
};
//更新、插入
roc.db.execute = function( sqlStr ){
var myConn = roc.db.getDb();
myConn.execute( sqlStr );
roc.db.closeConn();
};
/*---------Sigma:“我任你践踏我的尊严而毫不生气,是因为我爱你。”---------*/
roc.dom = roc.dom ||{};
roc.dom.id = function( id ){
if(typeof id == 'string' || id instanceof String) {
return document.getElementById(id);
} else if(id && id.nodeName && (id.nodeType == 1 || id.nodeType == 9)) {
return id;
}
return null;
};
/**
* @method tagName 根据标签获取指定dom元素
* @param {String} tagName 元素标签名称
* @param {HTMLElement} el 元素所属的文档对象 默认为当前文档
* @return {HTMLElement} 返回HTMLElement元素
*/
roc.dom.tagName = function(tagName, el) {
var el = el || document;
return el.getElementsByTagName(tagName);
};
//删除左右两端的空格
roc.dom.trim = function (str) {
return (str+'').replace(/(^s*)|(s*$)/g, "");
}
/**
* @method show 显示目标元素
* @param {Element} element 目标元素或目标元素的id
* @param {String} element 目标元素
*/
roc.dom.show = function (element) {
element = roc.dom.id(element);
element.style.display = '';
return element;
};
/**
* @method hide 隐藏目标元素
* @param {Element} element 目标元素或目标元素的id
* @param {String} element 目标元素
*/
roc.dom.hide = function (element) {
element = roc.dom.id(element);
element.style.display = 'none';
return element;
};
/**
* @method hasClass 判断元素是否含有 class
* @param {Element} el 元素
* @param {String} className class 名称
*/
roc.dom.hasClass = function(el, className){
var re = new RegExp('(^|s)' + className + '(s|$)');
return re.test(el.className);
};
/**
* @method addClass 给元素添加 class
* @param {Element} el 元素
* @param {String} className class 名称
*/
roc.dom.addClass = function(el, className){
if(!roc.dom.hasClass(el, className)){
el.className = el.className + ' ' + className;
}
};
/**
* @method removeClass 给元素移除 class
* @param {Element} el 元素
* @param {String} className class 名称
*/
roc.dom.removeClass = function(el, className){
var re = new RegExp('(^|s)' + className + '(?:s|$)')
el.className = el.className.replace(re, '$1');
};
/**
* date对象命名空间
*
* @namespace
* @name data
*/
roc.date = roc.date || {};
/**
* @method format 对目标日期对象进行格式化
* @param {Object} timestamp 目标日期对象
* @return {String} str 格式化后的时间
*/
roc.date.format = function(timestamp) {
if(timestamp =='' )return '';
var str = '',
temptime = new Date(Number(timestamp));
str += temptime.getFullYear() + '-';
str += temptime.getMonth() + 1 + '-';
str += temptime.getDate() + ' ';
str += String(temptime.getHours()).length > 1 ? (temptime.getHours() + ':') : ('0' + temptime.getHours() + ':');
str += String(temptime.getMinutes()).length > 1 ? (temptime.getMinutes()) : ('0' + temptime.getMinutes());
return str;
};
/**
* cookie对象命名空间
*
* @namespace
* @name cookie
*/
roc.cookie = roc.cookie || {};
/**
* @method set
* @param {String} name cookie的键
* @param {String} value cookie的值
* @param {String} expires 失效时间(小时)
* @param {String} domain domain域
* @param {String} path 路径
* @param {String} secure 是否支持https
*/
roc.cookie.set = function(name, value, expires, domain, path, secure) {
var text = encodeURIComponent(value), date = expires;
if(date && typeof date === 'number') {
date = new Date();
date.setTime(date.getTime() + (expires * 3600000));
}
if(date instanceof Date) {
text += '; expires=' + date.toUTCString();
}
if(domain) {
text += '; domain=' + domain;
}
if(path) {
text += '; path=/' + path;
} else {
text += '; path=/';
}
if(secure) {
text += '; secure';
}
document.cookie = name + '=' + text;
};
/**
* @method get
* @param {String} name cookie的键
*/
roc.cookie.get = function(name) {
var ret,
m;
if(name) {
if((m = document.cookie.match('(?:^| )' + name + '(?:(?:=([^;]*))|;|$)'))) {
ret = m[1] ? decodeURIComponent(m[1]) : '';
}
}
return ret;
};
roc.util = roc.util || {};
roc.util.loger = function( type ,msg ){
switch(type){
case 'pop':
alert(msg);
break;
case 'float':break;
default:break;
}
};
roc.util.resultBlink = function( msg ){
//操作闪烁提示
var $ = roc ,
opt = $.dom.id("optTip");
$.util.toogle = $.util.toogle || 0;
clearTimeout(roc.util.t);//调试
opt.innerHTML = msg ;
$.dom.show(opt);
opt.className = "blink" + $.util.toogle%2;
$.util.toogle++;
roc.util.t = setTimeout(function(){
$.dom.hide(opt);
},$.config.BLINK_DELAY);
};
roc.util.onlyInputNumber = function( id ){
//限制文本框、文本域只能输入数字
var $ = roc ,
num = $.dom.id( id );
if( num.tagName.toLowerCase() != 'input' || num.tagName.toLowerCase() != 'textarea' ){
return ;
}
$.util.addEvent( num , 'keypress' , function( e ){
var e = e || window.event ;
if(e.keyCode >= 48 && e.keyCode <= 57){alert()
return true;
}
return false;
});
};
roc.util.addEvent = function(elem, type, fn, useCapture) {
if(elem.addEventListener) { //DOM2.0
elem.addEventListener(type, fn, useCapture);
return true;
} else if(elem.attachEvent) { //IE5+
elem.attachEvent('on' + type, fn);
return true;
} else { //DOM 0
elem['on' + type] = fn;
}
};
roc.config = roc.config || {};
roc.config = roc.config ||{
BLINK_DELAY:3000,
SELECT_DELAY:1000
}
roc.search = roc.search || {};
roc.search.getValues = function( e ){
//批量获取表单值,用于插入
var $ = roc,
allIsNull = true,
wrapStr = function( num ){
return '"'+ num + '"';
},
vals =[];
for(var i in e[0]){
var v =$.dom.trim($.dom.id( e[0][i] ).value + '');
if( v != ''){
allIsNull = false;
}
switch( e[1][i] ){
case 'date':
case 'text':
vals.push( wrapStr(v) );
break;
case 'num':
vals.push( v );
break;
default:break;
}
}
if(allIsNull){
return false;
}
return vals.join(',');
};
roc.search.getSelSql = function(){
//组装搜索sql
var $ = roc,
addr = $.dom.trim($.dom.id("s_uaddr").value),
phone = $.dom.trim($.dom.id("s_uphone").value),
style = $.dom.trim($.dom.id("s_style").value),
year = $.dom.trim($.dom.id("s_year").value ),
month = $.dom.trim($.dom.id("s_month").value),
date = $.dom.trim($.dom.id("s_date").value),
datetype = $.dom.trim($.dom.id("s_datetype").value),
mysql = 'select * from inslist where 1=1 ',
datetypeName = datetype == 0 ? 'selltime':'addtime';
if( addr != ''){
mysql += ' and uaddr like "%' + addr + '%"';
}
if( phone != ''){
mysql += ' and uphone ="' + phone + '"';
}
if( style != ''){
mysql += ' and typeid = ' + style + '';
}
if( year !=''){
mysql += ' and year(' + datetypeName + ') = ' + year + '';
}
if( month !=''){
mysql += ' and month(' + datetypeName + ') = ' + month + '';
}
if( date !=''){
mysql += ' and date(' + datetypeName + ') = ' + date + '';
}
return mysql;
};
//搜索
roc.search.seeking = function(){
if( !roc.search.getLock()){return;}
var $ = roc ,
mySql = $.search.getSelSql();
html = $.search.getSel( mySql);
$.search.setLock(false);
$.dom.id("searchResult").innerHTML = html;
$.util.resultBlink("查询完毕");//闪烁
};
roc.search.getSel = function( sqlStr ){
//查询
var $ = roc,
rs = $.db.getRs( sqlStr ),
filtRs = function ( str ){//处理字段
return ( str + '' ) == 'null' ? '':str;
},
num = 1;
total_receive = 0,
total_prize = 0,
html = "<table class='list' id='memoryDetails'>"
+ "<colgroup>"
+ "<col class='pid' />"
+ "<col class='uaddr' />"
+ "<col class='phone' />"
+ "<col class='number'/>"
+ "<col class='money' span='3'/>"
+ "<col class='number' />"
+ "<col class='phone' />"
+ "<col class='number' />"
+ "<col class='date' />"
+ "<col class='date' />"
+ "</colgroup>"
+ "<tr class='secondRow doNotFilter'>"
+ " <th class='pid'> 序号 </th>"
+ " <th class='uaddr'> 用户地址 </th>"
+ " <th class='phone'> 用户电话 </th>"
+ " <th class='number'> 型号 </th>"
+ " <th class='money'> 代收款 </th>"
+ " <th class='money'> 货款 </th>"
+ " <th class='money'> 余额 </th>"
+ " <th class='number'> 安装人 </th>"
+ " <th class='phone'> 销售电话 </th>"
+ " <th class='number'> 备注 </th>"
+ " <th class='date'> 销售日期 </th>"
+ " <th class='date'> 记录时间 </th>"
+ "</tr>";
while(!rs.EOF)
{
var id = num ,//filtRs(rs.Fields("id") ),
uaddr = filtRs(rs.Fields("uaddr") ),
uphone = filtRs(rs.Fields("uphone") ),
typeid = filtRs(rs.Fields("typeid") ),
received = filtRs(rs.Fields("received") ),
prize = filtRs(rs.Fields("prize") ),
unreceived = filtRs(rs.Fields("unreceived") ),
installerid = filtRs(rs.Fields("installerid") ),
sellerid = filtRs(rs.Fields("sellerid") ),
remark = filtRs(rs.Fields("remark") ),
selltime = $.date.format(filtRs(rs.Fields("selltime") )),
addtime = $.date.format(filtRs(rs.Fields("addtime") ) );
html += "<tr jsselect='browzr_data'>"
+"<td class='pid'>" + id + "</td>"
+"<td class='uaddr'>" + uaddr + "</td>"
+"<td class='phone'>" + uphone + "</td>"
+"<td class='number'>" + typeid + "</td>"
+"<td class='money'>" + received + "</td>"
+"<td class='money'>" + prize + "</td>"
+"<td class='money'>" + unreceived + "</td>"
+"<td class='number'>" + installerid + "</td>"
+"<td class='phone'>" + sellerid + "</td>"
+"<td class='number'>" + remark + "</td>"
+"<td class='date'>" + selltime + "</td>"
+"<td class='date'>" + addtime + "</td>"
+"</tr>";
//统计项
total_receive += received,
total_prize += prize,
num++;
rs.moveNext();
}
html = html
+"<tr class='total doNotFilter'>"
+"<td class='pid'></td>"
+"<td class='uaddr'>Σ </td>"
+"<td class='number'></td>"
+"<td class='number'></td>"
+"<td class='number'>" + total_receive +"</td>"
+"<td class='number'>" + total_prize +"</td>"
+"<td class='number'>" + (total_prize - total_receive ) +"</td>"
+"<td class='number'></td>"
+"<td class='number'></td>"
+"<td class='number'></td>"
+"<td class='date'></td>"
+"<td class='date'></td>"
+"</table>";
$.db.closeRs(rs);
$.db.closeConn();
return html;
};
roc.search.getLock = function(){
//查询锁
if( typeof roc.search.searchLock == 'undefined' ){
roc.search.setLock(false);
}
return roc.search.searchLock;
};
roc.search.setLock = function( key ){
roc.search.searchLock = key;
};
//[[id],[type]]
roc.search.addEls = [[
"uaddr",
"uphone",
"typeid",
"received",
"prize",
"unreceived",
"installerid",
"sellerid",
"remark",
"selltime"
],[
'text',
'text',
'num',
'num',
'num',
'num',
'num',
'num',
'text',
'date'
]];
roc.search.insert = function(){
//插入安装单记录
var $ = roc,
getV = $.search.getValues( $.search.addEls );
if(!getV){
$.util.loger('pop','请填写信息后再保存!');
return;
}
var sqlStr = 'insert into inslist (uaddr,uphone,typeid,received,prize,unreceived,installerid,sellerid,remark,selltime) values ('+ getV +')';
$.db.execute( sqlStr );
$.util.resultBlink('保存安装单成功');
};
/*显示与隐藏*/
roc.dom.switchDiv = function( objDiv){
var $ = roc ,
cookieName = objDiv.id + 'cookie';
if( objDiv.style.display =='' || objDiv.style.display =='none' ){
$.dom.show( objDiv );
$.cookie.set(cookieName,0,9999999);
}else{
$.dom.hide( objDiv );
$.cookie.set(cookieName,1,9999999);
}
};
//货物型号操作
roc.tstyle = roc.tstyle || {};
roc.tstyle.els = [
['tname','tprize','tdesc'],
['text','text','text']
];
roc.tstyle.insert = function(){
//插入记录
var $ = roc,
getV = $.search.getValues( $.tstyle.els );
if( !getV ){
$.util.loger('pop','请填写信息后再保存!');
return;
}
var sqlStr = 'insert into type ( tname , tprize , tdesc ) values ('+ getV +')';
//$.util.loger('pop',sqlStr);
$.db.execute( sqlStr );
$.util.resultBlink('保存成功!');
$.util.flushInput($.tstyle.els);
};
roc.util.flushInput = function( els ){
var $ = roc ;
for(var i = 0 ; i < els.length ; i ++){
var e = $.dom.id(els[i]+'');
/* if(e.tagName == 'input' && e.type =='text'){*/
e.value = '';
/*}*/
}
};
//type{id,tname,tprize}
roc.tstyle.getStyle = function( optId ){
//获取类型列表
var $ = roc ,
mySql = 'select * from type where isdel = 0 ',
rs = $.db.getRs( mySql ),
filtRs = function ( str ){//处理字段
return (str+'')=='null' ? '':str;
},
myOpt = $.dom.id( optId ),
optIndex = 1;
while(! rs.EOF ){
var id = filtRs(rs.Fields('id')),
prize = filtRs(rs.Fields('tprize')),
name = filtRs(rs.Fields('tname'));
desc = filtRs(rs.Fields('tdesc'));
myOpt.options[optIndex] = new Option( name , id );
myOpt.options[optIndex].title = '价格:' + prize + ' | 描述:' + desc;
optIndex++;
rs.moveNext();
}
$.db.closeRs(rs);
$.db.closeConn();
};
;(function(){
var $ = roc ;
$.dom.id("save").onclick = function(){
//保存
$.search.insert();
}
$.dom.id("searchBtn").onclick = function(){
//提检
$.search.seeking();
}
//初始化查询安装单 年
for(var i = 0 ; i <= 10 ; i++ ){
$.dom.id("s_year").options[i] = new Option(2010 + i , 2010 + i );
if( 2010+i+'' == (new Date()).getYear() ){
$.dom.id("s_year").options[i].selected = true;
}
}
//初始化查询安装单月份
for(var i = 1 ; i <= 12 ; i++ ){
$.dom.id("s_month").options[i] = new Option(i,i);
}
//提检条件字段id 修改触发查询
$.dom.s_fields = ["s_uaddr","s_uphone","s_style","s_datetype",'s_year','s_month','s_date'];
for(var i = 0 ; i < $.dom.s_fields.length ; i ++){
var f = $.dom.s_fields[i];
$.dom.id(f).onpropertychange = function(){
if(event.propertyName == 'value'){
$.search.setLock(true);
if($.search.t){
clearTimeout($.search.t);
}
$.search.t = setTimeout(function(){
$.search.seeking();
},$.config.SELECT_DELAY);
}
}
$.dom.id(f).onfocus = function(){
$.dom.addClass(this,"focusit");
};
$.dom.id(f).onblur = function(){
$.dom.removeClass(this,"focusit");
};
}
$.dom.id('saveType').onclick = function(){
//货物类型
$.tstyle.insert();
};
//取出类型列表
$.tstyle.getStyle('typeid');
$.tstyle.getStyle('s_style');
/* //$.dom.id("s_uaddr").onkeyup = $.dom.id("s_uphone").onkeyup = $.dom.id("s_style").onkeyup = function(){
$.dom.id("s_uaddr").onblur = $.dom.id("s_uphone").onblur = $.dom.id("s_style").onblur = function(){
$.dom.removeClass(this,"focusit");
}
$.dom.id("s_uaddr").onfocus = $.dom.id("s_uphone").onfocus = $.dom.id("s_style").onfocus = function(){
$.dom.addClass(this,"focusit");
}*/
//导航样式切换
for(var i = 0 ; i < $.search.addEls.length ; i++ ){
var curObj = $.dom.id($.search.addEls[0][i]+'');
curObj.onfocus = function(){
$.dom.addClass(this,'focusit');
}
curObj.onblur = function(){
$.dom.removeClass(this,'focusit');
}
}
//添加导航点击事件
var lis = $.dom.tagName('li',$.dom.id("ulNav"));
for(var i = 0 ; i < lis.length ; i ++ ){
$.dom.hide( $.dom.id(lis[i].id + 'Div'));
lis[i].onclick = function(){
for(var n = 0 ; n < lis.length ; n ++ ){
$.dom.removeClass(lis[n],'click');
$.dom.hide( $.dom.id(lis[n].id + 'Div'));
}
$.dom.show( $.dom.id(this.id + "Div"));
$.dom.addClass(this,"click");
$.cookie.set('showWhichDiv', this.id);
}
}
//默认的载入显示页面
var showWhichDiv = $.cookie.get("showWhichDiv") || "searchList";
$.dom.addClass($.dom.id(showWhichDiv),"click");
$.dom.show($.dom.id(showWhichDiv + 'Div'));
//日期控件,感谢此控件开发者的分享,祝你有个好女朋友!
J('#selltime').calendar({ format:'yyyy-MM-dd HH:mm:ss' });
var numFields = ['s_uphone','s_date','uphone','received','prize','unreceived','installerid'];
for( var i = 0 ; i < numFields.length ; i ++ ){
$.util.onlyInputNumber( numFields[i] );
}
})();
希望本文所述对大家的javascript程序设计有所帮助。
相关