var
sqlstring:string;
begin
        ADOQuery1.Close;
        adoquery1.SQL.Clear;
        sqlString := 'select * from qx where 账号=' + '''' +edt_id.text + ''''+'and';
        sqlString := sqlString + '密码=' + '''' + edt_pw.text+ ''''+'and';
        sqlString := sqlString + '权限=' + '''' + combo_ca.text+ '''';
        adoquery1.SQL.Add(sqlstring);
        adoquery1.Open;
end

解决方案 »

  1.   

    var
    sqlstring:string;
    begin
            ADOQuery1.Close;
            adoquery1.SQL.Clear;
            sqlString := 'select * from qx where 账号='+ edt_id.Text +'and';
            sqlString := sqlString + ' 密码= '+ edt_pw.Text+'and';
            sqlString := sqlString + ' 权限=系统管理员';
            adoquery1.SQL.Add(sqlstring);
            adoquery1.Open;
            if adoquery1.eof then
            begin
            showmessage('输入有误');
            end;
    仍然报错 账号没有默认值
      

  2.   

    你的字符串没有用引号引用吧?我常有的方法是:
    Select * from qx where 帐号 = ' + QuotedStr(Edt_id.text)
      

  3.   

    好像是条件之间没有空格。
    建议在程序运行中置一个断点,将此sql语句拿出来到db中执行,以保证sql语句没有错误。
      

  4.   

    还有and前面要有空格,要不那成什么了?设个断点不就能很清楚的看到sqlString的值了吗?有什么错误一目了然.
      

  5.   

    连接操作符前后加上括号如' and '
    账号没有默认值 ,检查一下表中字段名称是否是是‘帐号'。
      

  6.   

    连接操作符前后加上括号如' and '
    你还是写成有句好 了
    注意and的前面有空格啊
      

  7.   

    sqlString := 'select * from qx where 账号='+ '''' + edt_id.Text + '''' +'  and  ';
            sqlString := sqlString + ' 密码= '+ '''' + edt_pw.Text+ ''''+ ' and ';
            sqlString := sqlString + ' 权限='+ '''' +'系统管理员' + '''';
      

  8.   

    建议采用Format()格式化Sql语句,绝对不出错

    SqlString :=Format('select * from qx where 账号=''%s'' and 密码=''%s''',[edt_id.text,edt_pw.text])