【发布时间】:2011-12-15 20:29:34
【问题描述】:
我有 2 个 mdb 链接。原始.mdb(不要碰)和一个copy.mdb
我一直在使用它来检查表是否存在:
function CheckIfTableExists(myTable : AnsiString): boolean;
var
x := Integer;
bTrue : boolean;
begin
f1.ADOConnection1.GetTableNames(f1.ListBox1.Items,False);
bTrue := false;
for x := 0 to f1.ListBox1.Items.Count -1 do
begin
if (f1.ListBox1.Items.Strings[x] = myTable) then
begin
bTrue := true;
end;
end;
if (bTrue = true) then
begin
Result := True;
end
else
Result := false;
end;
end;
我确信有更好的方法可以做到这一点,但到目前为止它对我来说效果很好。
现在我需要检查是否存在指向另一个 mdb 表的链接。有人知道怎么做吗?
I.Bagon
【问题讨论】:
-
最后的
if很奇怪。为什么不Result := bTrue?但是bTrue不是个好名字。只需摆脱它并直接分配给Result。当你找到一个匹配时,你不想打破外观吗? -
除此之外,区分大小写将在这里发挥作用。如果 myTable 值的大小写与实际表名不同,则不会找到它。 Delphi 不是 Access。 Delphi 中使用
=的字符串比较区分大小写。你最好使用if SameText(Value1, Value2) then。 -
@DavidHeffernan:谢谢你的想法。我实际上编写了这段代码来说明这一行: f1.ADOConnection1.GetTableNames(f1.ListBox1.Items,False);通常我不会阅读过多的内容,而 bTrue 这个名字只是我脑海中浮现的第一件事。我真的在徘徊,是否有类似的方法来获取链接表名?
-
@MarjanVenema:老实说,我更喜欢区分大小写,当我回复 David Heffernan 时,这段代码旨在说明一个关键行。感谢您的回复。
标签: delphi ms-access delphi-7 ado