cs_piep14
Messages postés345Date d'inscriptionlundi 15 mars 2004StatutMembreDernière intervention13 mai 2011
-
12 juil. 2005 à 17:15
cs_piep14
Messages postés345Date d'inscriptionlundi 15 mars 2004StatutMembreDernière intervention13 mai 2011
-
14 juil. 2005 à 18:26
Bonjour, ma question est la suivante. J'ai fait une petite application avec deux fenetres. Une principale et une seconde qui en découle grâce à un bouton.
Je saisie dans ma seconde fenêtre un mot qui doit s'afficher dans la premiere une fois revenu dedans. Voila !!
cs_piep14
Messages postés345Date d'inscriptionlundi 15 mars 2004StatutMembreDernière intervention13 mai 2011 12 juil. 2005 à 17:50
Si la question est (oups j'ai pas mis de ? ) :) donc :
Je veux saisir un mot dans la seconde fenetre et quand je clique sur retour (this.close) et que j'arrive sur la page principal, le mot doit s'afficher.
En faite, le mot que je saisie dans la seconde fenetre s'enregistre dans ma bdd mysql. Et donc quand je reviens sur ma page principal, je souhaite qu'il inspecte a nouveau la bdd.
cs_piep14
Messages postés345Date d'inscriptionlundi 15 mars 2004StatutMembreDernière intervention13 mai 2011 12 juil. 2005 à 18:25
Bah je souhaite relire la bdd, car dans la second Form, j'ai fais un UPDATE de la bdd et donc si je ne relis pas la bdd, je ne peux pas voir que la valeur a été modifiée !!!
Troborg
Messages postés65Date d'inscriptionsamedi 24 avril 2004StatutMembreDernière intervention 1 août 20056 12 juil. 2005 à 18:37
Même en ayant fait un update dans la form, ce n'est pas forcément un motif pour ré-interroger la base de donnée quand tu reviens dans la form principale..
(Générallement on évite d'interroger une base quand on peut facilement l'éviter..)
En fait tout dépend si les accès à ta base de donnée sont couteux...
Si tu n'as pas de contrainte en terme "nombre d'accès à la base de donnée", rien ne t'empèche de l'interroger à chaque fois que tu reviens sur la form principale...
Si tu veux améliorer tes performances, la solution des events est intéressante...
cs_piep14
Messages postés345Date d'inscriptionlundi 15 mars 2004StatutMembreDernière intervention13 mai 2011 12 juil. 2005 à 18:41
Oui je peux accéder tant que je veux a la bdd, ce n'est pas le problème. Mais pourquoi quand je reviens sur la form, il ne relis pas dans la bdd comme si le Load de la form principal était lu qu'une seule fois !!!!
Peux être que c'est parce que je ne la ferme pas entre les deux form !!
Je fais
Anabel anabel = new Anabel();
anabel.ShowDialog();
Troborg
Messages postés65Date d'inscriptionsamedi 24 avril 2004StatutMembreDernière intervention 1 août 20056 12 juil. 2005 à 18:49
ok..
J'ai saisis ce que tu voulais faire...
En fait le load de ta fenêtre principale n'est appelé qu'au chargement de celle-ci...
Quand tu appelles une autre fenêtre modale puis que tu la quittes et
reviens dans ta fenêtre principale, la méthode load de celle-ci n'est
pas rappelée...
Si tu souhaites effectuer des actions à la fois dans ton load et quand tu quittes les fenêtres modales,
tu peux par exemple définir une méthode :
private void monRefreshAMoi()
{
....
}
que tu appelleras à la fois dans le load, et après la fermeture de tes fenêtres modales (bref, après tes "ShowDialog" !).
Voila, a priori ça doit résoudre ton problème..
(PS : mais les events.. C'est sympa aussi.. et ça pouvait marcher... lol... )
Mimoza222
Messages postés14Date d'inscriptionlundi 11 juillet 2005StatutMembreDernière intervention23 avril 2008 12 juil. 2005 à 18:53
Le plus simple est de renvoyer le résultat de ton Update dans un event
a ta première fenêtre, je ne pense pas que ce soit la peine de relire
ta BDD (couteux en terme de temps). Et pour la question du Load, c'est
juste au chargement de ta fenetre, si tu veut ré-executer ton Load il
faut fermer et réouvrir ton form ...
Troborg
Messages postés65Date d'inscriptionsamedi 24 avril 2004StatutMembreDernière intervention 1 août 20056 13 juil. 2005 à 22:21
Euh..
Je ne saisis pas trop l'intérêt...
Si ton objectif est de recharger la forme principale, tu peux (dans la form principale) :
- appeler la fonction load après que la 2nde form ait rendu la main (après le "ShowDialog")
ou
- comme proposer ci-dessus, définir et utiliser une méthode "monRefreshAMoi()" que tu appelleras à la fois dans le load, et après la fermeture de la 2nde form.
(ces 2 méthodes revenant strictement au même !)
Le problème de vouloir fermer la form principale, c'est que
généralement toutes les autres forms en dépendent... et que donc elles
se retrouveraient fermées en même temps...
Pour faire ce que tu veux, il faudrait que ce soit géré avant ta form
principale, bref dans la fonction "Main" (qui se trouve générallement
dans un fichier "Program.cs" si tu utilises Visual Studio).. Et ça
risque de devenir du bidouillage inutile...
(Sans compter que pour l'utilisateur, voir la form se fermer et se réouvrir n'est pas forcément terrible)
Troborg
Messages postés65Date d'inscriptionsamedi 24 avril 2004StatutMembreDernière intervention 1 août 20056 14 juil. 2005 à 15:32
Que contient ta méthode "Principale_Load()" ?
Le plus facile serait peut-être que tu te fasses une méthode "Principale_Load" (ou autre !) dans ta form principale,
puis que tu l'appelles après le "ShowDialog()", toujours dans la form principale.
Faire la mise à jour que tu veux au moment où l'exécution revient dans ta form principale est simple.
Par contre lancer cette même mise à jour depuis une autre form te
demande quelques manipulations supplémentaires (en fait ça demande
d'utiliser une référence telle que proposée par [auteurdetail.aspx?ID=5912 MorpionMx] ou dans le lien que j't'avais filé : [forum.v2.aspx?ID=484702 http://www.csharpfr.com/forum.v2.aspx?ID=484702])
Si tu voulais mettre la form principale à jour régulièrement, utiliser des références ou des events serait nécessaire,
mais dans la mesure où tu ne souhaites la mettre à jour qu'au moment où
tu retournes dessus, ça te demandera moins de travail de faire la mise
à jour depuis la form principale elle-même..
string MySQLCmd2 = "select * from `reseaux` WHERE `ip`='1.1.1.1'";
MyAdapter.SelectCommand = new MySqlCommand(MySQLCmd2, Connection);
MyAdapter.Fill(ds2);
(la boucle ne sert à rien.. vu que tu ne gardes que la dernière valeur)
Au passage :
la façon que tu utilises pour écrire tes requêtes sql est assez dangereuse car attaquable par injections sql..
Il vaudrait mieux que tu utilises des paramètres !
(ou au minimum ajouter ".Replace("'","''");" à toutes les chaines que tu passes... par exemple après "Environment.UserName" et "utilisateur" mais ça reste dangereux)
Un exemple d'utilisation de paramètres pour sql (pour mysql je présume que ça doit être pareil..)
string MySQLCmd = "UPDATE `reseaux` SET `utilisateur`=@user";
cs_piep14
Messages postés345Date d'inscriptionlundi 15 mars 2004StatutMembreDernière intervention13 mai 2011 14 juil. 2005 à 18:26
CITATION : parfois tu utilises "tblogin.Text", parfois "VotreNom.Text" (j'ai l'impression que c'est sensé être la même chose... je me trompe ?)
Non ce n'est pas la meme chose, le login c'est par rapport a la bdd et le nom, c'est le votre !!!
Par contre, le Principal_Load(); je ne dois pas le positionner au bon endroit car cela ne change rien !!!! Je l'ai mis après la fermeture de la seconde form !!!