这是怎么回事?ADOQuery1的语句中不可以用where 条件?一用说参数类型不匹配?为什么?

解决方案 »

  1.   


    代码如下:
    procedure TEditUser.FormShow(Sender: TObject);
    var
      tmp:String;
    begin
        ADOQuery1.Connection:=Main.ADOConnection1;
        ADOQuery1.SQL.Clear;//----下面这句
        ADOQuery1.SQL.Add('select * from admin');  //现在的条件就只能放到Fileter属性中了//---如果写成  ADOQuery1.SQL.Add('select * from admin where grade<>1');
    //就不行了用的是ACCESS数据库ADOQuery1.Open;
        While Not ADOQuery1.Eof  do
            begin
               tmp:=ADOQuery1.FieldByname('name').AsString;
               ComboBox1.Items.Add(tmp);
               ADOQuery1.Next;
            end;
        ComboBox1.ItemIndex:=0;
        ADOQuery1.close;end;
      

  2.   

    你的数据库当中grade是什么类型的数据呢
    是整型吗? 但是你的参数是整形的
      

  3.   

    建议将grade <> 1 改成
     grade > 1 and grade < 1 ;
      

  4.   

    都试了,ACCESS中的grade 绝对是整型的,唉刚用Delphi就是这样??这个更新数据的也不行:
        MySql:='Update admin set name="'+Edit1.Text+'", password="'+PassChange(Edit1.Text)+'"  where  name="'+ComboBox1.Text+'" ';
        ADOQuery1.SQL.Clear;
        ShowMessage(mySql);
        ADOQuery1.SQL.add(MySql);
        number:=ADOQuery1.ExecSQL;    ModalResult:=mrOK;这可惨了,我以前用作ASP和PHP 的喜欢简洁的SQL,现在无用武之地,请高人指点迷津?
      

  5.   

    MySql:='Update admin set name='''+Edit1.Text+''', password='''+PassChange(Edit1.Text)+'''  where  name='''+ComboBox1.Text+'''';
      

  6.   

    ADOQuery1.SQL.Add('select * from admin where grade<>''1''');
      

  7.   

    ADOQuery1.SQL.Add('select * from admin where grade<>''1''');
    问题就出在着里
    试着在where子句中加适当的''就可解决问题
      

  8.   

    ShowMessage(mySql);
    的输出是:    Update admin set name='abc',password='abc' where name='bbb'可是却“Update 语句语法错误”
      

  9.   

    你的grade的类型为字符行的,所以应该如下写:ADOQuery1.SQL.Add('select * from admin where grade<>''1''');
      

  10.   

    单步运行看看sql语句是否正确,主要看数据类型 及''匹配。
      

  11.   


    专门做的测试段,可以在Edit1中输入SQL这是执行按钮的事件程序,只能通过select 查询不能通过“Update” procedure TForm1.Button1Click(Sender: TObject);
    var num:integer;
    begin
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add(Edit1.Text);
      num:=ADOQuery1.ExecSQL;
      showmessage('执行成功:'+intToStr(Num)+'条记录!');
    end;end.
      

  12.   

    哇!!! 问题解决了,气死了,原来我的字段名不应该用 password 这个敏感的词,换个名字就行了,多谢大家!马上给分!
      

  13.   

    问题已经解决我想结贴,但为什么结不了,请CSDN的版主解决!!!
      

  14.   

    关键字当然不能用啦,还有注意就是sqlserver里的语句可以在access中执行
    但是,反过来就不行,因为access中的单引号用“#”来表示;
    再就是:sql语句先放进后台执行,如果可以再放进前台程序中。
      

  15.   

    同意kevin218(张智勇) 的说法