Erreur de syntaxe dans l'expression INSERT INTO

Signaler
Messages postés
13
Date d'inscription
vendredi 5 février 2010
Statut
Membre
Dernière intervention
10 octobre 2010
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour tout le monde,
J'ai un problème avec l'instruction "insert into" ,en fait je veux insérer des valeurs saisies via un formulaire dans ma base de données ,j'écris le code suivant :
[b]Dim StrSQL As String
StrSQL = "INSERT INTO Inscription2010 (N°Inscription,Nom,Prenom,Sexe,DateNaissance,LieuNaissance,Nationalite,CIN,CNE,Telephone,GSM,Emails,ProfessionPere,ProfessionMere,AdresseParents,TelephoneParents,DateBac,LieuBac,MentionBac,Type BAC,TypeParcours,CentreCPGE,VilleCPGE,Classement,FilièreDEUG,FacultéDEUG,VilleDEUG,Filière) Values ('16','" & Trim(Nom) & "','" & Trim(Prenom) & "','" & Trim(Sexe) & "','" & Trim(Nationalite) & "',#" & CDate(DateNaissance) & "#,'" & Trim(LieuNaissance) & "'," & Val(CIN) & "," & Val(CNE) & "," & Val(Telephone) & "," & Val(GSM) & ",'" & Trim(Email) & "','" & Trim(ProfessionPere) & "','" & Trim(ProfessionMere) & "','" & Trim(AdresseParents) & "'," & Val(TelephoneParents) & "," & Val(comboDateBAC) & ",'" & Trim(LieuBAC) & "','" & Trim(comboFiliereBAC) & "','" & Trim(comboMentionBAC) & "','" & Trim(comboTypeBAC) & "','" & Trim(comboTypeParcours) & "','" & Trim(centreCPGE) & "','" & Trim(villeCPGE) & "','" & Trim(typeCPGE) & "'," & _
Val(classCNC) & ",'" & _
Trim(filiereDEUG) & "',,'" & _
Trim(faculteDEUG) & "','" & Trim(villeDEUG) & "','" & Trim(villeDEUG) & "');"/b
Mais ça me revient toujours le message :
Erreur de syntaxe dans l'expression insert into,
avant j'ai utilisé directement:
cn.execute ("la requete");
mais j'avais le message :
[b]Type de données incompatibles dans l'expression du critère.
/b
J'espère bien vous pouvez m'aider.
Merçi bq d'avance
javascript:void(0);

21 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
115
Salut,

Attention aux noms de champs :
N°Inscription : je ne pense pas que ce soit un nom de champ valide, remplace le part [N°Inscription] voir même renomme-le en base, car ca risque de te compliquer la vie pour rien.

Sinon, partout tu mets des quillemets, c'est normal ? Tout tes champs sont de type VARCHAR ? Les champs de type nombres n'ont pas besoin d'être contenus dans des guillemets.

Autre chose : attention aux champs de type date : il faut les formater au format attendu par ton SGBD, par exemple, pour access c'est : #MM/dd/yyyy# qui est attendu, alors qu'en MySQL, c'est : 'yyyy-mm-dd'
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut
Comment veux-tu retrouver une erreur dans un code si mal présenté ?
Première chose : remettre en forme :
    strSql = "INSERT INTO Inscription2010 " & _
             "       (N°Inscription, Nom, Prenom, Sexe, DateNaissance, " & _
             "        LieuNaissance, Nationalite, CIN, CNE, Telephone, " & _
             "        GSM, Emails, ProfessionPere, ProfessionMere, AdresseParents, " & _
             "        TelephoneParents, DateBac, LieuBac, MentionBac, Type BAC, " & _
             "        TypeParcours, CentreCPGE, VilleCPGE, Classement, FilièreDEUG, " & _
             "        FacultéDEUG, VilleDEUG, Filière) "
    strSql = strSql & _
             " Values ('16', " & _
                       "'" & Trim(Nom) & "', " & _
                       "'" & Trim(Prenom) & "', " & _
                       "'" & Trim(Sexe) & "', " & _
                       "'" & Trim(Nationalite) & "', " & _
                       "#" & CDate(DateNaissance) & "#, " & _
                       "'" & Trim(LieuNaissance) & "', " & _
                       "" & Val(CIN) & ", " & _
                       "" & Val(CNE) & ", " & _
                       "" & Val(Telephone) & ", " & _
                       "" & Val(GSM) & ", " & _
                       "'" & Trim(Email) & "', " & _
                       "'" & Trim(ProfessionPere) & "', " & _
                       "'" & Trim(ProfessionMere) & "', " & _
                       "'" & Trim(AdresseParents) & "', " & _
                       "" & Val(TelephoneParents) & ", " & _
                       "" & Val(comboDateBAC) & ", " & _
                       "'" & Trim(LieuBAC) & "', "
    strSql = strSql & _
                       "'" & Trim(comboFiliereBAC) & "', " & _
                       "'" & Trim(comboMentionBAC) & "', " & _
                       "'" & Trim(comboTypeBAC) & "', " & _
                       "'" & Trim(comboTypeParcours) & "', " & _
                       "'" & Trim(centreCPGE) & "', " & _
                       "'" & Trim(villeCPGE) & "', " & _
                       "'" & Trim(typeCPGE) & "', " & _
                       "" & Val(classCNC) & ", " & _
                       "'" & Trim(filiereDEUG) & "',, " & _
                       "'" & Trim(faculteDEUG) & "', " & _
                       "'" & Trim(villeDEUG) & "', " & _
                       "'" & Trim(villeDEUG) & "');"

