2014-02-18 82 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;