提问人:Catherine Kies 提问时间:10/31/2022 最后编辑:Remy LebeauCatherine Kies 更新时间:11/8/2022 访问量:133
FROM 子句中的 Delphi 语法错误,但没有 from 子句
Delphi Syntax error in FROM clause, but no from clause
问:
我是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
答:
-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;
评论
TADOCommand.Execute