Ensuite, la recherche de l'erreur.
J'en vois une première :
Quand un nom de champ comporte des caractères particuliers comme les accents, des espaces ou des symboles, il faut les encadrer par des crochets [ et ]
             "       ([N°Inscription], Nom, Prenom, Sexe, DateNaissance, " & _
Celui-là m'a sauté aux yeux, mais vérifie les autres

Ensuite, à la fin, il y a deux virgules à la suite :
                       "'" & Trim(filiereDEUG) & "',," & _

Et enfin, ce n'est pas une erreur à proprement parler, mais il faut t'en méfier :
Bien que ton champ (exemple Telephone) soit numérique dans ta DB, rappelle-toi que tu es en train d'écrire une chaine de caractère dans strSql --> La concaténation de chaine avec des chiffres peut donner des résultats étranges et des sources de problèmes :
                    "" & Val(Telephone) & "," & _
Préfère les conversions explicites :
                    "" & CStr(Val(Telephone)) & "," & _

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
13
Date d'inscription
vendredi 5 février 2010
Statut
Membre
Dernière intervention
10 octobre 2010

Bonjour ;
Merçi d'abord pour votre réponse ,
J'ai changé le nom du champ mais le message d'erreur persiste .
En fait pour les champs de type texte j'ai mis des guillemets :
ex :
'" & Trim(LieuNaissance) & "'
Pour les champs de type numérique non ,ex :
" & Val(CNE) & "

Merçi .


javascript:void(0);
Messages postés
13
Date d'inscription
vendredi 5 février 2010
Statut
Membre
Dernière intervention
10 octobre 2010

Bonjour;
J'ai essayé d'utiliser vos remarques pertinentes et mon code après révision et restructuration est le suivant :
Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM InscriptionEtudiant2010", cn
StrSQL = "INSERT INTO InscriptionEtudiant2010 " & _
             "       (Numero, Nom, Prenom, Sexe, DateNaissance, " & _
             "        LieuNaissance, Nationalite, CIN, CNE, Telephone, " & _
             "        GSM, Emails, ProfessionPere, ProfessionMere, AdresseParents, " & _
             "        TelephoneParents, DateBac, LieuBac, FiliereBac, MentionBac, TypeBAC, " & _
             "        TypeParcours, CentreCPGE, VilleCPGE, TypeCPGE, ClassementCNC, FiliereDEUG, " & _
             "        FaculteDEUG, VilleDEUG, Filiere) "
    StrSQL = StrSQL & _
             " Values ('16', " & _
                       "'" & Trim(Nom) & "', " & _
                       "'" & Trim(Prenom) & "', " & _
                       "'" & Trim(Sexe) & "', " & _
                       "#" & CDate(DateNaissance) & "#, " & _
                       "'" & Trim(LieuNaissance) & "', " & _
                       "'" & Trim(Nationalite) & "', " & _
                       "" & Val(CIN) & ", " & _
                       "" & Val(CNE) & ", " & _
                       "" & CStr(Val(Telephone)) & "," & _
                       "" & CStr(Val(GSM)) & ", " & _
                       "'" & Trim(Email) & "', " & _
                       "'" & Trim(ProfessionPere) & "', " & _
                       "'" & Trim(ProfessionMere) & "', " & _
                       "'" & Trim(AdresseParents) & "', " & _
                       "" & CStr(Val(TelephoneParents)) & ", " & _
                       "" & Val(comboDateBAC) & ", " & _
                       "'" & Trim(LieuBAC) & "', "
    StrSQL = StrSQL & _
                       "'" & Trim(comboFiliereBAC) & "', " & _
                       "'" & Trim(comboMentionBAC) & "', " & _
                       "'" & Trim(comboTypeBAC) & "', " & _
                       "'" & Trim(comboTypeParcours) & "', " & _
                       "'" & Trim(centreCPGE) & "', " & _
                       "'" & Trim(villeCPGE) & "', " & _
                       "'" & Trim(typeCPGE) & "', " & _
                       "" & Val(classCNC) & ", " & _
                       "'" & Trim(filiereDEUG) & "', " & _
                       "'" & Trim(faculteDEUG) & "', " & _
                       "'" & Trim(villeDEUG) & "', " & _
                       "'" & Trim(villeDEUG) & "');"

