【问题标题】:Syntax error in query on an Access database from Delphi从 Delphi 查询 Access 数据库时出现语法错误
【发布时间】:2013-10-27 19:18:05
【问题描述】:

当我尝试从我的 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;

错误是

语法错误。在查询表达式 'Username="SELECT Count(UserID) AS Total FROM tblResults'

我真的不明白这个错误。请帮我搞定这件事。

【问题讨论】:

  • 在尝试DB.SQL.Add 第二个查询之前,您不需要先进行DB.SQL.Clear; 吗?

标签: ms-access delphi-xe2


【解决方案1】:

我不知道 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= 部分还应该从哪里来?

【讨论】:

  • 我只是在添加实际查询之前添加了一个 DB.SQL.Clear。
猜你喜欢
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多