俺是delphi的初学者
想对sql查询后的结果再进行处理
这是查询中的一段代码
      query:=tquery.create(self);
       query.DatabaseName:=table1.DatabaseName;
      query.SQL.Clear;
      sqlstr:='select data1,mainnum from maintag where (tag="tag[jsq]") and (subtag="6")';
      query.SQL.Text:=sqlstr;
      query.Open;
      result := query.fieldbyname('data1').asstring;
      //writeln(outfile,result);
      query.Free;
但是打出的result总是空字符,这可能什么原因呢,跟中文有关系吗?
但是换成英文的也不行啊,不知道这样处理对不对,谁来教教我

解决方案 »

  1.   

    找到原因拉,原来是tag="tag[jsq]"的问题,有什么办法解决吗?
    先用a代替tag[jsq]也不行
    jsq是从1 到 n的一个变量
    怎磨搞啊,汗
      

  2.   

    在OPEN语句之前,你可以用showmessage(query.SQL.Text);的语句看一下,你将要执行的SQL语句是什么,这个在调试时候是很有用的。我看了下,你要执行的语句如下:select data1,mainnum from maintag where (tag="tag[jsq]") and (subtag="6")你直接把这个语句放到数据库中执行下,看看啊有结果啊?
      

  3.   

    用参数吧。。
    sqlstr:='select data1,mainnum from maintag where (tag="tag[jsq]") and (subtag="6")';
    改成
    sqlstr:='select data1,mainnum from maintag where (tag=:#tag) and (subtag=:#subtag)';//冒号后边的代表参数
       query:=tquery.create(self);
           query.DatabaseName:=table1.DatabaseName;
          query.SQL.Clear;;
          query.SQL.Text:=sqlstr;
           query.parambyName('#tag').asstring := tag[jsq];//查询参数赋值
           query.parambyname('#subtab').asinteger := 6;
          query.Open;
          result := query.fieldbyname('data1').asstring;
          //writeln(outfile,result);
          query.Free;
      

  4.   

    试试看这样写,
          query:=tquery.create(self);
           query.DatabaseName:=table1.DatabaseName;
          query.SQL.Clear;
          sqlstr:='select data1,mainnum from maintag where (tag='''+inttostr(tag[jsq])+''') and (subtag=''6'')';
          query.SQL.Text:=sqlstr;
          query.Open;
          result := query.fieldbyname('data1').asstring;
          //writeln(outfile,result);
          query.Free;
      

  5.   

    回二楼的,我显示过,原因应该是SQL里面的数组问题;
    回三楼的,我觉得方法应该是正确的,可是你的程序好象不行哦,能不能详细说下
    query.parambyName('#tag').asstring := tag[jsq];//查询参数赋值  这条啊
    回四楼的,我建立的表都是字符型的,不用转换
      

  6.   

    那你就把sqlstr:='select data1,mainnum from maintag where (tag='''+inttostr(tag[jsq])+''') and 中的inttostr去掉试试呢