cn.Execute (StrSQL)

mais mon message d'erreur a changé :
Type de données incompatibles dans l'expression du critère
J'ai cherché un peu sur le net ,j'ai trouvé que cette erreur est souvent lorsqu'on utilise un 'where' et c'est pas le cas.


javascript:void(0);
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
115
"#" & CDate(DateNaissance) & "#, " & _

formatte ta date dans le format attendu par ton sgbd
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Messages postés
13
Date d'inscription
vendredi 5 février 2010
Statut
Membre
Dernière intervention
10 octobre 2010

merçi;
J'ai ajouté cette ligne,le code devient:
Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM InscriptionEtudiant2010", cn

 DateNaissance = Format(DateNaissance, "DD-MM-YYYY")
    StrSQL = "INSERT INTO InscriptionEtudiant2010 " & _
             "       (Numero, Nom, Prenom, Sexe, DateNaissance, " & _
             "        LieuNaissance, Nationalite, CIN, CNE, Telephone, " & _
             "        GSM, Emails, ProfessionPere, ProfessionMere, AdresseParents, " & _
             "        TelephoneParents, DateBac, LieuBac, FiliereBac, MentionBac, TypeBAC, " & _
             "        TypeParcours, CentreCPGE, VilleCPGE, TypeCPGE, ClassementCNC, FiliereDEUG, " & _
             "        FaculteDEUG, VilleDEUG, Filiere) "
    StrSQL = StrSQL & _
             " Values ('16', " & _
                       "'" & Trim(Nom) & "', " & _
                       "'" & Trim(Prenom) & "', " & _
                       "'" & Trim(Sexe) & "', " & _
                       "#" & CDate(DateNaissance) & "#, " & _
                       "'" & Trim(LieuNaissance) & "', " & _
                       "'" & Trim(Nationalite) & "', " & _
                       "" & Val(CIN) & ", " & _
                       "" & Val(CNE) & ", " & _
                       "" & CStr(Val(Telephone)) & "," & _
                       "" & CStr(Val(GSM)) & ", " & _
                       "'" & Trim(Email) & "', " & _
                       "'" & Trim(ProfessionPere) & "', " & _
                       "'" & Trim(ProfessionMere) & "', " & _
                       "'" & Trim(AdresseParents) & "', " & _
                       "" & CStr(Val(TelephoneParents)) & ", " & _
                       "" & Val(comboDateBAC) & ", " & _
                       "'" & Trim(LieuBAC) & "', "
    StrSQL = StrSQL & _
                       "'" & Trim(comboFiliereBAC) & "', " & _
                       "'" & Trim(comboMentionBAC) & "', " & _
                       "'" & Trim(comboTypeBAC) & "', " & _
                       "'" & Trim(comboTypeParcours) & "', " & _
                       "'" & Trim(centreCPGE) & "', " & _
                       "'" & Trim(villeCPGE) & "', " & _
                       "'" & Trim(typeCPGE) & "', " & _
                       "" & Val(classCNC) & ", " & _
                       "'" & Trim(filiereDEUG) & "', " & _
                       "'" & Trim(faculteDEUG) & "', " & _
                       "'" & Trim(villeDEUG) & "', " & _
                       "'" & Trim(villeDEUG) & "');"

cn.Execute (StrSQL)

Mais l'erreur persiste :(

javascript:void(0);
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
115
Salut,

