一药库项目,需要万能查询功能没有什么具体的需求希望大家帮助想想设计思路不要太复杂的就可以!
解决方案 »
- winform中怎么实现任务栏闪烁几下后停止,并保持闪烁的颜色
- 如何得到 单元格的中心坐标
- 急问c#入门经典(第三版),c#高级编程(第三版)网上有电子版吗?知道的给个连接,谢谢了!!!
- 如何通过内容取到他所在数组的INDEX的数值?
- 请问怎么用c#读取出access里用OLE对象存储的word的字段?
- 简单的动态SQL语句求助
- 怎样才能控制不让鼠标拖动窗口
- SQL中树形结构数据转换成tree逻辑数据的问题
- 新手来问,这句话报错:session["test"]=1;if ((int)session["test"]==1){~~}
- 马上要用C#做数据库了,能帮我推荐一本c#数据库方面的书吗?最好是可以在网上下载的,先谢了:)
- 求:万能查询,设计思路!结帖给分! 前边发过的同名帖子,已经结帖。先新开帖,欢迎大家继续讨论。
- 如何将一个表的数据Copy到另外的一个表中去
sql += "客户选择字段1,";
sql += "客户选择字段2";
...
sql += " from tableName "
sql += " where " + 客户要的条件
sql += " Order by " + " 客户要的排序方式"这样就生成了,然后查询返回一个dataset;
dataGrid.DataSouce = dataset.Tables[0].DefaultView;就好了
就是用户可以随意输入查询条件,保存成树节点,点击节点就根据这个节点的查询条件查询思路就是:
把所有的需要查询的字段列出来
关系作一个,比如大于,小于,包含之类的
还有就是值然后根据输入生成相应的sql语句,可以存放在一个字段里
每次查询的时候去根据这个sql语句来查
再下拉菜单的onchange事件中再加载下一个下拉菜单
这一系列控件包括:文本框、数值区间、CheckBox、ComboBox、DateTime或DateTime区间、RadioBox等。都从同一的条件接口派生。
然后定义一个对话框基类,该对话框能自动搜索自控件中实现上述条件接口的控件,获取相应条件字符串,组合成为最终的条件字符串。
最后,从该对话框派生,放置各种需要的控件,设置参数属性。
using System;
using System.Data;
using System.Data.SqlClient;namespace BLL
{
/// <summary>
/// Query 的摘要说明。
/// </summary>
public class Query
{
public bool iniDropFieldName(System.Web.UI.WebControls.DropDownList dropFieldName, string strTableName)
{
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(dataWorkClass.SQLConnectionString);
//返回当前环境中可查询的指定表或视图的列信息。
System.Data.SqlClient.SqlCommand comm = new System.Data.SqlClient.SqlCommand("sp_columns",conn);
comm.CommandType=System.Data.CommandType.StoredProcedure;
//指定表名。
comm.Parameters.Add("@table_name",System.Data.SqlDbType.NVarChar,384);
comm.Parameters["@table_name"].Value = strTableName; try
{
conn.Open();
System.Data.SqlClient.SqlDataAdapter sqlDataAdapter = new System.Data.SqlClient.SqlDataAdapter(comm);
DataSet ds = new DataSet();
sqlDataAdapter.Fill(ds); dropFieldName.DataSource = ds;
dropFieldName.DataTextField = "COLUMN_NAME";
dropFieldName.DataBind(); if (ds.Tables[0].Rows.Count<1)
{
_strEorr = "对不起,在数据库中找不到表‘" + strTableName + "’或该表为空表!";
return false;
}
else
{
_strEorr = "";
return true;
}
}
catch(System.Exception ex)
{
_strEorr = ex.Message;
}
finally
{
conn.Close();
} return false;
}
public System.Data.DataSet QueryData(string strSQL)
{
DataSet ds = new DataSet();
ds = dataWorkClass.DataBind(strSQL); if (ds!=null)
{
_intRecordCount = ds.Tables[0].Rows.Count;
_strEorr = ""; return ds;
}
else
{
_strEorr = dataWorkClass.EorrMessage;
_intRecordCount = 0;
} return null;
}}
/// 条件
/// 作者:JasonHeung
/// </summary>
public class Condition
{ #region 构造方法 public Condition(string fname,string strop,object objval)
{
fieldname = fname;
op = strop;
val = objval;
}
#endregion
#region 公共字段
public string LeftBracket
{
get
{
return leftbracket
}
set
{
leftbracket = value;
}
}
public string LeftBracket
{
get
{
return leftbracket
}
set
{
leftbracket = value;
}
}
public string LeftBracket
{
get
{
return leftbracket
}
set
{
leftbracket = value;
}
}
public string RightBracket
{
get
{
return rightbracket
}
set
{
rightbracket= value;
}
}
public string Relation
{
get
{
return relation
}
set
{
relation= value;
}
} #endregion
#region 私有字段 private string leftbracket = ""; private string fieldname = ""; private string op = ""; private object val = null; private string rightbracket = ""; private string relation = " AND "; #endregion #region 公共方法 public override string ToString()
{
return leftbracket + fieldname + " " + op + " " + DataAccessbase.ValToParmStr(val) + rightbracket + " " + relation + " ";
}
#endregion }
/// <summary>
/// 条件集合
/// 作者:JasonHeung
/// </summary>
public class ConditionCollection : AddCollectionBase
{ #region 构造方法 public ConditionCollection()
{
}
public ConditionCollection(Condition condition)
{
Add(condition);
}
#endregion #region 特性 public Condition this[int nIndex]
{
get
{
return (Condition)List[nIndex];
}
set
{
while (nIndex >= List.Count) List.Add(null);
List[nIndex] = value;
}
}
#endregion #region 公共方法 public override string ToString()
{
int i ;
string str = "";
if (Count > 0)
{
Condition c = this[Count - 1];
c.relation = "";
for (i = 0; i < Count;++i) str += List[i].ToString();
}
return str;
}
/// <summary>
/// 将一个集合添加
/// </summary>
/// <param name="cc">条件集合</param>
public void AddCollection(ConditionCollection cc)
{
int i;
for (i = 0 ; i < cc.Count; ++i)
{
Add(cc[i]);
}
}
#endregion }
/// <summary>
/// 条件
/// 作者:JasonHeung
/// </summary>
public class Condition
{ #region 构造方法 public Condition(string fname,string strop,object objval)
{
FieldName = fname;
op = strop;
val = objval;
}
#endregion #region 公共字段 public string LeftBracket
{
get
{
return leftBracket;
}
set
{
leftBracket = value;
}
}
public string FieldName
{
get
{
return fieldName;
}
set
{
fieldName = value;
}
}
public object Val
{
get
{
return val ;
}
set
{
val = value;
}
}
public string RightBracket
{
get
{
return rightBracket;
}
set
{
rightBracket= value;
}
}
public string Relation
{
get
{
return relation;
}
set
{
relation= value;
}
}
#endregion #region 私有字段 private string leftBracket = ""; private string fieldName = ""; private string op = ""; private object val = null; private string rightBracket = ""; private string relation = " AND "; #endregion #region 公共方法 public override string ToString()
{
return leftBracket + FieldName + " " + op + " " + DataAccessbase.ValToParmStr(val) + rightBracket + " " + relation + " ";
}
#endregion }
谢谢你的指导啊,看来你做过这个东西,能说说你是怎么存储数据的吗??用数据库是吗??
一个补充: /// <summary>
/// 将对象的值转为字符串表示
/// </summary>
/// <param name="val">对象</param>
/// <returns>对象的值的字符串表示</returns>
public static string ValToParmStr(object val)
{
string strParm = "";
if (val is System.String)
{
string s = (string)val;
if (s.ToUpper().IndexOf("SELECT") < 0) strParm = "'" + (string)val + "'";
else strParm = (string)val;
}
else if (val is System.DateTime)
{
strParm = "'" + val.ToString() + "'";
}
else
{
strParm = val.ToString();
}
return strParm;
}