Bonjour,

Toute proportions gardées je programme un gestionnaire de base de données au format Access.
Mon logiciel doit être capable de créer des bases de données, de modifier des bases de données : ajout de tables et de requêtes, d'ajouter des champs aux tables et bien sur d'éditer des données. Un peu comme le Module de base de données dans Delphi 7 que j'utilise.
Le but est d'initialiser des bases qui vont servir dans et avec d'autres applications.
Voilà mon problème :
J'ai les procédure suivantes : créer une table (ADOX), ouvrir une base, Connexion et ajout d'une table "Agents",
Quand je crée une BD et que sans fermer l'application j'ajoute une table : tout se passe très bien.
Quand je crée une BD et que je ferme l'application, quand je rouvre la BD et que je tente d'ajouter une table, j'ai le message d'erreur : EOleExeption "Echec de l'authentification"
J'ai également ce message quand dans une base où j'ai réussi a ajouter des tables (et même saisi des données), je n'arrive pas à rouvrir la table, j'ai la même erreur ; pourtant ma saisie est visible avec MS Access.
Je ne comprends pas ce qui se passe après la fermeture de l'application, j'ai rien trouvé dans la FAQ et sur avec Gouguelle j'ai essayé plein de trucs ... rien de terrible, merci de votre aide des vos idées ...
Avec ça, je vais passer un mauvais Noël

Jean-Michel

Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
// Création BD Access avec ADOX
function CreateAccessDatabase(FileName: string): string;
var catalog: OLEVariant;
begin
  catalog := CreateOleObject('ADOX.Catalog');
  catalog.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + FileName + ';');
  catalog := NULL;
end;
 
// Crée une nouvelle base de données
procedure TForm1.Nouvellebase1Click(Sender: TObject);
begin
  If SaveDialog1.Execute then begin
    sFichierBase:=SaveDialog1.FileName;
    CreateAccessDatabase(sFichierBase);
    OuvreBase;
  end;
end;
 
// Ouvre un fichier de base
procedure TForm1.Ouvrirbase1Click(Sender: TObject);
begin
  If OpenDialog1.Execute then begin
    sFichierBase:=OpenDialog1.FileName;
    OuvreBase;
  end;
end;
 
// Connecte la base ADOConnection
procedure TForm1.OuvreBase;
begin
  ADOConnection1.ConnectionString:=
    'Provider=Microsoft.Jet.OLEDB.4.0;'
    +'Data Source='+sFichierBase+';'
    +'Persist Security Info=False';
 
  ADOConnection1.Mode := cmReadWrite;
  ADOConnection1.Provider:='Microsoft.Jet.OLEDB.4.0';
  ADOConnection1.LoginPrompt := False;
end;
 
// Ajouter la table "Agents"
procedure TForm1.AjouterTable1Click(Sender: TObject);
begin
 ADOCommand1.Connection := ADOConnection1;
 ADOCommand1.CommandText :=
  'CREATE TABLE Agents (nom TEXT(50),email TEXT(40),matricule TEXT(10))';
 ADOCommand1.Execute;
 
 ADODataSet1.Connection:=ADOConnection1;
 ADODataSet1.CommandText:='SELECT * FROM Agents';
 ADODataSet1.Active:=true;
end;