【发布时间】:2015-07-28 08:51:01
【问题描述】:
使用 FireDAC 连接 (Delphi Xe6) 在 MS ACCESS 中创建表时出现错误。
创建了一个新的数据库文件并使用 TFDCommand 或 TFDQuery 创建了 3 个表,这些表确实已创建,但我总是收到错误“表已存在”。任何阻止错误出现的建议。
我确实将代码包含在 try...Except 例程中。
代码:
FDCommand1.CommandText.Text := 'CREATE Table [SampleData] ' +
'([SampleID] INTEGER Primary Key NOT NULL, ' +
' [RiskIDX] INTEGER NULL,' +
' [RefSampleID] Char(10) NULL,' +
' [SerialNumber] Char(60) NULL,' +
' [TestDate] DateTime NULL,' +
' [ResampleDate] DateTime NULL,' +
' [SampleDate] DateTime NULL,' +
' [SamplingPoint] Char(60) NULL,' +
' [LabTech] Char(60) NULL, SampledBy Char(60) NULL,' +
' [Status] Char(60) NULL,' +
' [Source] Char(60) NULL,' +
' [Condition] Char(60) NULL,' +
' [PlotPnt] YESNO,' +
' [Comments] Memo' +
' CONSTRAINT FKSampleId Foreign Key SerialNumber
References AssetInfo SerialNo);';
或
FDQuery1.SQL.Text := Memo1.text; //Create table SQL command
FDQuery1.Prepare;
FDQuery1.Execute(200,0);
通过一些实验,我发现 FDCommand 和 FDQuery 组件在这种情况下不起作用;即使您事先检查表不存在,也不会。 (我不太清楚为什么 - 但在我看来 SQL 命令被发送了两次,因此表存在错误)。但是,FDConnection.ExecSQL 确实有效。尝试和测试(根据需要创建 3 个带有 CONSTRAINTS 的表)。
问候 汤姆德
【问题讨论】:
-
@kobik 是的,当然,今天不是我的日子:)谢谢。