在同一个窗体的一个过程中,我用ADODataSet这样打开了一个查询,ADODataSet.Close ;
strSQL:='SELECT * FROM TB_Logon';
ADODataSet.CommandText:=strSQL;
ADODataSet.Open;之后在另外一个过程中,我又想更改查询语句,
 
将 strSQL:='SELECT * FROM TB_Logon'; 改成strSQL:='SELECT * FROM TB_Logon WHERE username= '+ username;
然后再打开,就报错! 是什么原因!

解决方案 »

  1.   

    'SELECT * FROM TB_Logon WHERE username= '''+ username+'''';
      

  2.   

    大哥,不对啊!我全部贴出来把,你看看procedure TfrmLogon.gr_OpenDatabase ();
    var
      strSQL:string;
    begin
      ADODataSet.Close ;
      strSQL:='SELECT * FROM TB_Logon';
      ADODataSet.CommandText:=strSQL;
      ADODataSet.Connection:=ADOConnection;
      ADODataSet.Open;
    end;function TfrmLogon.gr_CheckPassword(strUserName:string;strPsw:integer):integer;
    var
      //检测密码
      strSQL:string;
    begin
      ADODataSet.Close;
      strSQL:='SELECT * FROM TB_Logon WHERE LongonName = '''+ strUserName +'''' ;
      ADODataSet.CommandText:=strSQL;
      ADODataSet.Open;
      if strPsw = ADODataSet.FieldByName('LogonPwd').Value then
        gr_CheckPassword:=1
      else
        gr_CheckPassword:=0 ;
    end;
    这两个函数都在同一个窗体中,第一个是将用户遍历一次,将其列在ComboBOX中,第二个函数是为了检测密码,用户选择列表中的用户后通过checkPassword 检测用户密码。 情给个结决办法。
    一直做VB,转DELPHI不久,很菜啊,大哥帮帮忙
      

  3.   

    strSQL:='SELECT * FROM TB_Logon WHERE LongonName = '''+ strUserName +'''' ;
    是不是“LongonName”应改为“LogonName”?
      

  4.   

    ADODataSet.Close;
      strSQL:='SELECT * FROM TB_Logon WHERE LongonName = '''+ strUserName +'''' ;
      ADODataSet.CommandText:=strSQL;
      ADODataSet.Open;
      if ADODataSet.EOF 
         //用户不存在
      else
         if strPsw = ADODataSet.FieldByName('LogonPwd').Value 
            //密码正确,登陆成功
         else 
            //密码错误
      
      
      

  5.   

    steedhorse(晨星) : 你真好眼利啊 ,DELPHI编译器报的错是 OLEException 所以我根本没看变量是否敲错了!就是那个错误,感谢另外两位大哥的帮助,非常感谢! 接分
      

  6.   

    将 function TfrmLogon.gr_CheckPassword(strUserName:string;strPsw:integer):integer;
    改成
       function TfrmLogon.gr_CheckPassword(var strUserName:string;strPsw:integer):integer;
    试试
      

  7.   

    呵呵,以后遇到这种问题,可以想办法把生成后的SQL语句打印出来,然后拷贝到SQL Server的查询分析器里去直接执行。