Je vois pas ce que tu as modifié au niveau de ton format de date... Par access :
"#" & Format(DateNaissance, "MM/dd/yyyy") & "#, " & _

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Manque des CStr là où il y a des Val (pas trop important, mais bon)

Premier champ 'Numero' : S'il s'agit d'un numéro, pourquoi avoir mis des ' autour de 16 ?

Dernier champ = répétition : à revoir
Messages postés
13
Date d'inscription
vendredi 5 février 2010
Statut
Membre
Dernière intervention
10 octobre 2010

Merçi;
Pour le formatage ,j'ai déjà écrasé la valeur de 'DateNaissance'par la nouvelle valeur formatée via cette ligne de code :
DateNaissance =  Format(DateNaissance, "DD-MM-YYYY") 

mais bon j'utilise ce que vous avez mentionné pour la clarté.
J'ai tjrs la même erreur
Type de données incompatible dans l'expression du critère
Mon code après révision:
Set rs  = New ADODB.Recordset
rs.Open "SELECT * FROM InscriptionEtudiant2010", cn

'DateNaissance = Format(DateNaissance, "DD-MM-YYYY")
    StrSQL = "INSERT INTO InscriptionEtudiant2010 " & _
             "       (Numero, Nom, Prenom, Sexe, DateNaissance, " & _
             "        LieuNaissance, Nationalite, CIN, CNE, Telephone, " & _
             "        GSM, Emails, ProfessionPere, ProfessionMere, AdresseParents, " & _
             "        TelephoneParents, DateBac, LieuBac, FiliereBac, MentionBac, TypeBAC, " & _
             "        TypeParcours, CentreCPGE, VilleCPGE, TypeCPGE, ClassementCNC, FiliereDEUG, " & _
             "        FaculteDEUG, VilleDEUG, Filiere) "
    StrSQL = StrSQL & _
             " Values ('16', " & _
                       "'" & Trim(Nom) & "', " & _
                       "'" & Trim(Prenom) & "', " & _
                       "'" & Trim(Sexe) & "', " & _
                       "#" & Format(DateNaissance, "dd/MM/yyyy") & "#, " & _
                       "'" & Trim(LieuNaissance) & "', " & _
                       "'" & Trim(Nationalite) & "', " & _
                       "" & CStr(Val(CIN)) & ", " & _
                       "" & CStr(Val(CNE)) & ", " & _
                       "" & CStr(Val(Telephone)) & "," & _
                       "" & CStr(Val(GSM)) & ", " & _
                       "'" & Trim(Email) & "', " & _
                       "'" & Trim(ProfessionPere) & "', " & _
                       "'" & Trim(ProfessionMere) & "', " & _
                       "'" & Trim(AdresseParents) & "', " & _
                       "" & CStr(Val(TelephoneParents)) & ", " & _
                       "" & CStr(Val(comboDateBAC)) & ", " & _
                       "'" & Trim(LieuBAC) & "', "
    StrSQL = StrSQL & _
                       "'" & Trim(comboFiliereBAC) & "', " & _
                       "'" & Trim(comboMentionBAC) & "', " & _
                       "'" & Trim(comboTypeBAC) & "', " & _
                       "'" & Trim(comboTypeParcours) & "', " & _
                       "'" & Trim(centreCPGE) & "', " & _
                       "'" & Trim(villeCPGE) & "', " & _
                       "'" & Trim(typeCPGE) & "', " & _
                       "" & CStr(Val(classCNC)) & ", " & _
                       "'" & Trim(filiereDEUG) & "', " & _
                       "'" & Trim(faculteDEUG) & "', " & _
                       "'" & Trim(villeDEUG) & "', " & _
                       "'" & Trim(villeDEUG) & "');"

cn.Execute (StrSQL)

javascript:void(0);
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
115
Salut,

Quel SGBD utilise tu ? Si tu lance ta requête dans ton SGBD, quelle erreur il t'indique ?
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Messages postés
13
Date d'inscription
vendredi 5 février 2010
Statut
Membre
Dernière intervention
10 octobre 2010

Salut ;
J'ai une base access,la requête ça marche dans mon SGBD si je l'écrit simplement ,apparemment le pb est lié aux champs insérés.

javascript:void(0);
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Lit plus attentivement ce qu'on t'écrit : il y a une anomalie signalée et pas corrigée.
Messages postés
13
Date d'inscription
vendredi 5 février 2010
Statut
Membre
Dernière intervention
10 octobre 2010

