garnier54
Messages postés158Date d'inscriptionmardi 17 janvier 2006StatutMembreDernière intervention 9 décembre 2018
-
27 janv. 2012 à 11:10
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 2020
-
29 janv. 2012 à 22:14
Bonjour,
je me forme en ce moment avec Visual studio2010, et je fais un développement avec une base sql dans mon projet.
(la base est dans mon projet)
J'ai un problème très étrange. les modifications des enregistrements sont bien faites dans mon programme sur le data set et la programme se termine correctement. par contre les données ne sont pas mise a jour dans ma base sql !!!
Mémé chose en créant un gridview automatique a partir d un dateset (pourtant je sauvegarde ) la base m'est pas mise a jour !!
Merci de votre aide sur ce problème qui me dépasse !
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 28 janv. 2012 à 08:22
Bonjour, Mayzz
Je dois dire que je n'ai rien compris non plus.
Comment, en mode exécution, un code pourrait-il modifier les enregistrements d'une table qui serait "incluse dans le projet" ?
Cela échappe totalement à ma compréhension.
A garnier54 : peux-tu nous préciser ce que tu entends exactement par :
avec une base sql dans mon projet.
(la base est dans mon projet)
?
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 28 janv. 2012 à 08:28
Le seul mécanisme que je parviendrais à comprendre et accepter (dans l'état de mes connaissances) serait celui-ci :
- une ou des table(s) dont la/les structure(s) seules seraient définies par le projet
- les enregistrements quelque part ailleurs sur le disque dur
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 28 janv. 2012 à 08:59
@Renfield> En effet on rencontre ce comportement pour les bases locales SQL CE.
@ucfoutu> Ce n'est pas si compliqué à comprendre en réalité. Le fichier de base de données est simplement considéré comme un fichier de dépendance externe au projet. Tu peux constater en ouvrant VB, en créant une base locale et en cliquant sur celle-ci dans l'explorateur qu'elle comporte l'attribut "copier dans le répertoire de sortie" et que celui-ci à pour valeur par défaut "Copier si plus récent". Donc lors ce que tu effectue une modification sur la structure ou le contenu de ton fichier de base modèle celui-ci vient remplacer le fichier de base qui est ouvert en exécution engendrant ainsi une perte de données car la base existante est remplacée.
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
garnier54
Messages postés158Date d'inscriptionmardi 17 janvier 2006StatutMembreDernière intervention 9 décembre 2018 28 janv. 2012 à 17:34
bonjour,
merci bcp, est assez incroyable cette façon de faire !
cela fait plusieurs jours que je passe a essayer de trouver le problème de mon programme !!
cela n 'est explique nul part (dans aucun livres sur ado.net)
Cela débouche sur une autre question. comment faire pour contrôler les tables de ma bbd après mise a jour ?
faut t il me pas faire figurer ma base dans mon projet ?
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 28 janv. 2012 à 17:58
Cela est possible car tu as créé un DataSet fortement typé en ajoutant ta base. Ou du moins tu as continué l'assistant qui te proposait de créer un DataSet. Dans ce cas l'assistant te crée une chaîne de connexion de ce type
Data Source=|DataDirectory|\Database1.sdf
Cette chaîne ne précise pas de chemin absolu mais relatif. Si tu souhaite utiliser la base de ton projet directement il te suffit d'indiquer le chemin de celle-ci dans ta chaîne de connexion (qui se trouve dans les paramètres d’application). Attention après compilation il te faudra remettre la valeur originale car sinon tu ne pourras pas distribuer ton application.
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
garnier54
Messages postés158Date d'inscriptionmardi 17 janvier 2006StatutMembreDernière intervention 9 décembre 2018 28 janv. 2012 à 20:10
bonjour,
je viens de vérifier mon chemin est bien (pas de coordonnées relative).
je vais craquer !
en plus il me fait un truc très Etrange
je modifie mes lignes de mon gridview et je sauvegarde ( la disquette). j’actualise ma bbd aucun changement quand je regarde ma table dans ma bbd.
je relance l'application et la ho surprise dans mon gridview mes modifications sont prises en compte !!
c'est a plus rien comprendre
je sauvegarde a nouveau et même chose tj rien dans ma base !
garnier54
Messages postés158Date d'inscriptionmardi 17 janvier 2006StatutMembreDernière intervention 9 décembre 2018 28 janv. 2012 à 23:11
bonjour
ca explique pas pourquoi la table de ma bbd n 'est pas a jour ?
en plus j'ai utilise pour le teste le gridwiew tout fait de microsoft
j'ai juste un bbd avec une table, je cré un data set fortement typé. j'ouvre une souce de donné et je cré mon dataset avec le bandeau de défilement, supprimer , enregister etc
je fait qq modification de mes enregistrements et je sauvegarde avec la disquette. je fais pas une ligne de programmation !!
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 29 janv. 2012 à 02:43
En fait le DataSet et les DataTables sont des classes instanciables et sont le résultat d'une requête SELECT. C'est une sorte de cache des données. Donc si tu met à jour ta réelle, celle de ta vrai base de données, c'est-à-dire le fichier physique la base virtuelle elle ne se met pas à jour automatiquement.
D'ou le remplissage via la méthode Fill. La méthode Fill du TableAdapter envoie une requête SELECT vers le système de gestion des données et récupère le résultat pour le placer dans la Table instanciée. Le TableAdapter possède une propriété ClearBeforeFill qui efface la table avant de la remplir. Cette propriété est à true par défaut.
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
garnier54
Messages postés158Date d'inscriptionmardi 17 janvier 2006StatutMembreDernière intervention 9 décembre 2018 29 janv. 2012 à 21:58
bonjour,
j'ai enfin compris en fait comme tu me l'as indiqué
mon application compilé, ainsi que une copie de ma BBD se retrouve dans la répertoire BIn. Si je lance l application a partir de 'BIN' ma base est bien mise a jour !!
Je me comprends pas pourquoi MS a fait cela !
car pour développer c'est vraiment la galéré
Je dois a chaque modification pour tester mon programme ouvrir le répertoire bin, lancer l application et en plus impossible d ouvrir ma bbd SQL pour vérifier mes tables a partir de Bin. Bef c'est pas possible de travailler ainsi !!
La modification de data source ne change rien, ma bbd m'est pas modifier dans mon application de base !
Je pense et j espéré qui il a une autre solution pour développer une application avec une bbd SQL !!
Je suis preneur si vous savez comment faire.
peut être faut il ne pas mettre la bbd dans l application mais la créer avec sql manager par ex ?
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 29 janv. 2012 à 22:14
En fait tu as du mal t'y prendre. Le programme utilise le fichier indiqué dans la chaine de connexion.
Donc il faut que tu précise le chemin de ta base réelle. Autrement dit celle de ton projet et non du BIN. Après ça enregistre ton projet et réessaye. Tu ne travailleras plus que sur une base, celle de ton projet.
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 28 janv. 2012 à 00:31
Salut,
Bien tenté Renfield, tu y étais presque ^^ (En effet c'est pas évident quand on ne fait pas ou peu de .Net)
En fait le problème vient du fait que lors de l'exécution ton projet est copié dans le répertoire Bin\Debug (ou Release selon la config de ton projet). La base de données est alors copié si la structure de celle-ci à été modifié.
Donc les données qui s'affichent sont celles de la base du dossier Bin et non de la base modèle, celle qui se trouve dans l'explorateur de solution à la racine du projet.
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.