SELECT *
FROM Candidate
WHERE Candidate.Username = CurrentUser
CurrentUser是一个全局变量(字符串),它从登录中获取用户名。当我尝试将SQLQuery与TDBGrid一起使用时,我得到错误,参数CurrentUser没有默认值。
unit UntVar;
interface
Var Currentuser:String;
implementation
end.
全局变量的代码。
CurrentUser := EdtUser.Text;
当前用户获得值时的代码。
答案 0 :(得分:2)
您可以使用此代码:
ADOQuery1.SQL.Clear();
ADOQuery1.SQL.Add('SELECT * FROM Candidate');
ADOQuery1.SQL.Add('WHERE Candidate.UserName = :CurrUser');
ADOQuery1.Parameters.ParamByName('CurrUser').Value := CurrentUser;
ADOQuery1.Open;
答案 1 :(得分:0)
您没有做任何事情来将全局变量的内容分配给参数。 (它们不可见或以任何方式连接.SQL.Text只是一个字符串,而GlobalUser变量只是一个包含字符串的变量。你需要做一些事情来为SQL本身提供值。)
你需要这样的东西:
Query.SQL.Text := 'SELECT * FROM Candidate WHERE Candidate.UserName = :CurrUser';
Query.ParamByName('CurrUser').AsString := CurrentUser; // Your global var
Query.Open;