📄 highquery0.3.htm
字号:
<!--
/********************************************
* 文件名称:highquery.htm
* 功能描述:高级查询控件
* 创建日期:2008-07-18
* @author:codeslave
* @version 0.3
*********************************************/
-->
<html>
<head>
<title>高级查询控件</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link type="text/css" rel="stylesheet" href="style.css" />
<script type="text/javascript" src="check.js"></script>
<script type="text/javascript" src="calendar.js"></script>
<script type="text/javascript">
<!--
/********************************字段信息***********************************/
var arrField = new Array('Name','Date_Type','DateTime_Type','No','Remark','Detail','');
var arrAlias = new Array('名称','日期','日期时间','编号','备注','明细选项','请选择一个字段');
var arrType = new Array('varchar','date','datetime','number','varchar','varchar','');
var arrLength = new Array('100','19','19','10','500','3','0');
//-->
</script>
</head>
<body>
<table id="highQuery" class="HQ_TABLE">
<th class="HQ_TH">连接</th>
<th class="HQ_TH">左括号</th>
<th class="HQ_TH">字段</th>
<th class="HQ_TH">运算符</th>
<th class="HQ_TH">内容</th>
<th class="HQ_TH">右括号</th>
<th class="HQ_TH">操作</th>
</table>
<script type="text/javascript">
<!--
/******************************以下为初始化部分******************************/
var autoId = 0; // 自增变量
// 取得一般查询条件的html文件(日期)。
function getDateHtml(txtId)
{
var strHtml = "<input type='button' class='HQ_BUTTON' onClick=selDate(document.getElementById('" + txtId + "')) value='选择'>";
strHtml += "<input type='button' class='HQ_BUTTON' onClick=clearContent(document.getElementById('" + txtId + "')) value='清除'>";
return strHtml;
}
// 取得in或not in查询条件的html文件(日期)。
function getDateInHtml(txtId)
{
var strHtml = "<input type='button' class='HQ_BUTTON' onClick=selDateIn(document.getElementById('" + txtId + "')) value='选择'>";
strHtml += "<input type='button' class='HQ_BUTTON' onClick=clearContent(document.getElementById('" + txtId + "')) value='清除'>";
return strHtml;
}
// 取得一般查询条件的html文件(日期时间)。
function getDateTimeHtml(txtId)
{
var strHtml = "<input type='button' class='HQ_BUTTON' onClick=selDateTime(document.getElementById('" + txtId + "')) value='选择'>";
strHtml += "<input type='button' class='HQ_BUTTON' onClick=clearContent(document.getElementById('" + txtId + "')) value='清除'>";
return strHtml;
}
// 取得in或not in查询条件的html文件(日期时间)。
function getDateTimeInHtml(txtId)
{
var strHtml = "<input type='button' class='HQ_BUTTON' onClick=selDateTimeIn(document.getElementById('" + txtId + "')) value='选择'>";
strHtml += "<input type='button' class='HQ_BUTTON' onClick=clearContent(document.getElementById('" + txtId + "')) value='清除'>";
return strHtml;
}
// 取得like查询条件的html文本。
function getLikeHtml(id)
{
var strHtml = "<select id='darkSign_" + id + "'><option value='0'>%</option><option value='1'>_</option></select>";
strHtml += " <span id='darkB_" + id + "' onClick=addDarkSign('b') style='font-weight: bold;cursor: hand'>←→</span>" +
" <span id='darkL_" + id + "' onClick=addDarkSign('l') style='font-weight: bold;cursor: hand'>←</span>" +
" <span id='darkR_" + id + "' onClick=addDarkSign('r') style='font-weight: bold;cursor: hand'>→</span>";
return strHtml;
}
// 取得is查询条件的html文本。
function getIsHtml(id)
{
var strHtml = "<span id='null_" + id + "' onClick=document.getElementById('bContent_" + id + "').value='null'" +
" style='font-weight: bold;cursor: hand'>○</span>" +
" <span id='notNull_" + id + "' onClick=document.getElementById('bContent_" + id + "').value='not null'" +
" style='font-weight: bold;cursor: hand'>●</span>";
return strHtml;
}
// 初始化字段列表。
function initFieldList(id)
{
var strField = "<select onChange='changeField()' id='field_" + id + "'>";
for(var i = 0; i < arrField.length; i++)
{
strField += "<option value='" + arrField[i] + "'>" + arrAlias[i] + "</option>"
}
strField += '</select>';
return strField;
}
// 初始化条件相连的运算符。
function initJoin(id)
{
var strJoin = "<select id='join_" + id + "'><option value='and'>AND</option><option value='or'>OR</option></select>";
return strJoin;
}
// 初始化条件运算符。
function initCondition(id)
{
var strCondition = "<select onChange='changeCondition()' id='condition_" + id + "'>" +
"<option value='='>=</option><option value='<'><</option>" +
"<option value='<='><=</option><option value='>'>></option>" +
"<option value='>='>>=</option><option value='<>'><></option>" +
"<option value='in'>IN</option><option value='not_in'>NOT IN</option>" +
"<option value='between'>BETWEEN</option><option value='is'>IS</option>" +
"<option value='like'>LIKE</option></select>";
strCondition += "<span id='signPanel_" + id + "'></span>" // 存放查询符号,主要用于like和is查询
return strCondition;
}
// 初始化条件内容。
function initContent(id)
{
var strContent = "<input class='HQ_TEXT' id='bContent_" + id + "' maxLength=" + arrLength[arrLength.length-1] + ">";
strContent += "<span id='bChoicePanel_" + id + "'></span>"; // 存放第一个文本控件的"选择"和"清除"按钮
strContent += "<span id='eContentPanel_" + id + "'></span>"; // 存放第二个文本控件、以及eChoicePanel面板和他内部的"选择"和"清除"按钮
return strContent;
}
// 初始化第一行。
function initFristRow()
{
highQuery.insertRow();
var newRow = highQuery.rows[highQuery.rows.length - 1];
newRow.id = "row_" + autoId;
newRow.insertCell();
newRow.cells[0].className = "HQ_TD";
newRow.cells[0].innerHTML = " ";
newRow.insertCell();
newRow.cells[1].className = "HQ_TD";
newRow.cells[1].innerHTML = "<span id='lParenthesisPanel_" + autoId + "' style='font-weight: bold;'></span>"; // 左括号面板
newRow.insertCell();
newRow.cells[2].className = "HQ_TD";
newRow.cells[2].innerHTML = initFieldList(autoId);
newRow.insertCell();
//newRow.cells[3].width = 200;
newRow.cells[3].className = "HQ_TD";
newRow.cells[3].innerHTML = initCondition(autoId);
newRow.insertCell();
newRow.cells[4].className = "HQ_TD";
newRow.cells[4].innerHTML = initContent(autoId);
newRow.insertCell();
newRow.cells[5].className = "HQ_TD";
newRow.cells[5].innerHTML = "<span id='rParenthesisPanel_" + autoId + "' style='font-weight: bold;'></span>"; // 右括号面板
newRow.insertCell();
newRow.cells[6].className = "HQ_TD";
newRow.cells[6].innerHTML = "<input type='button' class='HQ_BUTTON' value='+(' onClick=addParenthesis('" + autoId + "','l')> " +
"<input type='button' class='HQ_BUTTON' value='+)' onClick=addParenthesis('" + autoId + "','r')> " +
"<input type='button' class='HQ_BUTTON' value='-(' onClick=removeParenthesis('" + autoId + "','l')> " +
"<input type='button' class='HQ_BUTTON' value='-)' onClick=removeParenthesis('" + autoId + "','r')> " +
"<input type='button' class='HQ_BUTTON' value='增加条件' onClick='addRow()'>";
var objField = document.getElementById("field_" + autoId); // 取得当前的字段选择控件对象
if(objField.options.length > 0)
objField.options.selectedIndex = objField.options.length - 1; // 选中字段列表的最后一个"请选择一个字段"
autoId += 1; // autoId加1
}
// 初始化第一行。
initFristRow();
/******************************以下为条件增删部分******************************/
// 新添加一行。
function addRow()
{
highQuery.insertRow();
var newRow = highQuery.rows[highQuery.rows.length - 1];
newRow.id = "row_" + autoId;
newRow.insertCell();
newRow.cells[0].className = "HQ_TD";
newRow.cells[0].innerHTML = initJoin(autoId);
newRow.insertCell();
newRow.cells[1].className = "HQ_TD";
newRow.cells[1].innerHTML = "<span id='lParenthesisPanel_" + autoId + "' style='font-weight: bold;'></span>"; // 左括号面板
newRow.insertCell();
newRow.cells[2].className = "HQ_TD";
newRow.cells[2].innerHTML = initFieldList(autoId);
newRow.insertCell();
newRow.cells[3].className = "HQ_TD";
newRow.cells[3].innerHTML = initCondition(autoId);
newRow.insertCell();
newRow.cells[4].className = "HQ_TD";
newRow.cells[4].innerHTML = initContent(autoId);
newRow.insertCell();
newRow.cells[5].className = "HQ_TD";
newRow.cells[5].innerHTML = "<span id='rParenthesisPanel_" + autoId + "' style='font-weight: bold;'></span>"; // 右括号面板
newRow.insertCell();
newRow.cells[6].className = "HQ_TD";
newRow.cells[6].innerHTML = "<input type='button' class='HQ_BUTTON' value='+(' onClick=addParenthesis('" + autoId + "','l')> " +
"<input type='button' class='HQ_BUTTON' value='+)' onClick=addParenthesis('" + autoId + "','r')> " +
"<input type='button' class='HQ_BUTTON' value='-(' onClick=removeParenthesis('" + autoId + "','l')> " +
"<input type='button' class='HQ_BUTTON' value='-)' onClick=removeParenthesis('" + autoId + "','r')> " +
"<input type='button' class='HQ_BUTTON' value='删除' onClick=removeRow('" + newRow.id + "')>";
var objField = document.getElementById("field_" + autoId); // 取得当前的字段选择控件对象
if(objField.options.length > 0)
objField.options.selectedIndex = objField.options.length - 1; // 选中字段列表的最后一个"请选择一个字段"
autoId += 1; // autoId加1
}
// 删除行。
function removeRow(rowId)
{
var trRow = document.getElementById(rowId);
trRow.removeNode(true);
}
// 生成条件查询语句。
function interpreter()
{
var arrReturn = new Array();
var strCondition = "";
var strAliasCondition = "";
var isNoProblem = true;
// 语法检测
if(!checkExpression())
{
isNoProblem = false;
arrReturn[0] = "";
arrReturn[1] = "";
return arrReturn;
}
for(var i = 1; i < highQuery.rows.length; i++)
{
var id = highQuery.rows[i].id.split("_")[1];
var objField = document.getElementById("field_" + id); // 取得字段选择控件对象
var objCondition = document.getElementById("condition_" + id); // 取得条件运算符选择控件对象
var objBContent = document.getElementById("bContent_" + id); // 取得第一个条件内容文件控件对象
var objLParenthesisPanel = document.getElementById("lParenthesisPanel_" + id); // 取得左括号面板对象
var objRParenthesisPanel = document.getElementById("rParenthesisPanel_" + id); // 取得右括号面板对象
var strType = arrType[objField.selectedIndex]; // 内容类别
var strAlias = arrAlias[objField.selectedIndex]; // 字段别名
if(i > 1) // 如果不是第一个条件就要加上连接条件符号(AND,OR)。
{
var objJoin = document.getElementById("join_" + id); // 条件相连的运算符
strCondition += " " + objJoin.value + " ";
strAliasCondition += " " + objJoin.value + " ";
}
// 加上左括号
strCondition += objLParenthesisPanel.outerText;
strAliasCondition += objLParenthesisPanel.outerText;
if(objField.value != "") // 字段是否为空
{
strCondition += objField.value;
strAliasCondition += strAlias;
}
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -