FROM 子句中的 Delphi 语法错误,但没有 from 子句

Delphi Syntax error in FROM clause, but no from clause

提问人:Catherine Kies 提问时间:10/31/2022 最后编辑:Remy LebeauCatherine Kies 更新时间:11/8/2022 访问量:133

问:

我是Delphi的新手,还没有使用过SQL(我是一个完全的初学者)。

我使用代码将数据库和表连接到程序,但一旦运行程序,就会收到一条消息。Syntax error in FROM clause

当我选择中断时,它会突出显示代码的一部分。end;

function TADOCommand.Execute(var RecordsAffected: Integer;
  const Parameters: OleVariant): _Recordset;
var
  VarRecsAffected: OleVariant;
begin
  SetConnectionFlag(cfExecute, True);
  try
    Initialize;
    Result := CommandObject.Execute(VarRecsAffected, Parameters,
              Integer(CommandObject.CommandType) + ExecuteOptionsToOrd
              (FExecuteOptions));
    RecordsAffected := VarRecsAffected;
  finally
    SetConnectionFlag(cfExecute, False);
  end;
end;

我有三张表,其中两张显示在网格上,但一张没有显示在网格上,并且还给了我何时想用它做任何事情。Syntax error in FROM clause

这是我用来在数据模块中连接数据库的代码:

unit dmChamps_u;

interface

uses
  System.SysUtils, System.Classes, ADODB, DB; // add Ado and DB

type
  TdmChamps = class(TDataModule)
    procedure DataModuleCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    conArchers: TADOConnection;
    tblArchers: TADOTable;
    tblJT: TADOTable;
    tblMatches: TADOTable;
    dscArchers: TDataSource;
    dscMatches: TDataSource;
    dscJT: TDataSource;
  end;

var
  dmChamps: TdmChamps;

implementation

{%CLASSGROUP 'Vcl.Controls.TControl'}
{$R *.dfm}

procedure TdmChamps.DataModuleCreate(Sender: TObject);
begin
  // create objects
  conArchers := TADOConnection.Create(dmChamps);
  tblArchers := TADOTable.Create(dmChamps);
  tblMatches := TADOTable.Create(dmChamps);
  tblJT := TADOTable.Create(dmChamps);
  dscArchers := TDataSource.Create(dmChamps);
  dscMatches := TDataSource.Create(dmChamps);
  dscJT := TDataSource.Create(dmChamps);

  // setup connection
  conArchers.ConnectionString :=
    'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ArchChampsDB.mdb;Mode=ReadWrite;Persist Security Info=False';
  conArchers.LoginPrompt := false;
  conArchers.Open;

  // setup table archers
  tblArchers.Connection := conArchers;
  tblArchers.TableName := 'Archers';
  // setup data source
  dscArchers.DataSet := tblArchers;
  tblArchers.Open;

  // setup table matches
  tblMatches.Connection := conArchers;
  tblMatches.TableName := 'Matches';
  // setup data source
  dscMatches.DataSet := tblMatches;
  tblMatches.Open;

  // setup table JT
  tblJT.Connection := conArchers;
  tblJT.TableName := 'Judges/Timekeepers';
  // setup data source
  dscJT.DataSet := tblJT;
  tblJT.Open;

end;

end.

我已经在网站上查看了有关错误的所有问题,但没有一个场景与我的问题完全匹配。我还访问了 Embarcadero 的网站并阅读了有关 TableDirect 的信息,我认为这可能是一个可能的解决方案,但它已经在代码中了。From clause

SQL 数据库 Delphi 语法错误

评论

2赞 Ken White 10/31/2022
您发布的代码中的任何内容都不会产生您描述的错误,这意味着它发生在您未提供的代码中的其他位置。该代码中没有任何内容会导致被调用。TADOCommand.Execute

答:

-1赞 Kees de Kraker 11/1/2022 #1

也许是因为“法官/计时员”中的斜杠。

您是否尝试逐步调试代码?DataModuleCreate

评论

0赞 Ken White 11/3/2022
这是对原始问题的评论,而不是答案。也许是你有没有尝试过是建议,而不是答案。
0赞 Joao Bosco dos Reis Becker 11/8/2022 #2

你的错误就在这里

 tblJT.TableName := 'Judges/Judges';

您不能有具有该名称的表,也不能有 Judges 或 Timekeepers

你可以解决它:

 // setup table J
  tblJT.Connection := conArchers;
  tblJT.TableName := 'Judges';
  // setup data source
  dscJT.DataSet := tblJT;
  tblJT.Open;

分开

// setup table T
  tblJT.Connection := conArchers;
  tblJT.TableName := 'Timekeepers';
  // setup data source
  dscJT.DataSet := tblJT;
  tblJT.Open;