2010-11-17 53 views
1

這是舊東西!與delphi 5.0和interbase 1.6有關。Delphi 5.0通過代碼打開Interbase/FireBird連接

我試圖通過代碼打開數據庫連接。但是這個代碼是關係到實現連接,使用Delphi的拖放用戶界面添加的所有成分:DataSource1,TForm1,DBGrid的,的DBNavigator等。

procedure TDataModule2.DataModuleCreate(Sender: TObject); 
begin 
    database.DatabaseName:='C:\MyDatabase.GDB'; 
    database.Connected := true; 
    database.Open; 
    IBTransaction.Active := true; 

    myTable.Open; 
end; 

我有DBGrid中和的DBNavigator分量的TForm的。我也有一個TIBQuery與此代碼對SQLStrings(即DataSource1關聯到):

SELECT * FROM NEW_TABLE 

在窗體我有這樣的代碼來啓用的DBNavigator和DBGrid中顯示的DB值。該數據庫是非常簡單的只是一個表:NEW_TABLE用VARCHAR類型的NEW_VALUE

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    DataSource1.DataSet.Open; 
    // This will call the query associated to this DataSource1 the tibQuery1 to call 
    // SELECT * FROM NEW_TABLE, but the message below appears: IBClientError... 
end; 

出現消息: IBClientError有消息

OBS1「未分配數據庫」:如果我用手連接部件在delphi用戶界面上,建立與DB的連接。

+0

您是否製作TDataModule2的實例? – 2010-11-17 13:03:50

+0

是的,我會改變描述,TDataModule2是不是由源,但用delphi UserInterface設計,所有的組件都與德爾福拖放UI:DataSource1,TForm1,DBGrid,DBNavigator等.. – okami 2010-11-17 13:07:22

+0

我改變了代碼,我叫DataSource1.DataSet.Open;錯誤出現消息'數據庫未分配'的IBClientError – okami 2010-11-17 13:13:12

回答

1

你必須指定查詢的Database財產,喜歡的東西:

IBQuery1.Database := MyDatabase; 
+0

它被設置爲:DataModule2.database,數據庫 我認爲它非常具體,像BDE別名類似的東西...我正在尋找它。 – okami 2010-11-17 14:11:25

+0

我相信,如果它被設置,你不會得到錯誤,請再次檢查。同時檢查交易,順便說一句。 – 2010-11-17 14:28:14

+0

如果您在設計時打開查詢(將true指定爲活動屬性),是否會收到相同的錯誤?您應該仔細檢查數據庫分配(可能在運行時丟失),因爲如果Database屬性爲nil,則在TIBCustomDataSet.ActivateConnection中引發此消息的錯誤的唯一位置和情形。 – jachguate 2010-11-17 17:33:31