Bonjour;
Merçi bq pour vos remarques,
Pour le 16 entre ' ,je l'ai corrigé après avoir envoyé le message ,dsl ,
mais tjrs j'ai la même erreur!!!!
Mon code pour le moment est :

  Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM InscriptionEtudiant2010", cn
 StrSQL = "INSERT INTO InscriptionEtudiant2010 " & _
             "       (Numero, Nom, Prenom, Sexe, DateNaissance, " & _
             "        LieuNaissance, Nationalite, CIN, CNE, Telephone, " & _
             "        GSM, Emails, ProfessionPere, ProfessionMere, AdresseParents, " & _
             "        TelephoneParents, DateBac, LieuBac, FiliereBac, MentionBac, TypeBAC, " & _
             "        TypeParcours, CentreCPGE, VilleCPGE, TypeCPGE, ClassementCNC, FiliereDEUG, " & _
             "        FaculteDEUG, VilleDEUG, Filiere) "
    StrSQL = StrSQL & _
             " Values (16, " & _
                       "'" & Trim(Nom) & "', " & _
                       "'" & Trim(Prenom) & "', " & _
                       "'" & Trim(Sexe) & "', " & _
                       "#" & Format(DateNaissance, "dd/MM/yyyy") & "#, " & _
                       "'" & Trim(LieuNaissance) & "', " & _
                       "'" & Trim(Nationalite) & "', " & _
                       "" & CStr(Val(CIN)) & ", " & _
                       "" & CStr(Val(CNE)) & ", " & _
                       "" & CStr(Val(Telephone)) & "," & _
                       "" & CStr(Val(GSM)) & ", " & _
                       "'" & Trim(Email) & "', " & _
                       "'" & Trim(ProfessionPere) & "', " & _
                       "'" & Trim(ProfessionMere) & "', " & _
                       "'" & Trim(AdresseParents) & "', " & _
                       "" & CStr(Val(TelephoneParents)) & ", " & _
                       "" & CStr(Val(comboDateBAC)) & ", " & _
                       "'" & Trim(LieuBAC) & "', "
    StrSQL = StrSQL & _
                       "'" & Trim(comboFiliereBAC) & "', " & _
                       "'" & Trim(comboMentionBAC) & "', " & _
                       "'" & Trim(comboTypeBAC) & "', " & _
                       "'" & Trim(comboTypeParcours) & "', " & _
                       "'" & Trim(centreCPGE) & "', " & _
                       "'" & Trim(villeCPGE) & "', " & _
                       "'" & Trim(typeCPGE) & "', " & _
                       "" & CStr(Val(classCNC)) & ", " & _
                       "'" & Trim(filiereDEUG) & "', " & _
                       "'" & Trim(faculteDEUG) & "', " & _
                       "'" & Trim(villeDEUG) & "', " & _
                       "'" & Trim(villeDEUG) & "');"

cn.Execute (StrSQL)

Merçi encore.
javascript:void(0);
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Et c'est normal d'avoir ceci ?
                       "'" & Trim(villeDEUG) & "', " & _
                       "'" & Trim(villeDEUG) & "');"
= deux fois le même valeur ?

Cette erreur est une erreur SQL.
Je te confirme qu'il n'y a pas d'erreur dans la syntaxe de cette requète.
DONC il faut analyser les deux choses qui restent :
- La définition des champs dans la DB correspond-elle à l'utilisation des apostrophes et dièses de ta syntaxe ?
- Quelles valeurs ont les champs que tu insères ?
Fait un arrêt après cette ligne de code (*) et copie-colle le contenu de ta variable StrSQL dans notepad (= la requète générée par ton code) + analyse chaque caractère.
Vérifie notamment que tes textes ne comportent pas eux même d'apostrophes, par exemple.
(*) débogage :
F9 sur une ligne de code
Le programme s'y arrêtera au prochain passage
Survole avec la souris tes variables pour visualiser leur contenu, ou va dans la fenêtre de debogage (Ctrl-G) et tape
? maVariable
pour qu'elle s'inscrive dans la fenêtre.
F8 pour avancer d'une ligne de code
F5 pour continuer normalement
Messages postés
13
Date d'inscription
vendredi 5 février 2010
Statut
Membre
Dernière intervention
10 octobre 2010

