2013-10-27 93 views
-1

當我嘗試從我的MS訪問數據庫獲取信息時,我總是收到相同的錯誤。以下是我的編碼。Delphi中的Access數據庫查詢中的語法錯誤

var  
iTemp, iX, iY, k : Integer; 
sDate : String; 

begin 

    iTemp := 0; 
    DB.Close; 
    DB.SQL.Add('SELECT Count(UserID) AS Total FROM tblResults;'); 
    DB.Parameters.ParamByName('ID').Value := pID; 
    DB.ExecSQL; 
    DB.Open; 

    iTemp := DB.FieldByName('Total').AsInteger; 

    if iTemp = 0 then 
    ShowMessage('Sorry but we do not have any test results for you. Take a test and check your result !') 
    else 
    Begin 

    DB.Close; 
    DB.SQL.Add('SELECT Mark,DateTested AS Total FROM tblResults WHERE UserID=:ID;'); 
    DB.Parameters.ParamByName('ID').Value := pID; 
    DB.ExecSQL; 
    DB.Open; 

    for k := 1 to iTemp do 
    Begin 

    iX := k; 
    iY := DB.FieldByName('Mark').AsInteger; 
    sDate := DB.FieldByName('DateTested').AsString; 

    Chart1.Series[0].AddXY(iX,iY,sDate,clTeeColor); 

    DB.Next; 

    End; 

    Db.Close; 
    End; 

的錯誤是

語法errpr。在查詢表達式「用戶名=「SELECT COUNT(用戶名)AS共有來自tblResults'

我真的不undertand此錯誤,請幫我把這個東西的工作。

+0

在嘗試「DB.SQL.Add」第二個查詢之前,您不需要執行'DB.SQL.Clear;'嗎? –

回答

0

我不知道德爾福(唯一的MS Access),但在你的代碼一件事看起來還是怪我:

你的錯誤消息說,發生錯誤「在查詢表達式「用戶名=」 [the SQL string from your code]

您傳遞的SQL字符串您。使用此代碼查詢:

DB.SQL.Add('SELECT Count(UserID) AS Total FROM tblResults;'); 

當您使用DB.SQL.Add('...')(而不是像DB.SQL = '...'),我懷疑,也許DB.SQL已經包含在你的代碼的開頭的東西。

'Username=零件從哪裏來?

+0

由於某種原因,這工作:D –

+0

@BenedictFerguson那麼你在你的代碼中改變了什麼? –

+0

我剛添加了一個DB.SQL.Clear,然後添加了實際的查詢。 –

相關問題