参数没有默认值,SQL Query不起作用

时间:2014-02-18 15:32:36

标签: variables delphi-7

SELECT *
FROM Candidate
WHERE Candidate.Username = CurrentUser

CurrentUser是一个全局变量(字符串),它从登录中获取用户名。当我尝试将SQLQuery与TDBGrid一起使用时,我得到错误,参数CurrentUser没有默认值。

unit UntVar;

interface

Var Currentuser:String;


implementation

end.

全局变量的代码。

CurrentUser := EdtUser.Text;当前用户获得值时的代码。

2 个答案:

答案 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;