tempad
ReadyGo!技术成就梦想 >>项目管理 >> 大家进来讨论一个比较实用的问题,高手请进!

大家进来讨论一个比较实用的问题,高手请进!

ReadyGo!技术成就梦想 网络搜索 efish 2008-1-17 4:59:39

大家进来讨论一个比较实用的问题,高手请进!

楼主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

责任编辑: efish 参与评论 查找更多:
相关文章
win2000内如何配置ODBC数据源? win2000内如何配置ODBC数据源?
DirectorX和Director的问题,大家不要见笑 DirectorX和Director的问题,大家不要见笑
讨论:同一进程使用UDP端口收发数据,一线程绑定一端… 讨论:同一进程使用UDP端口收发数据,一线程绑定一端口,开两个线程效率高还是一个好?
关于mobile mapx问题,急!!!! 关于mobile mapx问题,急!!!!
大家快来看!帮我解决,有分啊!! 大家快来看!帮我解决,有分啊!!
请问如何将浮点型数据单个字节单个字节的写到2进制文… 请问如何将浮点型数据单个字节单个字节的写到2进制文件中?在线等(急)
MTxSpm.SharedPropertyGroupManager.1这个是怎么用法… MTxSpm.SharedPropertyGroupManager.1这个是怎么用法的。
内存还会涨么? 内存还会涨么?
我是新手,正在做我的第一个BBs,有三个问题向高手请… 我是新手,正在做我的第一个BBs,有三个问题向高手请教。谢谢。
Linux如何访问其他Win机子上的文件? Linux如何访问其他Win机子上的文件?
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn

分类导航
ReadyGo!技术成就梦想