loic20h28
Messages postés207Date d'inscriptionmardi 19 juin 2007StatutMembreDernière intervention22 février 2016
-
29 févr. 2008 à 15:05
olibara
Messages postés666Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention11 mars 2010
-
15 mars 2008 à 18:14
Bonjour à tous,
Voila j'aimerais que les données se trouvant dans mon DataGrid soit enregistré dans ma base SqlServer 2000.
J'ai commencé a réaliser cela :
CODE :
SqlDataAdapter MonAdapter=
new SqlDataAdapter();dataGrid2.Update();
DataTable dt=(DataTable) dataGrid2.DataSource;
MonAdapter.Update(dt);
Mais il m'affiche une erreure lorsque j'arrive à la 3éme ligne : " DataTable dt=(DataTable) dataGrid2.DataSource; "
L'erreur est la suivante : "
Informations supplémentaires*: Le cast spécifié n'est pas valide.
"
Je vois pas comment faire pour résoudre ce problème, avez-vous une idée??
Feriez-vous de cette manière là ou d'une autre?? Si c'est d'une autre expliqué moi comment.
loic20h28
Messages postés207Date d'inscriptionmardi 19 juin 2007StatutMembreDernière intervention22 février 20162 3 mars 2008 à 16:23
Excuse moi mais comment veux-tu que je fasse pour ne pas étaler plus le code?? je l'ai déja arrangé je trouve. Je peux pas trop réduire!!
Qu'appelle tu "Watch Windows"?? Car si je regarde bien le site suivant : http://msdn2.microsoft.com/fr-fr/library/ms165042.aspx il n'est pas applicable pour C# Standard. Enfin tout dépend ce qu'ils appels "standard" et "Pro et Team"?? !!
olibara
Messages postés666Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention11 mars 20106 3 mars 2008 à 16:36
Ecoute
Ou plutot ouvre tes yeux
Relis le dernier message ou tu a mis du code et relis ma reponse tu verra que chez toi la simple instruction
DataSet ch = new DataSet();
Prends 4 lignes et chez moi 1 seule !
Si tu vois pas ca change de jumelles !
Et si tu sais pas comment faire pour ecrire autrement alors je ne suis par competent pour t'aider
Le watch window est la fenetre de ton environnement de développement C# qui te permet de visualiser tes variables pendant le debuguage
Et si tu me demande c'est quoi C# ou c'est quoi mes variables ou c'est quoi le débuguage je ne suis plus compétent non plus..
olibara
Messages postés666Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention11 mars 20106 3 mars 2008 à 17:21
Ne te fais pas de mal quant meme !
Accessoirement le debuguer et le watch windows te permettent de tracer pas a pas ce que tu fait et surtout ce que fait ton code (je ne sais pas le faire de chez moi pour toi)
D'autre part, ca fait deja plusieurs chose que tu n'avait pas vu ou pour lequelles tu n'avait pas "fait gaffe"
Fait donc un peu plus gaffe, sois plus attentif au déroulement logique de ce que tu ecrit c'est déja un bon chemin pour te sortir de ce putain de problème dans lequel tu traine depuis 3 jours et qui a mon avis peut etre reglé en 5 minutes avec des bons yeux, un minimum de compétence et tout ce que je t'ai deja dis !
Vous n’avez pas trouvé la réponse que vous recherchez ?
loic20h28
Messages postés207Date d'inscriptionmardi 19 juin 2007StatutMembreDernière intervention22 février 20162 3 mars 2008 à 17:38
Ben j'ai déja fais le débugage c'est comme ça que j'ai pu en conclure qu'il ne rentrer pas dans les "if" et qu'il me disait que "ch = valeur non définie".
Donc je vois pas comment faire, comment résoudre mon problème.
Je vois pas comment utiliser le watch windows, c'est ça que je voulais savoir.
loic20h28
Messages postés207Date d'inscriptionmardi 19 juin 2007StatutMembreDernière intervention22 février 20162 3 mars 2008 à 18:10
DataSet ch = new
DataSet(); // ch maintenant represente un dataset (cliqk droit watch)
--> Lorsque je fais click droit, je n'est pas de "watch".
ch = ds.GetChanges(DataRowState.Deleted); // ds est il bien celui que tu a utilisé au depart ?? --> j'ai modifié ds en ds1 car ce nom étais déja utilisé donc pour être sur qu'il n'y es pas de confusion. Ainsi pareil pour dataAdapter. Mais le problème est toujours là.
if(null!ch) // que vaut ch --> ch vaut "valeur non définie" vu qu'il n'atteint pas la ligne de "if" c'est à dire qu'a chaque fois il lit : ch ds1.GetChanges(DataRowState.Deleted);
puis il passe au dessus du "if". et quand je glisse ma souris il me dit : "ch = <valeur non définie>".
En gros lorsque je fais du debuggage, je vois que le curseur fait le chemin suivant :
* SqlCommandBuilder cb =
new SqlCommandBuilder(dataAdapter1);
olibara
Messages postés666Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention11 mars 20106 3 mars 2008 à 18:38
DataSet ch = new
DataSet(); // ch maintenant represente un dataset (cliqk droit watch)
--> Lorsque je fais click droit, je n'est pas de "watch".
Si tu ne sais pas comment faire un watch tu ne sais pas debugger
Et que vois tu exactement quand tu fais ub clikc droit sur ch ?
ch = ds.GetChanges(DataRowState.Deleted); // ds est il bien celui que tu a utilisé au depart ?? --> j'ai modifié ds en ds1 car ce nom étais déja utilisé donc pour être sur qu'il n'y es pas de confusion. Ainsi pareil pour dataAdapter. Mais le problème est toujours là.
Comme ca tu donne des noms au petit bonneur la chance ??
Je t'ai deja dis
1- TU DOIS utiliser le dataset qui a eté remplis lors du select
2- TU DOIS utiliser l'adapter qui a servi a ce select
Si tu ne sais pas comment faire, demande a celui qui a écrit ton programme qu'il t'explique !
loic20h28
Messages postés207Date d'inscriptionmardi 19 juin 2007StatutMembreDernière intervention22 février 20162 3 mars 2008 à 18:52
que vois tu exactement quand tu fais ub clikc droit sur ch ? --> Tout d'abord si je sait faire un debugage. Ensuite, lorsque je fais clik droit j'ai plusieur possibilité :
* couper
* copier
* coller
* Supprimer le point d'arrêt
* Désactiver le point d'arrêt
* Propriétés des points d'arrêts
* Nouveau point d'arrêt
* Ajouter un espion
* Espion express
* ........
Comme ca tu donne des noms au petit bonneur la chance ?? --> Non je ne donne pas des noms au petit bonheur la chance car j'ai bien évidement modifié dans la création du dataGrid c'est à dire :
SqlDataAdapter dataAdapter1 =
new SqlDataAdapter(RelationClientele, connection)
DataSet ds1 =
new DataSet();
dataAdapter1.Fill(ds1,"RelationClientele");
dataGrid2.DataSource = ds1;
dataGrid2.DataMember = "RelationClientele";
Donc voila la preuve que je réfléchi quand même!! Suis pas con a ce point enfin je crois!! ?? !!lol.
Sinon j'ai essayé de faire :
if(ds1!=null)
{
MessageBox.Show("rien");
}
Et il m'affiche bien le message donc ds1 est différent de null. J'ai fais la même chose pour dataAdapter1 et c'est pareil.
new DataSet();
SqlDataAdapter dataAdapter1 =
new SqlDataAdapter();
Voila preuve que j'ai mit ça en commun.
Ou fais tu ton load ? dans quelle fonction ? --> Si par là tu parle d'ou j'ai mit le code qui me permet de remplir le dataGrid je l'ai mit dans la fonction suivante :
private
void NumInter_TextChanged(
object sender, System.EventArgs e){
string RelationClientele ("SELECT RC_DHRELCL as DateHeure, RC_CNURELCL as Contenu, RC_TELCTACT as Tel, RC_MOYCTACT as MoyenContact FROM RELATION_CLIENTELE WHERE RC_NUMINTER '" + NumInter.Text + "'"); connection =
new SqlConnection("Data Source=DIST-5B8D87E3A9;Initial Catalog=DistribInfo;Integrated Security=SSPI")
connection.Open();
try{ SqlDataAdapter dataAdapter1 =
new SqlDataAdapter(RelationClientele, connection);
DataSet ds1 =
new DataSet();
dataAdapter1.Fill(ds1,"RelationClientele");
dataGrid2.DataSource = ds1;
dataGrid2.DataMember = "RelationClientele";}
olibara
Messages postés666Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention11 mars 20106 4 mars 2008 à 11:10
Non
La je ne vois pas ce qui peut empecher la mise a jour
Mais
1- As tu mis des espions pour suivre l'evolution de CH, le nombre de rows dans ds1 ? etc etc
2- Est tu certain que des modifs dans ton DGV ont érté faites
Deboguer demande aussi un peu d'intuition et une enquete minutieuse pas a pas
loic20h28
Messages postés207Date d'inscriptionmardi 19 juin 2007StatutMembreDernière intervention22 février 20162 4 mars 2008 à 14:17
Lorsque je lance un espion sur CH, il me dit la chose suivante :
* ch = ds1.GetChanges(DataRowState.Deleted); erreur : l'expression ne peut pas être évaluée à cause d'une erreur de syntaxe
ainsi pour :
* DataSet ch = new DataSet(); erreur : l'expression ne peut pas être évaluée à cause d'une erreur de syntaxe
Est tu certain que des modifs dans ton DGV ont érté faites --> Ben j'écris moi-même dans le dataGrid donc ui je suis sur des modif.
Es-ce que mon problème peut être du au fait que j'utilise qu'un dataGrid et non un DGV??
lassaad83
Messages postés148Date d'inscriptionvendredi 28 avril 2006StatutMembreDernière intervention 1 décembre 2009 5 mars 2008 à 09:39
olibara "... Personnelement j'utilise le DataGridView ..."
loic20h28 "... peut être du au fait que j'utilise qu'un dataGrid ..."
Loic, tu est sur du Framework 1.0 tandis que olibara est sur du 2.0 ça n'a rien avoir... Tu ne peut pas faire (en majeure partie) ce que Olibara se permet de faire avec un DataGRidView.
Faudra accorder vos violons les amis pour trouver ze solution ...
loic20h28
Messages postés207Date d'inscriptionmardi 19 juin 2007StatutMembreDernière intervention22 février 20162 5 mars 2008 à 10:31
Ok.
Mais comment je peux faire pour régler mon problème?? car j'arrête pas de chercher depuis hier soir mais rien ne fais!!
PS. : Si vous voulez que ce soit plus claire pour vous, je vous envoies ci-joint mon programme en espérant que vous pourriez-m'aider a trouver le problème!!
http://dl.free.fr/njGQmaSHx/Nouveaudossier.rar
faut savoir que pour remplir mon dataGrid a partir de la base je fais cela :...string RelationClientele ("SELECT RC_DHRELCL as DateHeure, RC_CNURELCL as Contenu, RC_TELCTACT as Tel, RC_MOYCTACT as MoyenContact FROM RELATION_CLIENTELE WHERE RC_NUMINTER '" + NumInter.Text + "'");
connection = new SqlConnection("Data Source=SNCK96400031;Initial Catalog=DistribInfo;Integrated Security=SSPI");
<!-- END TEMPLATE: bbcode_code -->Cela se fait lorsque j'ai une TextBox qui est rempli(plus précisément : numInter).
Faut savoir également qu'en commun (public class SuiviIntervention : System.Windows.Forms.Form{....)j'ai mit :
SqlConnection connection;
DataSet ds1 = new DataSet();
SqlDataAdapter dataAdapter1 = new SqlDataAdapter();
SqlCommand command;
SqlDataReader rader;
Ce qui correspond au dataAdapter et dataSet de mon dataGrid.
Mon problème c'est qu'il me dit la chose suivante lorsque j'exécute mon application, plus précisémentlorsque je clique sur le bouton 'enregistrer'. :
"Une exception non gérée du type 'System.InvalidOperationException' s'est produite dans system.data.dll.
Informations supplémentaires*: Impossible pour Update de trouver TableMappings['RelationClientele'] ou DataTable 'RelationClientele'. "
et il me surligne en vert : "dataAdapter1.Update(ds1, "RelationClientele");".
Lorsque je réalise un debugage, je m'apperçois que le résultat de ma requête est vide. Alors que mon dataGrid je l'ai modifié manuellement.
Ensuite, il passe sur la ligne 'SqlCommandBuilder cb=new SqlCommandBuilder (dataAdapter1);' et sur 'dataAdapter1.SelectCommand=new SqlComman(requete,connection);'. Mais arrivée à ' dataAdapter1.Update(ds1, "RelationClientele");' il m'affiche l'ereur précédement annoncé.
Merci d'avance pour votre aide.<!-- / message --><!-- sig -->
<!-- BEGIN TEMPLATE: bbcode_quote -->