Problème de mise a jour BBD [Résolu]

Signaler
Messages postés
160
Date d'inscription
mardi 17 janvier 2006
Statut
Membre
Dernière intervention
9 décembre 2018
-
Mayzz
Messages postés
2811
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
-
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 !


nicolas

19 réponses

Messages postés
2811
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
23
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.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
60
Pas trop mon domaine, mais je pense que cela est normal..

tu sembles avoir rempli un Dataset avec des infos provenant de ta base.

libre a toi de les modifier ensuite dans ton dataset, mais il te faudra les pousser vers ta base si tu veux les conserver...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
160
Date d'inscription
mardi 17 janvier 2006
Statut
Membre
Dernière intervention
9 décembre 2018

bonjour

merci mais normalement c'est fait
je fais un update(....)
de mon dataset
nicolas
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
60
Je fais du .Net... mais je ne joues pas avec les bases de données.

Etrange comportement que tu nous décrit là.
J'imagine que cela depend tres fortement du type de base que t attaques...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
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
Messages postés
2811
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
23
@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.
Messages postés
160
Date d'inscription
mardi 17 janvier 2006
Statut
Membre
Dernière intervention
9 décembre 2018

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 ?

merci

nicolas
Messages postés
2811
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
23
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.
Messages postés
160
Date d'inscription
mardi 17 janvier 2006
Statut
Membre
Dernière intervention
9 décembre 2018

bonjour,

encore une question (je sais j abuse), comment faire pour changer le data source de mon DataSet fortement typé
je ne vois pas ou il est ?

je suis quand même pas obliger de le re créer !

merci

nicolas
Messages postés
2811
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
23
Non tu n'abuse pas, le forum est fait pour ça. Tant que les questions sont posés dans le respect de la communauté et du règlement.

Par contre je ne comprends pas ce que tu veux dire par "changer le data source de mon DataSet fortement typé".

Un DataSet ne possède pas de DataSource, il est une DataSource.


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
160
Date d'inscription
mardi 17 janvier 2006
Statut
Membre
Dernière intervention
9 décembre 2018

ok , mais je change ou le lien a la base de donnée comme tu ma conseiller de le faire ?

Data Source=|DataDirectory|\Database1.sdf

nicolas
Messages postés
2811
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
23
Dans les paramètres de l'application My Project> Paramètres. Tu auras une chaîne de connexion modifie le chemin.


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
160
Date d'inscription
mardi 17 janvier 2006
Statut
Membre
Dernière intervention
9 décembre 2018

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 !


nicolas
Messages postés
2811
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
23
Ah ben ça arrive parce que tu n'actualise pas ton DataGridView tout simplement.

Au load du formulaire ton DataTable est rempli par une ligne du genre :

MonTableAdapter.Fill(MaDataTable)

Utilises cette ligne à nouveau après le remplissage.

Après tout dépend de la façon dont tu exécute ta requête Insert, si c'est par code c'est normal.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
160
Date d'inscription
mardi 17 janvier 2006
Statut
Membre
Dernière intervention
9 décembre 2018

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 !!

ma bbd me change pas, le mystère demeure

nicolas
Messages postés
2811
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
23
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.
Messages postés
160
Date d'inscription
mardi 17 janvier 2006
Statut
Membre
Dernière intervention
9 décembre 2018

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 ?

encore merci de ton aide


nicolas
Messages postés
2811
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
23
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.