2011-10-31 13 views
3

如果我在Firebird數據庫中創建新表,然後我打電話:IBX TIBDatabase.GetTableNames不會顯示一個新創建的表

TIBDatabase.GetTableNames,新創建的表沒有得到enunmerated:我先來的問題:

IBDatabase1.Connected := False; 
IBDatabase1.Connected := True; 

,然後我可以叫TIBDatabase.GetTableNames,並有新創建的表列舉。

以下函數使用TIBDatabase.GetTableNames以確定給定的表名,爲參數

function TableExists(const aTableName: String): Boolean; 
var 
    ListOfExistingTables: TStringList; 
begin 
    Result:= False; 
    ListOfExistingTables:= TStringList.Create; 
    try 
    IBDatabase1.GetTableNames(ListOfExistingTables); 
    Result:= (ListOfExistingTables.IndexOf(aTableName) > - 1); 
    finally 
    ListOfExistingTables.Free; 
    end; 
end; 

回答

5

在火鳥即使元數據的變化在交易分離傳遞的存在。所以你必須提交你用來創建表的事務。也許你必須提交IBX用來讀取表名的事務。

+0

非常感謝!我發出IBTransaction1.InTransaction然後 IBTransaction1.Commit;現在所有人都像魅力一樣工作! –