2011-10-31 13 views
3

は表示されません。問題に最初に持っている:IBX TIBDatabase.GetTableNamesは私のFirebirdのデータベースに新しいテーブルを作成し、私が呼び出した場合、新しく作成されたテーブル

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

そして私はTIBDatabase.GetTableNamesを呼び出して、新しく作成されたテーブルを列挙することができます。

次関数は、パラメータのFirebirdで

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

もメタデータ変更がトランザクションに分離されているとして渡された所定のテーブル名の存在を決定するためにTIBDatabase.GetTableNamesを使用します。したがって、テーブルの作成に使用したトランザクションをコミットする必要があります。 IBXがテーブル名を読み取るために使用するトランザクションをコミットする必要があるかもしれません。

+0

非常におススメ!私は発行した場合IBTransaction1.InTransaction IBTransaction1.Commit;すべてが魅力のように今働いています! –

関連する問題