Bonjour !
Je code en c#, sous win7, sys. 32bits, bdd access 2007.

Je veux exécuter un Update :
Lors de l’exécution de mon code, j'ai cette erreur:
"Type de données incompatible dans l'expression du critère".

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
//Exécution de la mise à jour sur l'employé sélectionné
                 OleDbCommand cmdUpadte = new OleDbCommand("UPDATE employe SET nom = parnom, prenom = parprenom, sexe = parSexe, date_naiss = parDatenaiss, tel = parTel, bp = parBP, ville = parVille, nbr_enfant = parNbrEnfant, debut_salaire = parDebutSalaire, fin_salaire = parFinSalaire, code_prof = codeprof, code_natio = codenatio, code_situ_fam = codesitufam, code_niveau = codeniveau WHERE matricule = mat ", connection);
 
                 cmdUpadte.Parameters.Add("parnom", OleDbType.VarChar);
                 cmdUpadte.Parameters.Add("parprenom", OleDbType.VarChar);
                 cmdUpadte.Parameters.Add("parSexe",OleDbType.Char);
                 cmdUpadte.Parameters.Add("parDatenaiss", OleDbType.Date);
                 cmdUpadte.Parameters.Add("parTel", OleDbType.Numeric);
                 cmdUpadte.Parameters.Add("parBP", OleDbType.VarChar);
                 cmdUpadte.Parameters.Add("parVille", OleDbType.VarChar);
                 cmdUpadte.Parameters.Add("parNbrEnfant", OleDbType.Integer);
                 cmdUpadte.Parameters.Add("parDebutSalaire", OleDbType.Date);
                 cmdUpadte.Parameters.Add("parFinSalaire", OleDbType.Date);
 
                 cmdUpadte.Parameters.Add("codeprof", OleDbType.Integer);
                 cmdUpadte.Parameters.Add("codenatio", OleDbType.Integer);
                 cmdUpadte.Parameters.Add("codesitufam", OleDbType.Integer);
                 cmdUpadte.Parameters.Add("codeniveau", OleDbType.Integer);
                 cmdUpadte.Parameters.AddWithValue("mat", int.Parse (txtMatricule.Text));
 
                 for (int i = 0; i <= dataGridEmploye.Rows.Count - 1; i++)
                 {
                     if (dataGridEmploye.Rows[i].Cells["matricule"].Value != null)
                     {
                         cmdUpadte.Parameters["parnom"].Value = txtNom.Text;
                         cmdUpadte.Parameters["parprenom"].Value =txtPrenom.Text;
                         cmdUpadte.Parameters["parSexe"].Value = cmbSexe.SelectedItem;
                         cmdUpadte.Parameters["parDatenaiss"].Value = Convert.ToDateTime(txtDateNaissance.Text);
                         cmdUpadte.Parameters["parTel"].Value =  (txtTelephone.Text);
                         cmdUpadte.Parameters["parBP"].Value = txtBP.Text;
                         cmdUpadte.Parameters["parVille"].Value = (txtVille.Text);
                         cmdUpadte.Parameters["parNbrEnfant"].Value = int.Parse (txtNbrEnfants.Text);
                         cmdUpadte.Parameters["parDebutSalaire"].Value = Convert.ToDateTime(txtDateEntree.Text);
                         cmdUpadte.Parameters["parFinSalaire"].Value = Convert.ToDateTime(txtDateSortie.Text);
 
                         cmdUpadte.Parameters["codeprof"].Value = cmbCodeProf.SelectedItem;
                         cmdUpadte.Parameters["codenatio"].Value = cmbCodeNatio.SelectedItem;
                         cmdUpadte.Parameters["codesitufam"].Value =cmbCodeSitufam.SelectedItem;
                         cmdUpadte.Parameters["codeniveau"].Value = cmbNiveau.SelectedItem;
 
                        cmdUpadte.ExecuteNonQuery();
A mon avis je dois avoir un souci sur les types de données "entiers" et "date", mais je ne sais comment trouver précisément l'erreur.
Je veux tester des cast pour tenter de rattraper ces erreur de type:
Enfin chose bizarre que je viens de constater, lors de l'affichage de mon formulaire; dans les champ dates, avant j'avais défini le type en "varchar" pour inserer des valeurs au format (jj/mm/aaaa) et afficher dans le même format,et ça passais sans pb, et maintenant mes dates s'affiche au format (jj/mm/aaaa 00:00:00).
D'où viennent ces données en hh:mm:ss ?
J'ai essayé de regarder du côté de access, j'ai mit le format en "Date, abrégé", mais rien à changé, sur la machine au, panneau config.> Régions et Langues, le format est "jj/MM/aaa".
Avec vos conseils, j'aurais certainement des zones d'ombres à relever !
Merci à vous !!!!