procedure TForm1.Edit1Change(Sender: TObject);
var
sql:string;
begin
sql:='select * from Orders where CustNo=' +Edit1.Text;
ADOQuery1.Close;
ADOQuery1.SQL.Add(sql);
ADOQuery1.Open;
end;
再发一次
procedure TForm1.Edit1Change(Sender: TObject);
var
sql:string;
begin
sql:='select * from Orders where CustNo="' +Edit1.Text+'"';//CustNo是字符型时加"
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sql);
ADOQuery1.Open;
end;
我沒有放在EditChang里,而是放在了BottonClick控件里.
上面的編碼只能對數字輸入有效.
而sql:='select * from Orders where CustNo="' +Edit1.Text+'"';//
編碼不知道怎麼輸入文字後點擊Botton就出現錯誤.
我都用過CustNo=:Edit1.Text,CustNo like 'Edit1.text'就是不行.
可能符號上有問題.
一、静态SQL语句:直接在ADOQuery的SQL中输入,如:select * from orders where CustNo=:CustNo
再用ADOQuery的参数对其赋值:ADOQuery.parameters.ParaByName('CustNo').AsString := Edit1.Text;
二、动态SQL语句:
with ADOQuery do
begin
if Active Then Close;
SQL.Clear;
SQL.Add('select * from orders where CusNo='''+Edit1.Text+'''');
Open;
end;
三、客户应用服务器方式:
在服务器端也同样有上面两种方式,不过在客户端有些不一样。客户端使用
TClientDataSet来连接到服务器端的DataSetProvider,而DataSetProvider又是连接到
ADOQuery。所以在客户端两种方法:
3、1 静态SQL:在服务器端的ADOQuery加入,客户端为:
with ClientDataSet1 do begin
if Active then Close;
parameters.ParamByName('CustNo').Values:=Edit1.Text
Execute;
end;
3、2 动态SQL,这时候在服务器端的DataSetProvider的Options项中应将poAllowCommandText:= True
with ClientDataSet1 do begin
if Active then Close;
CommandText := 'select * from orders where CustNo='''+Edit1.Text+'''';
Execute;
end;
with ADOQuery do begin
Close;
SQL.Text:= 'SELECT * FROM [Orders] WHERE';
SQL.Add('Cust_No = :No');
Params.ParamByName('No').AsInteger:= No;
try
Open;
try
// 具体的读写操作
finally
Close;
end;
except
On E: EDatabaseError do begin
ShowMessage(M.Message);
end;
On E: EOleException do begin
ShowMessage(M.Message);
end;
end
end;