Salut;
Merçi bq pour vos remarques c'est pertinent,
Pr la valeur répétée c'est fait exprès ,de toute façon ils ont le même type ,et le deuxième champ est une valeur récupérée d'un contrôle 'option' ,donc j'ai préféré m'assurer que la requête marche et après je vais voir pour la valeur ,
En s'appuyant sur vos remarques et pour s'assurer des types comme vs dites ,j'ai essayé de lancer la même requête avec des valeurs réelles ainsi j'ai utilisé le code suivant :
 StrSQL = "INSERT INTO InscriptionEtudiant2010 " & _
             "       (Numero, Nom, Prenom, Sexe, DateNaissance, " & _
             "        LieuNaissance, Nationalite, CIN, CNE, Telephone, " & _
             "        GSM, Emails, ProfessionPere, ProfessionMere, AdresseParents, " & _
             "        TelephoneParents, DateBac, LieuBac, FiliereBac, MentionBac, TypeBAC, " & _
             "        TypeParcours, CentreCPGE, VilleCPGE, TypeCPGE, ClassementCNC, FiliereDEUG, " & _
             "        FaculteDEUG, VilleDEUG, Filiere) "
    StrSQL = StrSQL & _
             " Values (16, " & _
                       "'nom', " & _
                       "'prenom', " & _
                       "'sexe', " & _
                       "#" & Format(10 - Jan - 1985, "dd/MM/yyyy") & "#, " & _
                       "'LieuNaissance', " & _
                       "'nationalite', " & _
                       "22222, " & _
                       "3322, " & _
                       "022202020," & _
                       "0202020020, " & _
                       "'Email', " & _
                       "'ProfessionPere', " & _
                       "'ProfessionMere', " & _
                       "'AdresseParents', " & _
                       "030300303, " & _
                       "2000, " & _
                       "'LieuBac', "
    StrSQL = StrSQL & _
                       "'FiliereBac', " & _
                       "'MentionBac', " & _
                       "'TypeBac', " & _
                       "'TypeParcours', " & _
                       "'centreCPGE', " & _
                       "'villeCPGE', " & _
                       "'typeCPGE', " & _
                       "03939393, " & _
                       "'filiereDEUG', " & _
                       "'faculteDEUG', " & _
                       "'villeDEUG', " & _
                       "'villeDEUG');"

cn.Execute (StrSQL)

Et ça marche, la ligne est ajoutée pour des valeurs directes.
Juste j'ai remarqué que pour la Date de naissance :
"#" & Format(10 - Jan - 1985, "dd/MM/yyyy") & "#

la valeur insérée dans la table est :
08/03/1894
Est ce normal ????
Je rappelle que la 'DateDeNaissance' que j'ai dans le bout de code :
#" & Format(DateNaissance, "dd/MM/yyyy") & "#

est une valeur récupérée d'un contrôle de type :
DTPicker
et un message box du genre :
MsgBox CDate(DateNaissance)

me renvoie la valeur de la date exacte que j'ai entré.
Après ça je vais essayer de déboguer le code comme vs dites :)
Merç bq encore

javascript:void(0);
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Ta ligne
"#" & Format(10 - Jan - 1985, "dd/MM/yyyy") & "#
n'a pas de sens : Tu lui demande de calculer 10 moins Janvier moins 1985 !
Une chance même qu'il ne t'ai pas envoyé balader.

