
Envoyé par
BuzzLeclaire
Mais je n'ai pas choisi d'enregistrer le connectionString ni dans un ini ni dans la base de registre, je te conseil d'enregistrer ce chemin directement dans un champs de Ta BD, ce qui aura pour avantage de fonctionner en réseau si d'autre personne se connect à ta BD.
comment??
, normalement chaque client son propre fichier ini?? non
[Edit] en conseption
1-loginprompt=false
2-doublclick sur adoconnection
3-construit la chaine de connection
4-copie la chaine à partir d'inspecteur d'objet sans se connecte(adocnnection.connet=false)
5-insert cette chine dans le code comme const, et en la modifiant comme suit: exp:
Filt:='Provider=VFPOLEDB.1;Data Source=%s;Password="";Collating Sequence=MACHINE';
6-à toi de coisir où tu veux enregistré le chemain:fichier ini,base de registre, fichier normal
là je donne un example avec dérnier méthode:
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| const
Filt='Provider=VFPOLEDB.1;Data Source=%s;Mode=ReadWrite;'+
'Password="";Collating Sequence=MACHINE';
var mot:string;//chemain de la base
Function TDataModule2.ChangeBase;
var
b:boolean;
l:TStrings;
s:string;
begin
Result:=false;
repeat
b:=OpenDialog1.Execute;
if not b then exit;
mot:=OpenDialog1.FileName;
until FileExists(mot);
l:=TStringList.Create;
s:=ExtractFilePath(Application.ExeName);
if s[length(s)]<>'\' then s:=s+'\';
s:=s+'Fichier.sys';
try
l.Clear;
l.Add(mot);
l.SaveToFile(s);
finally
l.Free;
end;
Result:=True;
end;
Function TDataModule2.Lire:Boolean;
var
l:TStrings;
s:string;
begin
Result:=false;
s:=ExtractFilePath(Application.ExeName);
if s[length(s)]<>'\' then s:=s+'\';
s:=s+'Fichier.sys';
if not FileExists(s) then exit;
l:=TStringList.Create;
try
l.LoadFromFile(s);
mot:=l.text;
finally
l.Free;
end;
result:=(mot<>'') and (Fillexiste(mot));
end;
Function TDataModule2.Connection;
var s:string;
begin
try
s:=format(Filt,[mot]);
if ADOConnection1.Connected then
ADOConnection1.Connected:=false;
ADOConnection1.ConnectionString:=s;
ADOConnection1.Connected:=true;
Result:=true;
except
Result:=false;
end;
end;
procedure TDataModule2.DataModuleCreate(Sender: TObject);
var i:integer;
begin
i:=3;
if not Lire then
while (not ChangeParam) and (i>0) do dec(i);
if i<0 then halt;
Connection;
end; |
ce code, je l'ai copier d'un anciens projet, actuellement, j'utilise FB, et les alias
Partager