首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FROM子句中的Delphi语法错误,但没有from子句

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

Stack Overflow用户
提问于 2022-10-30 18:25:08
回答 2查看 87关注 0票数 -3

我对Delphi非常陌生,还没有使用过SQL (我是一个完全的初学者)。

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

当我选择“中断”时,它会高亮显示代码的一部分的end;

代码语言:javascript
复制
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

这是我在datamodule中连接数据库时使用的代码:

代码语言:javascript
复制
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.

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

EN

回答 2

Stack Overflow用户

发布于 2022-11-08 13:29:27

你的错误就在这里

代码语言:javascript
复制
 tblJT.TableName := 'Judges/Judges';

你不能有一个有这个名字的表,或者法官或者计时员

你可以解决这个问题:

代码语言:javascript
复制
 // setup table J
  tblJT.Connection := conArchers;
  tblJT.TableName := 'Judges';
  // setup data source
  dscJT.DataSet := tblJT;
  tblJT.Open;

分离

代码语言:javascript
复制
// setup table T
  tblJT.Connection := conArchers;
  tblJT.TableName := 'Timekeepers';
  // setup data source
  dscJT.DataSet := tblJT;
  tblJT.Open;
票数 0
EN

Stack Overflow用户

发布于 2022-11-01 10:39:27

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

您是否尝试一步一步地调试到DataModuleCreate中的代码?

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74255668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档