我用 query.parambyname('a').asstring......运行后,说parambyname没有声明,这还要在哪里声明一下吗?请大虾帮忙指点一下啊!!谢谢了!!

解决方案 »

  1.   

    刚把DBTables加了上去,但还是不行啊!
      

  2.   

    加参数是指的在SQL语句中一定要有WHERE ID = ‘**’吗??
      

  3.   

    参数肯定要先创建再引用了,adoquery1.Parameters.CreateParameter()
      

  4.   

    如果是对query.parambyname的,上面这句可以吗?
      

  5.   

    Query1.Parameters.ParamByName('a').asstring;
      

  6.   

    s_sql_query :=tadoquery.Create(self);
       s_sql_query.Connection :=ADOConnection1;
       s_sql_query.Close;
       s_sql_query.SQL.Clear;
       WITH s_sql_query.Parameters.AddParameter do
       begin
          name :='par_1';
          datatype :=ftdate;
          value :=click_date;
       end;
       s_sql_query.SQL.Text :='SELECT *  from hld1001 WHERE DATE = :par_1'
                                  +' and holiday_group_code ='
                                  + quotedstr(g_select_group);   s_sql_query.Open;
      

  7.   

    谢谢各位的热心帮助!---已经没有“parambyname没有声明”这个错误提示了。我采用的是Tensionli() 朋友的方法,但是另一个错误出来了,就是说
    Query1.Parameters.ParamByName('a').asstring;中的asstring没有声明!这又是什么原因造成的错误啊?!?---
      

  8.   

    我对parambyname太不熟了,parambyname()括号里的参数是不是一定要是数据表里的字段才行?它与FIELEBYNAME有什么区别??
      

  9.   

    顾名思义ParamByName    vs            FieldByName
    前面的这个是里面的参数       这个是里面的字段 
    这个是我们赋值进去的         这是是从数据库里获取的 
    比如 
    Select aaa from t where name = :name;
    我们就需要 这样用ParamByName('name').Value := 'xxx';
    Open; //后
    我们就可以从数据集里面这样用
    ShowMessage(FieldByName('aaa').AsString);**ByName: 表示通过后面的Name去一个数组<或其他容器里里面寻找>
    ParamByName: 就是去放参数的Params(这是一个数组)里面 遍历查找
    FieldByName: 就是去放字段的Fields(也是一个数组)里面 遍历查找
      

  10.   

    query.parambyname('a').asstring你这样用query.parambyname('a').Value := 'aaa';
      

  11.   

    谢谢了!不过现在都快晕了。我如果用Query1.Parameters.ParamByName('a').value就会出现 在Query1中找不到 a 的错误提示;--而在数据表中是有这么个字段的
     
    我如果用Query1.ParamByName('a').value 的形式,就会出现ParamByName没有声明的错误提示,而我已经 uses DBTables 了!偏偏我这个程序要用到ParamByName 真是恼火!
      

  12.   

    Query1.Parameters.ParamByName('a').valueTO:楼主:
    如果我没有说错的话:
    以上写法应该针对ADOquery1可能比较好!
    query的写法好像有些不同!-------我也不太懂,试着说说吧!
      

  13.   

    我用的就是TADOQuery啊
    我试着用TQuery试试
      

  14.   

    楼主 你仔细看了我的回复没?? 看懂了没??我如果用Query1.Parameters.ParamByName('a').value就会出现 在Query1中找不到 a 的错误提示;--而在数据表中是有这么个字段的
    // 数据库的字段 是Field...是FieldByName('a').As..(比如AsString) 就是由AdoQuery(Query)去获取数据库中a字段对应的值!
     
    我如果用Query1.ParamByName('a').value 的形式,就会出现ParamByName没有声明的错误提示,而我已经 uses DBTables 了!
    // 而ParamByName('a').Value 这个a不是你的数据库中的 与你的数据库无关,是你预设的参数而已 你可以可以把它设为B 或者其他,
    比如 
    Select aaa from t where name = :name;
    我们就需要 这样用ParamByName('name').Value := 'xxx'; // 这个表示我们对里面的name参数赋值..
    Open; //后
    我们就可以从数据集里面这样用
    ShowMessage(FieldByName('aaa').AsString);——————————————————
    我中间说的很清楚了很简单的一个问题...