"#" & Format("
10-Jan-1985"
, "dd/MM/yyyy") & "#
ou
"#" & Format(#10-Jan-1985#, "dd/MM/yyyy") & "#
serait plus judicieux
Messages postés
13
Date d'inscription
vendredi 5 février 2010
Statut
Membre
Dernière intervention
10 octobre 2010

Ah ok ,merçi,j'ai pas fait attention aux espaces pour la date directe.
En fait ,j'ai pas pu appliquer ce que vous avez dit sur le débogage ,j'ai pas bien su le faire alors j'ai du procéder à une sorte de débogage manuel ,j'ai remarqué suite à des multiples manipulations champ à champ que pour le code suivant :

 StrSQL = "INSERT INTO InscriptionEtudiant2010 " & _
             "       (Numero, Nom, Prenom, Sexe, DateNaissance, " & _
             "        LieuNaissance, Nationalite, CIN, CNE, Telephone, " & _
             "        GSM, Emails, ProfessionPere, ProfessionMere, AdresseParents, " & _
             "        TelephoneParents, DateBac, LieuBac, FiliereBac, MentionBac, TypeBAC, " & _
             "        TypeParcours, CentreCPGE, VilleCPGE, TypeCPGE, ClassementCNC, FiliereDEUG, " & _
             "        FaculteDEUG, VilleDEUG, Filiere) "
    StrSQL = StrSQL & _
             " Values (27, " & _
                       "'" & Trim(Nom) & "', " & _
                       "'" & Trim(Prenom) & "', " & _
                       "'" & Trim(Sexe) & "', " & _
                       "#" & Format(DateNaissance, "MM/dd/yyyy") & "#, " & _
                       "'" & Trim(LieuNaissance) & "', " & _
                       "'" & Trim(Nationalite) & "', " & _
                       "" & CStr(Val(CIN)) & ", " & _
                       "" & CStr(Val(CNE)) & ", " & _
                       "43434," & _
                       "" & CStr(Val(GSM)) & ", " & _
                       "'" & Trim(Email) & "', " & _
                       "'" & Trim(ProfessionPere) & "', " & _
                       "'" & Trim(ProfessionMere) & "', " & _
                       "'" & Trim(AdresseParents) & "', " & _
                       "888888, " & _
                       "" & CStr(Val(comboDateBAC)) & ", " & _
                       "'" & Trim(LieuBAC) & "', "
    StrSQL = StrSQL & _
                       "'" & Trim(comboFiliereBAC) & "', " & _
                       "'" & Trim(comboMentionBAC) & "', " & _
                       "'" & Trim(comboTypeBAC) & "', " & _
                       "'" & Trim(comboTypeParcours) & "', " & _
                       "'" & Trim(centreCPGE) & "', " & _
                       "'" & Trim(villeCPGE) & "', " & _
                       "'" & Trim(typeCPGE) & "', " & _
                       "" & CStr(Val(classCNC)) & ", " & _
                       "'" & Trim(filiereDEUG) & "', " & _
                       "'" & Trim(faculteDEUG) & "', " & _
                       "'" & Trim(villeDEUG) & "', " & _
                       "'" & Trim(villeDEUG) & "');"

cn.Execute (StrSQL)


ça marche et la ligne est bien ajoutée.
Donc le pb est au niveau des 3 valeurs téléphone :
" & CStr(Val(Telephone)) & "
" & CStr(Val(GSM)) & "
" & CStr(Val(TelephoneParents)) & "

le message box me renvoie pour les 3 valeurs les valeurs entrées donc pas de pb.
Et même si on laisse qu'une seule valeurs de ces 3 ,ça marche pas .
Je vais essayer de voir avec ça .Pour la base de données ils sont des valeurs rentrées de type numérique .
Je m'excuse pour ne pas pouvoir appliquer le débogage automatique comme vs dites même si c'est plus pratique juste je le fais pour la première fois et j'ai une contrainte de temps mais je vais essayer de l'appliquer sur cette même version du projet une fois le truc réglé et la contrainte de temps levée.
Je vous remercie pour vos remarques :),merçi bq .

javascript:void(0);
Messages postés
13
Date d'inscription
vendredi 5 février 2010
Statut
Membre
Dernière intervention
10 octobre 2010

Salut,
Bein je crois j'ai trouvé la cause ,les valeurs des téléphones mentionnées ci_dessus sont de 10 chiffres,alors j'ai essayé de faire entrer une valeur de CIN de 10 chiffres ou plus et
La meme erreur 'type incompatibles ' et la ligne pas ajoutée.
Donc la cause est :
la taille du numérique .
Meme si ts les numériques sont déclarés en tant qu' entier long
dans la base de données lorsque je dépasse 10 chiffres j'ai la fameuse erreur de type incompatible dans l'expression de données.
Mais je sais pas encore comment remédier à ça ,je vais essayer de chercher encore :)
Merçi
javascript:void(0);
Messages postés
13
Date d'inscription
vendredi 5 février 2010
Statut
Membre
Dernière intervention
10 octobre 2010

Salut,
Mon pb est résolu ,
En fait ,pour un champ numérique on a les tailles suivantes:
Octet --> valeur entière de 0 à 255

Entier --> valeur entière de -32768 à 32767

Entier long --> valeur entière de -2147483648 à 2147483647

Réel simple --> valeur décimale de -3,4*10puissance18 à 3,4*10puissance18, avec 7 décimales

Réel double -->valeur décimale de -1,97*10puissance308 à 1,797*10puissance308, avec 15 décimales

donc pour un entier qui dépasse 11chiffres ou 10 chiffres > 2147483647 je dois déclarer un simple ou réel double.
Merçi bq pour ts ceux qui m'ont aidé à résoudre mon pb.
Je vous remercie énormément pour votre temps et vos remarques.
Et dsl si je me suis retardé des fois pour appliquer une de vos remarques.

