求助:有没有良好的自定义查询(让用户通过选择生成SQL)的例子

大鸟的小天空 2003-11-10 05:07:35
要做一个自定义查询的东西.实现的功能就是通过选择获得要查询的SQL.
比如:ComBoBox中下拉姓名,地址-->选择AND NOT OR-->选择Like,等于,大于等-->后面的Edit输入内容
这些内容组合起来获得查询的SQL
这些条件是要无限扩展的,就是说选择完了一次,可以再进行选择.用AND.not.or进行组合.
实际的应用中的查询内容比较多.
各位大侠有没有什么良好的例子,或者已经完成的实现.俺,借鉴一些思路.
工作比较紧,没时间来思考了,请大家帮忙.
...全文
44 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
iyln 2003-11-11
  • 打赏
  • 举报
回复
C#怎么看着像VB?不爽~~
我不懂电脑 2003-11-11
  • 打赏
  • 举报
回复
最近用C#给你一段C#的。
string LocalNet, OperFlow;

Oper = Request.QueryString.Get("Oper");
LocalNet = Request.QueryString.Get("LocalNet");
OperFlow = Request.QueryString.Get("OperFlow");
logTableName = "META_OPERATION_OTH_LOG";

if (LocalNet != "-1")
{
query = "SELECT SUBSTRING(a.Start_Date, 1, 4) + '年' + SUBSTRING(a.Start_Date, 5, 2) + '月' + SUBSTRING(a.Start_Date, 7, 2) + '日' + SUBSTRING(a.Start_Date, 9, 2) + '时' + SUBSTRING(a.Start_Date, 11, 2) + '分' + SUBSTRING(a.Start_Date, 13, 2) + '秒' 事件时间, a.User_ID 操作员号, a.IP 操作IP, a.Log_Times 登陆次数, a.Operation_Remark 信息内容 ";
query += "FROM META_OPERATION_OTH_LOG a, META_INFO_EMP_ROL b WHERE a.Start_Date >= \'" + dateTime + "\' AND a.Start_Date <= \'" + endDateTime + "\'";
query += " AND a.User_ID = b.User_ID AND b.LocalNet_Code = \'" + LocalNet + "\'";
}
else
{
query = "SELECT SUBSTRING(a.Start_Date, 1, 4) + '年' + SUBSTRING(a.Start_Date, 5, 2) + '月' + SUBSTRING(a.Start_Date, 7, 2) + '日' + SUBSTRING(a.Start_Date, 9, 2) + '时' + SUBSTRING(a.Start_Date, 11, 2) + '分' + SUBSTRING(a.Start_Date, 13, 2) + '秒' 事件时间, a.User_ID 操作员号, a.IP 操作IP, a.Log_Times 登陆次数, a.Operation_Remark 信息内容 ";
query += "FROM META_OPERATION_OTH_LOG a, META_INFO_EMP_ROL b WHERE a.Start_Date >= \'" + dateTime + "\' AND a.Start_Date <= \'" + endDateTime + "\'";
query += " AND a.User_ID = b.User_ID AND b.Operationer_Level = \'9\'";
}

if (Oper != "——所有操作员——")
{
query += " AND a.User_ID = \'" + Oper + "\'";
}

if (logSelect == "1")
{
query += " AND a.Operation_Code = \'1111\'";

if (OperFlow.CompareTo("-1") != 0) { //不是所有模块
query += " AND a.Serial_No LIKE \'" + OperFlow + "%\'";
}
}
else //登陆日志
{
query += " AND a.Operation_Code = \'2222\'";
}

dataTable = db.Query(query, sqlCon);
DataGrid.DataSource = dataTable;
DataGrid.DataBind();
大鸟的小天空 2003-11-11
  • 打赏
  • 举报
回复
sncel(地狱情人-杨勇)
如果能给我一份,不胜感激。ainy10000@163.com
sncel 2003-11-10
  • 打赏
  • 举报
回复
我有万能查询组件的代码,要的话给我发短消息。
叶子哟 2003-11-10
  • 打赏
  • 举报
回复
没有模板,只能自己去摸索,具体分析
Friecin 2003-11-10
  • 打赏
  • 举报
回复
AnsiString SQLStr="select * from Mybase";
if(checkBox_sex->Checked == true )
SQlStr = SQLStr+" AND Sex=1";

if(ComboBox_Address->Text != "" )
SQLStr = SQLStr+ "AND Address='"+ ComboBox_Address->Text + "'";

if( Edit_Phone->Text != "" )
SQLStr = SQLStr+ "AND Phone='"+ Edit_Phone->Text + "'";

if( .....)
SQLStr ....

可能我的方法笨了一些,但我的确经常这样写。
大鸟的小天空 2003-11-10
  • 打赏
  • 举报
回复
楼上的老兄,现在要的不是SQL语句,而是怎样做才能最好的给用户提供良好的操作,而且又能很好的生成SQL语句.
niuzhenjun(还得学呀)如果能找到就不胜感激了.俺的邮箱ainy10000@163.com
先谢过了.
jEditor 2003-11-10
  • 打赏
  • 举报
回复
呵呵,少了一个引号:String sSQL = "select .. from table where value1 .....
ADOQry->Close();
ADOQry->SQL = sSQL;
ADOQry->Open();
...........
niuzhenjun 2003-11-10
  • 打赏
  • 举报
回复
我倒是以前做过一个类视你要求的数据库模板,现在也找不到代码了。具体思路是查找要选择的dataset,对它进行拼装和组合,但是要注意lookup字段,尤其是多次lookup字段的查询,我目前没有很好的解决方案,你要是需要代码,我可以给你找找看,可以给我发消息。
jEditor 2003-11-10
  • 打赏
  • 举报
回复
可以的阿,你要注意一下SQL语句的语法结构;
select .. from table where [and ...and ..and..] [order by ..]...

例子:String sSQL = select .. from table where value1 = " + Edit1->Text + "and value2 like '%" + Edit2->Text + ..... + "order by valueX";

13,870

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