Bonjour,
Pour tester la connection, notamment lors de la première utilisation, sur l'évènement BeforeConnect de mon ADOConnection, j'ai écrit ce code.
Ce que je ne comprends pas c'est que si la base n'est pas trouvée la proc boucle entre path:=ExtractFilePath(Application.EXEName) et ADOConnection1.Connected:=true sans écrire dans le fichier ini. J'ai oublié quoi?
Je vous soumet ma proc avec quelques commentaires
D'avance merci
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 //================================================ procedure TDM.ADOConnection1BeforeConnect(Sender: TObject); begin path:=ExtractFilePath(Application.EXEName); FichierIni :=TIniFile.Create(path+'CDJ.ini'); BaseEnCours:=FichierIni.ReadString('DataBase','DataSource','nonbd'); if FileExists(BaseEnCours) then begin //ADOConnection1.Connected:=false; ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=' +BaseEnCours +';Mode=ReadWrite;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";' +'Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;' +'Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";' +'Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;' +'Jet OLEDB:Don''t Copy Locale on Compact=False;' +'Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False'; ADOConnection1.Connected:=true; exit; end else ShowMessage('Impossible de trouver le fichier de données.' + chr(10) + chr(13)+'Il a peut-être été déplacé ou renommé.'+chr(10)+chr(13)+'Indiquez l''emplacement de ce fichier'); with TOpenDialog.Create(Application) do begin Title := 'Ou se trouve le fichier de données?'; Filter := 'Fichier CDJ (*.mdb)|*.mdb'; if Execute then if FileExists(FileName) then begin ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ Filename + ';Persist Security Info=False'; ADOConnection1.LoginPrompt := false; ADOConnection1.Connected:=true; ===> ici il boucle au début de procédure sans ecrire dans le fichier ini //Ecrire dans le fichier ini FichierIni.WriteString('DataBase','DataSource',FileName); end else begin ShowMessage('Erreur! Aucun fichier de sélectionné.'); ADOConnection1.Connected:=false; Application.Terminate; Ici quand je clique sur le bouton annuler de la boite 'Ouvrir fichier' L'application ne se termine pas !!!!! On retrouve la boucle précédente. end; end; end;
Codial
Partager