代码如下: 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;
你的数据库当中grade是什么类型的数据呢 是整型吗? 但是你的参数是整形的
建议将grade <> 1 改成 grade > 1 and grade < 1 ;
都试了,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,现在无用武之地,请高人指点迷津?
MySql:='Update admin set name='''+Edit1.Text+''', password='''+PassChange(Edit1.Text)+''' where name='''+ComboBox1.Text+'''';
ADOQuery1.SQL.Add('select * from admin where grade<>''1''');
ADOQuery1.SQL.Add('select * from admin where grade<>''1'''); 问题就出在着里 试着在where子句中加适当的''就可解决问题
ShowMessage(mySql); 的输出是: Update admin set name='abc',password='abc' where name='bbb'可是却“Update 语句语法错误”
你的grade的类型为字符行的,所以应该如下写:ADOQuery1.SQL.Add('select * from admin where grade<>''1''');
单步运行看看sql语句是否正确,主要看数据类型 及''匹配。
专门做的测试段,可以在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.
代码如下:
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;
是整型吗? 但是你的参数是整形的
grade > 1 and grade < 1 ;
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,现在无用武之地,请高人指点迷津?
问题就出在着里
试着在where子句中加适当的''就可解决问题
的输出是: Update admin set name='abc',password='abc' where name='bbb'可是却“Update 语句语法错误”
专门做的测试段,可以在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.
但是,反过来就不行,因为access中的单引号用“#”来表示;
再就是:sql语句先放进后台执行,如果可以再放进前台程序中。