gpt4 book ai didi

delphi - 使用 FIREDAC 创建表 MS ACCESS

转载 作者:行者123 更新时间:2023-12-02 17:55:13 25 4
gpt4 key购买 nike

使用 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 个带有约束的表)。

问候汤姆D

最佳答案

我没有测试这段代码,但它应该可以在你的海豚中工作。

function tableExists(TableName:String;Connection:TFDConnection):Boolean;
var
str: TStringList;
begin
str := TStringList.Create;
try
Connection.GetTableNames('','','',str);
result := str.IndexOf(TableName) <> -1;
finally
str.Free;
end;
end;

用法:

procedure TForm2.Button1Click(Sender: TObject);
begin
if not tableExists('SampleData',FDConnection1) then
begin
//create table here
end;
end;

关于delphi - 使用 FIREDAC 创建表 MS ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31671546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com