2014-02-18 49 views
1
SELECT * 
FROM Candidate 
WHERE Candidate.Username = CurrentUser 

CurrentUser是一个全局变量(串),后者从登录的用户名。当我尝试使用带有TDBGrid的SQLQuery时,出现错误,参数CurrentUser没有默认值。参数没有默认值,SQL查询不起作用

unit UntVar; 

interface 

Var Currentuser:String; 


implementation 

end. 

代码为全局变量。

CurrentUser := EdtUser.Text; currentuser获取值时的代码。

+0

这可能会发生,是因为你没有定义'CurrentUser',并试图把它给查询。 – Alexander

+0

因此,我必须先给Currentuser一个值,然后才能在查询中使用它。 – user3324069

回答

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; 
+0

由于我使用的是TADOQuery,我不确定我会在哪里放置代码或以什么格式/语法 – user3324069

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;