现在我要做的就是根据用户输入的sql语句来创建一个字段的表格,但是如果用户输入的是:select * from ...的话,因为表和条件都是不确定的,那我如何知道用户需要的是哪些字段?有什么方法获取这些字段的名字并把它们记录下来?谢谢啦

解决方案 »

  1.   

    {给你一个简单的方法,仅供参考,具体应用时自己要变通一下
    字段,条件可是从Edit输入,你也可以设置从其它控件(如Combobox)输入/选择...}
    var
    strsql:string;
    begin
    strsql='';if trim(edit1.text)<>'' then 
     strsql:=edit1.text+',';if trim(edit2.text)<>'' then
     strsql:=str+edit2.text+',' ;if strsql<>'' then
     begin
      strsql:=copy(strsql,1,Length(strsql)-1);  {去除后面的逗号}
      strsql:='select '+strsql+' from tb';  {至于后面还要加什么条件,都可以用类似的方法加上去}
     end
    else
      strsql:='Select * from tb';with Adoquery do
     begin
      close;
      sql.clear;
      sql.add(strsql);
      open;
     end;
    {...}
      

  2.   

    楼主是不是想监控用户查询过哪些字段啊?如果有实际的物理库连接的话,对于select * from... 可以用ADOConnection.GetFieldNames方法得到物理库中某表的字段名称
      

  3.   

    谢谢大家了,我已经解决了,用的是adoquery.fielddefs[索引值]来访问的
      

  4.   

    for i:=0 to AdoQuery1.FieldCount-1 do 
      Listbox1.Items.Add(AdoQuery1.FieldList.Strings[i]);