2010-11-17 33 views
1

Ceci est vieux! Est lié à delphi 5.0 et interbase 1.6. J'essaie d'ouvrir une connexion DB via du code. Mais ce code est lié à permettre la connexion, tous les composants ont été ajoutés par glisser-déposer Interface utilisateur delphi: DataSource1, TForm1, DBGrid, DBNavigator etc ..Delphi 5.0 Ouvrir la connexion Interbase/FireBird via le code

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

    myTable.Open; 
end; 

J'ai un TForm avec le composant DBGrid et DBNavigator. J'ai aussi un TIBQuery (qui DataSource1 est associé) avec ce code sur les SQLStrings:

SELECT * FROM NEW_TABLE 

Sur le formulaire, j'ai ce code pour permettre de montrer les valeurs DB DBNavigator et DBGrid. Le DB est très simple est juste une table: NEW_TABLE avec un NEW_VALUE de type VARCHAR

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; 

Le message suivant apparaît: IBClientError avec le message 'Base de données non affecté'

OBS1: Si je connecte les composants à la main Sur l'interface utilisateur Delphi, la connexion avec le DB est établie.

+0

Avez-vous créé une instance de TDataModule2? –

+0

oui, je vais changer la description, le TDataModule2 n'est pas désiné par la source mais avec le Delphi UserInterface, tous les composants ont été mis avec le deli-glisser-déposer ui: DataSource1, TForm1, DBGrid, DBNavigator etc. – okami

+0

J'ai changé le code, j'ai appelé DataSource1.DataSet.Open; l'erreur apparaît IBClientError avec le message 'Base de données non affectée' – okami

Répondre

1

Vous devez attribuer la propriété Database de votre requête, quelque chose comme:

IBQuery1.Database := MyDatabase; 
+0

Il est défini sur: DataModule2.database, base de données Je pense qu'il est somenthing très spécifique comme alias BDE quelque chose comme ça ... Je le cherche. – okami

+0

Je crois que si elle était définie vous n'obtiendrez pas l'erreur, s'il vous plaît vérifier à nouveau. Vérifiez également la transaction, BTW. –

+0

Obtenez-vous la même erreur si vous ouvrez la requête au moment du design (en affectant true à la propriété Active)? Vous devez vérifier l'affectation de la base de données (peut-être est-elle perdue au moment de l'exécution) car le seul endroit et la seule situation où une erreur est générée dans TIBCustomDataSet.ActivateConnection si la propriété Database est nulle. – jachguate