DM.TADOQUERY.SQL('SELECT * FROM USER_INFO WHERE USERNAME=:USERNAME');什么意思?
应该是:
 DM.TADOQUERY.SQL.Add('SELECT * FROM USER_INFO WHERE USERNAME=:USERNAME');

是取出还是赋值?
若是取值:
EDIT1.TEXT:=VarToStr(DM.TADOQUERY.Parameters.ParamByName('UserName'));
若是赋值:
应该先赋值,再执行SQL

解决方案 »

  1.   

    DM.TADOQUERY.Close;
    DM.TADOQUERY.SQL.Clear;
    DM.TADOQUERY.SQL.Add('SELECT * FROM USER_INFO WHERE USERNAME=:USERNAME');
    DM.TADOQUERY.Parameters.ParamByName('UserName').DataType:=ftFixedChar;
    DM.TADOQUERY.Parameters.ParamByName('UserName').value:=EDIT1.TEXT;
    DM.TADOQUERY.Open;
      

  2.   

    或DM.TADOQUERY.SQL.TEXT := 'SELECT * FROM USER_INFO WHERE USERNAME=:USERNAME';
    这里你的USERNAME应该是赋值吧,用你原先的语句DM.TADOQUERY.Parameters.ParamByName('UserName').ASSTRING:=EDIT1.TEXT;
    应该可以的。
      

  3.   

    各位,我爱你们!
    实际上用ASSTRING则有错误,用VALUE就没错误!但ftFixedChar说没定义;
    另外我在TRY..EXCEPT..END中使用ON EDBEngineError do,也提示EDBEngineError没定义,是什么原因?
    DM.TADOQUERY.Close;
    DM.TADOQUERY.SQL.Clear;
    DM.TADOQUERY.SQL.Add('SELECT * FROM USER_INFO WHERE USERNAME=:USERNAME');
    //DM.TADOQUERY.Parameters.ParamByName('UserName').DataType:=ftFixedChar;
    DM.TADOQUERY.Parameters.ParamByName('UserName').value:=EDIT1.TEXT;
    try
    DM.TADOQUERY.Open;
    except on EDBEngineError do
    begin
      showmessage('打开数据库错误!');
      exit
    end;
    end;
      

  4.   

    在你调用上述代码的unit里引用db和dbtables单元(在uses后面加)
      

  5.   

    在你调用上述代码的unit里引用db和dbtables单元(在uses后面加)
      

  6.   

      with DM.TADOQuery do
      begin
        Close;
        SQL.Add('SELECT * FROM User_Info WHERE UserName = :UserName');
        Parameters.ParamValues['UserName'] := Edit1.Text;
        Open;
      end;
    上述语句一次通过并无问题。提醒:
    1)TADOQuery的Connection属性或ConnectionString属性是否正确设置。
    2)会不会是Bug,你有没有安装Delphi的补丁程序。有没有安装ADOExpress的两个补丁程序。
    另外,你使用的ADO版本是多少。
      

  7.   

    实际上可能用DM.TADOQUERY.Parameters.ParamByName('UserName')时,不用ASSTRING 而用VALUE,或者直接用Parameters.ParamValues['UserName']