大家进来讨论一个比较实用的问题,高手请进!
大家进来讨论一个比较实用的问题,高手请进!
楼主landa888()2002-11-07 11:35:16 在 Delphi / 数据库相关 提问 是这样的,我想做一个比较通用查询,其中我想定义一个记录结构来保存用户所设置的查询条件,结构如下:
type
Tsql = record
FieldN: string; //字段名
Condition: string; //条件
FieldV: string; //字段值
Login: string; //逻辑 or and
end;
IndexSql = ^Tsql;
每选择一个条件我就这样
var
myrecord:=indexsql;
begin
new(myrecord);
with myrecord^ do
begin
FieldN := "用户名称";
Condition := "=";
FieldV := """梦妹""";
Login := "or";
end;
end;
如果可以无限的增加的话(可惜不行,我正想找到解决方法).我就可以按如下生成sql语句
mysql :=myrecord.FieldN + myrecord.Condition + myrecord.FieldV;
问题就是这个myrecord只能存一条当前的记录,请大家出下高见,有什么更好的解决方法.
问题点数:100、回复次数:17Top
1 楼guorui_wh(Re)回复于 2002-11-07 11:39:43 得分 10
用字符串就可以了,点击查询的时候一起生成sql语句Top
2 楼landa888()回复于 2002-11-07 12:08:11 得分 0
我现在用的就是字符串,可总不是很灵活Top
3 楼newyj(吴刚vs西西弗)回复于 2002-11-07 12:15:23 得分 10
用链表加个nextTop
4 楼landa888()回复于 2002-11-07 12:24:20 得分 0
To newYj 能不能具体些?Top
5 楼theday112(不想编程)回复于 2002-11-07 13:02:52 得分 10
用Tlist存放记录Top
6 楼blazingfire(烈焰)(对.net极度憎恨中....)回复于 2002-11-07 13:24:08 得分 10
用StringList来存可能要好一点,把这些字段用若干个分隔符连成一个串,把这个串存到StringList中,然后一一解析出来就可以了Top
7 楼hahafan(注意!此人前途迷茫)回复于 2002-11-07 13:29:20 得分 10
可建个Tsql类型的数组
array of Tsql
用StringList也挺好Top
8 楼landa888()回复于 2002-11-07 15:30:29 得分 0
TO:hahafan(度过伤心九月)
用
可建个Tsql类型的数组
array of Tsql
的话,当增加另一条件时用new()时会不允许Top
9 楼jiaorg(jiaorg)回复于 2002-11-07 16:33:59 得分 10
加个STRINGLIST
然后没添加一个RECORD的时候
在STIRNGGRID中ADD一个RCORD啊Top
10 楼IUPRG(新软-||www.newsoftstudio.com||)回复于 2002-11-07 17:19:35 得分 10
我也 一般 用string
只是 相关的代码 不能被其他模块重复使用,你要是做成一个通用的类
就更好了,到时候别忘了给我们一份。Top
11 楼greenclass(岁月留痕)回复于 2002-11-07 18:22:43 得分 0
学习……
关注……Top
12 楼landa888()回复于 2002-11-07 23:08:03 得分 0
大家不觉得每次在做产品时会有这样的麻烦,就是总有很多的查询,我就想做一个通用的查询,有点像速达那个,当然, 我想做得比他的更加好,目前的功能虽然实现,但还不是很好,大家多多提意见,共同学习!谢谢大家.Top
13 楼wangfeixue()回复于 2002-11-07 23:20:47 得分 0
关注Top
14 楼landa888()回复于 2002-11-08 14:21:48 得分 0
没有回答了吗?Top
15 楼78(2008奥运痴狂症)回复于 2002-11-08 14:30:45 得分 10
还是分析SQl语句是条正路.因为SQL语句中的句法格式都是定义好了的.
而通用查询多半是变动WHERE条件表达式.比较灵活方便.
分析起来是很快的.
像你这样的情况,用TSTRINGLIST的addobject方法加入,以后用 IndexSql (TStringList.data??//or object??)就可以取得.
Top
16 楼yekehe(河子)回复于 2002-11-08 15:01:13 得分 10
其实很简单,就是要动态生成SQL串吗,把每个条件用逻辑运算符连起Top
17 楼LMXEQ5(吴下阿蒙)回复于 2002-11-08 15:53:09 得分 10
用字符串是比较好的,SQL语句本来就是字符串型的,这样省去了转换,字符串其实也很方便、灵活的:
MySql_1:="Select * from 表名 Where"
MySql_2:=MySql+字段名+条件+字段值+条件
查询时将MySql_2的最后一个条件删除
MySql:=MySql_1+MySql_2
要不把你方法中的各结点存放到TREEVIEW中,这样可以充分体现多条件查询时括号的作用域Top
-
相关文章
2秒记住本站域名
玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn
