Delphi中Access数据库查询中的语法错误

时间:2013-10-27 19:18:06

标签: ms-access delphi-xe2

当我尝试从MS访问数据库中获取信息时,我一直收到同样的错误。以下是我的编码。

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。在查询表达式'Username =“SELECT Count(UserID)AS Total FROM tblResults'

我真的不承认这个错误。请帮我把这件事搞定。

1 个答案:

答案 0 :(得分:0)

我不知道Delphi(只有MS Access),但代码中的一件事对我来说仍然很奇怪:

您的错误消息显示错误发生在“查询表达式'Username =”[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=部分还应该来自哪里?