thinks
A+.




javascript:void(0);
Messages postés
13
Date d'inscription
vendredi 5 février 2010
Statut
Membre
Dernière intervention
10 octobre 2010

Salut ,
S'il vous plait ,j'ai un petit problème ,je veux pour le même code ,au lieu d'écrire à chaque fois le numéro,parcourir la table de la base de données pour savoir le nombre des enregistrements et ensuite l'insérer via la requête INSERT INTO :
j'ai ajouté le bout de code suivant :
J'ai déclaré d'abord :
Dim n As Integer
Public RSInsEnr As Recordset
Dim NbreEnreg As Integer

puis ensuite le code :

Set RSInsEnr = New ADODB.Recordset
    RSInsEnr.Open ("SELECT * FROM InscriptionEtudiant2010")
    NbreEnreg = RSInsEnr.RecordCount
    n = NbreEnreg + 1

Ainsi mon code sera :
Call connect
Set RSInsEnr = New ADODB.Recordset
    RSInsEnr.Open ("SELECT * FROM InscriptionEtudiant2010")
    NbreEnreg = RSInsEnr.RecordCount
    n = NbreEnreg + 1
 StrSQL = "INSERT INTO InscriptionEtudiant2010 " & _
             "       (Numero, Nom, Prenom, Sexe, DateNaissance, " & _
             "        LieuNaissance, Nationalite, CIN, CNE, Telephone, " & _
             "        GSM, Emails, ProfessionPere, ProfessionMere, AdresseParents, " & _
             "        TelephoneParents, DateBac, LieuBac, FiliereBac, MentionBac, TypeBAC, " & _
             "        TypeParcours, CentreCPGE, VilleCPGE, TypeCPGE, ClassementCNC, FiliereDEUG, " & _
             "        FaculteDEUG, VilleDEUG, Filiere) "
    StrSQL = StrSQL & _
             " Values ('" & n & "', " & _
                       "'" & Trim(Nom) & "', " & _
                       "'" & Trim(Prenom) & "', " & _
                       "'" & Trim(Sexe) & "', " & _
                       "#" & Format(DateNaissance, "MM/dd/yyyy") & "#, " & _
                       "'" & Trim(LieuNaissance) & "', " & _
                       "'" & Trim(Nationalite) & "', " & _
                       "" & CStr(Val(CIN)) & ", " & _
                       "" & CStr(Val(CNE)) & ", " & _
                       "" & CStr(Val(Telephone)) & "," & _
                       "" & CStr(Val(GSM)) & ", " & _
                       "'" & Trim(Email) & "', " & _
                       "'" & Trim(ProfessionPere) & "', " & _
                       "'" & Trim(ProfessionMere) & "', " & _
                       "'" & Trim(AdresseParents) & "', " & _
                       "" & CStr(Val(TelephoneParents)) & ", " & _
                       "" & CStr(Val(comboDateBAC)) & ", " & _
                       "'" & Trim(LieuBAC) & "', "
    StrSQL = StrSQL & _
                       "'" & Trim(comboFiliereBAC) & "', " & _
                       "'" & Trim(comboMentionBAC) & "', " & _
                       "'" & Trim(comboTypeBAC) & "', " & _
                       "'" & Trim(comboTypeParcours) & "', " & _
                       "'" & Trim(centreCPGE) & "', " & _
                       "'" & Trim(villeCPGE) & "', " & _
                       "'" & Trim(typeCPGE) & "', " & _
                       "" & CStr(Val(classCNC)) & ", " & _
                       "'" & Trim(filiereDEUG) & "', " & _
                       "'" & Trim(faculteDEUG) & "', " & _
                       "'" & Trim(villeDEUG) & "', " & _
                       "'" & strChoix & "');"

cn.Execute (StrSQL)
 Call Deconnexion

Ça m donne l'erreur suivante:
Impossible d'utiliser cette connexion pour effectuer cette opération ,elle est fermée ou non valide dans ce contexte.
j'ai essayer de fermer la connexion après les ligne ajoutée de la requête de sélection via
Call Deconnexion

pour l'ouvrir pour la requête d'insertion mais tjrs ca se bloque au niveau de cette ligne
RSInsEnr.Open ("SELECT * FROM InscriptionEtudiant2010")

Merçi bq d'avance.

javascript:void(0);