Fichier de configuration et saveFileDialog

Signaler
Messages postés
5
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
2 août 2006
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Bonjour,

Je developpe actuellement un programme en C# qui utilise un base de données Access (aussi bien en lecture qu'en écriture).  J'ai donc placé la chaine de connexion a la base de données dans un fichier de configuration :

Provider=Microsoft.Jet.OLEDB.4.0; Data Source=base.mdb;User ID=Admin;Password=;"
Ma base se trouvant dans le même répertoire que l'application, j'ai donc mi en DataSource uniquement le nom de ma base (ce qui facilite également le déploiement car quel que soit la machine, l'utilisateur n'aura pas a changer le fichier de configuration sauf si il change la base de place).

Dans ce programme, j'utilise également une saveFileDialog afin d'enregistrer un fichier texte.
Lors d'une utilisation "normale", le programme fonctionne correctement. Il lit et écrit parfaitement dans ma base. Les choses se complique lorsque j'ouvre la saveFileDialog. En effet si je navigue dans l'arborescence, le programme considère que l'emplacement de la saveFileDialog est celui de la base de données (par exemple si je souhaite enregistrer mon fichier texte sur le bureau, le programme ira chercher la bdd sur le bureau, ce qui provoque une erreur).

Quelqu'un aurai t'il une solution a mon problème?

Julius

Microsoft Certified Professionnal

16 réponses

Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
29 janvier 2008
1
    ?!? lol aucun rapport avec ton fichier text / ta base de données ... comprend pas ou tu veux en venir ...
Messages postés
24
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
10 août 2007
1
T'utilises surement un Environment.CurrentDirectory.ToString() pour avoir le chemin de ta BDD.. or cette classe permet d'accéder au repertoire que tu est en train d'utiliser (donc le bureau au bout d'un moment si t'y accede avec ton savefile)
J'te conseille donc de faire une variable execpath=Environment.CurrentDirectory.ToString()  à l'ouverture de ton application,  qui elle, ne changera pas malgrès une utilisation de ton saveFileDialog

OxN
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Salut

OxN -> Application.StartupPath, plus simplement.

Mx
MVP C# 
Messages postés
24
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
10 août 2007
1
Ou ouais, aussi ouais!

OxN
Messages postés
5
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
2 août 2006

Le souci, c'est que Application.StartupPath fonctionnera tant que l'utilisateur ne bougera pas la base de données du répertoire de l'application. Mais si il l'a change de place, il risque d'y avoir un problème...

Julius

Microsoft Certified Professionnal
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Oui mais a ce moment, ce probleme se posera pour toutes les situations, tant que tu utiliseras un chemin relatif dans ta chaine de connexion.

Si tu laisse ta chaine de connexion telle qu'elle est la, et que ton utilisateur bouge la bdd, cela plantera aussi...

Mx
MVP C# 
Messages postés
24
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
10 août 2007
1
Evidemmment...  tu peux loader ton appli,  en demandant au user où se trouve ta BDD, si tu tiens absolumment a ce qu'il puisse la changer d'emplacement...

OxN
Messages postés
5
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
2 août 2006

En effet vous avez tous a fait raison. Mais comment utiliser Application.StartupPath avec ma chaine de connexion?

Julius

Microsoft Certified Professionnal
Messages postés
24
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
10 août 2007
1
Bon beh apparemment, on a repondu à sa question.. lol.. pas mal pour sa premiere!

OxN
Messages postés
24
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
10 août 2007
1
Datasource = Application.StartupPath+"\base.mdb"
Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
29 janvier 2008
1
    Tu veux pas qu'on te fasse ton appli non plus ? :p

je sais po t'as plein de possibilité

Data Source=base.mdb <= dans le appSetting
et quand tu recup ta connection String <un StringBuilder> tu concat avec Application.StartupPath + ConfigurationManager.AppSetting["Data Source"]; ...

et pis voila ...
Messages postés
5
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
2 août 2006

Ok merci a tous pour votre aide

Julius

Microsoft Certified Professionnal
Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
29 janvier 2008
1
    ... de rien ... mais la des questions comme ca venant d'un MCP ... sa me fait peur ! :p faudrai qu'il revoi leur formulaire de recrutement chez kro$soft

have a nice day ;)

++
Messages postés
5
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
2 août 2006

lol oui je t'avoue que j'ai pas trop réfléchi avant de poser la dernière question ;)
++
Julius

Microsoft Certified Professionnal
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Un peu d'indulgence bernie.


Tout le monde a le droit a l'erreur, tout le monde peut avoir un passage a vide, tout le monde a le droit d'avoir un doute.


Que ce soit un debutant, un dev confirmé ou un mcp.
D'ailleurs, qui te dit qu'il est MCP en C# ? en .Net ? Et meme MCP en prog ?


Enfin bref, j'aimerais que tu sois un peu moins virulent dans tes propos s'il te plait.
On est la pour aider, pas pour porter des jugements.





Mx
MVP C#
 
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
Datasource = Application.StartupPath+"\base.mdb"


Non non...
Datasource = System.IO.Path.Combine(Application.StartupPath, "base.mdb");

/*
coq
MVP Visual C#
CoqBlog
*/