2013-10-27 1 views
-1

내 MS 액세스 데이터베이스에서 정보를 얻으려고 할 때 동일한 오류가 계속 발생합니다. 아래는 제 코딩입니다.델파이에서 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이다. 쿼리 식 'FROM 총 AS 사용자 이름 = "SELECT COUNT (사용자 ID) tblResults'

난 정말이 오류를 undertand에없는

. 내가이 일의 작업을 도와주십시오.

+0

두 번째 쿼리를 'DB.SQL.Add'하기 전에 DB.SQL.Clear;를 수행 할 필요가 없습니까? –

답변

0

을 내가 델파이를 모르는 (단지 MS 액세스),하지만 코드에서 한 가지 아직도 나에게 이상한 같습니다

귀하의 오류 메시지는 오류가 "쿼리 식의 '사용자 이름 ="발생 [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를 추가했습니다. –