IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Débogage avec ma base de données mais difficile de détecter la faille [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut Débogage avec ma base de données mais difficile de détecter la faille
    Salut le forum
    Je ne sais pas pourquoi le code ci dessous ne fonctionne pas bien. Jai 5 textbox numéroté par ordre. J'ai tout vérifié mais toujour le meme message derreur ci dessous:
    tye de données incompatible dans l'expression du critère
    Merci de maider car je comprend vraiment pas.

    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
    Dim strsQL As String
    Dim Rs
    OpenConnexion Fichier
    sql = "select * from  [" & Feuille5 & "] where [NUM_EXAMEN]='" & Trim(TextBox1.Value) & "';"
    Set Rs = CreateObject("adodb.recordset")
    Rs.Open sql, Cnx
    If Rs.EOF = False Then
    MsgBox "Existe"
    Else
    strsQL = "insert into [" & Feuille5 & "] ([NUM_EXAMEN],[EDITEUR],[INTITULE],[DATE_EXAMEN],[INGENIEUR],[STATUT]) "
            strsQL = strsQL & "Values ('" & Trim(TextBox1.Value) & "','" & Trim(TextBox2.Value) & "','" & Trim(TextBox3.Value) & _
           "','" & Trim(TextBox4.Value) & "','" & Trim(TextBox5.Value) & "','" & Trim(TextBox6.Value) & "');"
    Cnx.Execute strsQL
    'Set Cnx = Nothing
    End If
    Rs.Close
    Set Rs = Nothing
    Cnx.Close
    Set Cnx = Nothing
    Unload Me
    Merci pour vos soutiens

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Par défaut
    Salut,

    À quel ligne reçois-tu ce texte ? Quel type de données écris-tu dedans ?

    Essaye d'utiliser la propriété TextBox.Text et pas .Value... Je ne sais pas si ça peut changer mais de mémoire j'avais déjà eu des soucis avec ça.

    Quentin.

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Je pense que tu mets des apostrophes de trop.
    Si certains champs de ta base sont numériques, je pense que tu doives enlever les apostrophes.

    Par exemple, si NUM_EXAMEN est supposé être numérique, ça donnerait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strsQL = strsQL & "Values (" & Trim(TextBox1.Value) & ",'" & Trim(TextBox2.Value)....
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strsQL = strsQL & "Values (" & CLng(Trim(TextBox1.Value)) & ",'" & Trim(TextBox2.Value)....

    Pour la date, ça devrait prendre des # autour plutôt que des apostrophes et la date devra être au format américain mm/jj/aaaa

  4. #4
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut
    Bonjour à tous

    Merci pour vos contributions.
    Quentin77170: la ligne du débogage est
    Cnx.Execute strsQL
    J'ai remplacé les value par text mais sans gain de cause.
    Parmi:J'ai essayé vos solutions mais ca ne fonctionne pas.
    Par le 2ème code que j'ai adapté au mien (voire code ci-dessous):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strsQL = strsQL & "value ('" & CLng(Trim(TextBox1.Value)) & "','" & Trim(TextBox2.Value) & "','" & Trim(TextBox3.Value) & _
           "','" & Trim(TextBox4.Value) & "','" & Trim(TextBox5.Value) & "','" & Trim(TextBox6.Value) & "');"
    Le message d'erreur affiche
    Incompatibilité de type
    Par le 1er code aussi le résultat souhait ne se produit pas et le message d'erreur ci-dessous s'affiche:
    Erreur de syntaxe dans l'instruction INSER INTO
    et la code suivante est soulignée
    Cnx.Execute strsQL
    Je vous joint un autre code presque similaire qui fonctionne bien:
    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
    Dim strsQL As String
    Dim RS
    OpenConnexion Fichier
    Sql = "select * from  [" & Feuille & "] where [NUM_PROJET]='" & Trim(TextBox1.Value) & "';"
    Set RS = CreateObject("adodb.recordset")
    RS.Open Sql, Cnx
    If RS.EOF = False Then
    MsgBox "Existe"
    Else
    strsQL = "insert into [" & Feuille & "] ([NUM_PROJET],[TYPE_DE_PROJET],[CHEF_DE_PROJET],[SOUS-TRAITANT],[CONSULTANT],[OBJET],[CLIENTS],[LIEU_DE_DEPOT],[DATE_DE_DEPOT],[HEURE_DEPOT]) "
            strsQL = strsQL & "Values ('" & Trim(TextBox1.Value) & "','" & Trim(ComboBox1.Value) & "','" & Trim(ComboBox2.Value) & _
           "','" & Trim(ComboBox3.Value) & "','" & Trim(ComboBox4.Value) & "','" & Trim(TextBox2.Value) & "','" & Trim(ComboBox5.Value) & "','" & Trim(TextBox3.Value) & "','" & Trim(TextBox4.Value) & _
           "','" & Trim(TextBox5.Value) & "');"
    Cnx.Execute strsQL
    'Set Cnx = Nothing
    End If
    RS.Close
    Set RS = Nothing
    Cnx.Close
    Set Cnx = Nothing
    Unload Me

  5. #5
    Invité
    Invité(e)
    Par défaut
    ce qu'il faut comprendre, c'est que les champs Excel sont typé par le type de valeurs qu'ils contiennent! sauf si tu as déterminé le format de la cellule!

    Texte Numérique Date
    TOTO 1 01/01/2006
    TITI 2 15/12/2015
    TUTU 3,5 20/03/2014

    la requête doit tenir compte de ces impératif! je ne sais pas si tu te rappel mais j'ai abordé ce sujet, sens aller dans détail, au début de notre collaboration![ Transférer des données d'un fichier vers un autre (Espace commun)]


    il est temps que je complète ton éducation sens pour autant te faire

    dans une requête le valeur numérique ne comporte pas de simple cote [']! en revanche il son passés au format vba (en Anglais) sql=sql & "Values ( " & replace(Numérique,",",".") & ",...." !

    les date doivent être passé au format internationales et c'est la requête qui converti au bon format sql=sql & "Values ( cdate(" & format(Date,"yyyy-mm-dd") & ",...." !

    les textes sont encadrés de simple cotes, attention si le texte contient des apostrophes ['], il faut le doublé car ils représente le caractère de début et fin de text! sql=sql & "Values ( '" & replace(text,"'","''") & "',...." !


    strsQL = strsQL & "value(replace(TextBox1,",",".") & ",'" & replace(TextBox2,"'","''") & "',cdate(" & format(TextBox3,"yyyy-mm-dd") & ") );"

  6. #6
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut
    Bonsoir rdurupt (professeur)

    C'est toujours un plaisir pour moi de bénéficier de ton assistance.
    je ne sais pas si tu te rappel mais j'ai abordé ce sujet, sens aller dans détail, au début de notre collaboration![ Transférer des données d'un fichier vers un autre (Espace commun)]
    Oui je me rappel et j'accepte le complément de mon éducation que tu me propose.
    J'ai essayé de comprendre tes explications mais pas facile mais je sais que j'y parviendrai avec surtout les cas pratiques.
    Voici ce que j'ai essayé de réaliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strsQL = strsQL & "value(replace(TextBox1,",",".") & ",'" & replace(TextBox2,"'","''")& ",'" & replace(TextBox3,"'","''") & "',cdate(" & format(TextBox4,"yyyy-mm-dd")& ",'" & replace(TextBox5,"'","''") & ",'" & replace(TextBox6,"'","''")& ") );"
    Mais je constate un message d'erreur (erreur de syntaxe) dans cette partie du code et plus précisément .
    Voici mon code initial que je vous demande si possible d'en faire un cas pratique pour que je renforce ma compréhension.
    Encore merci pour toute l'assistance sans pour au temps abuser de votre disponibilité
    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
    Dim strsQL As String
    Dim RS
    OpenConnexion Fichier
    Sql = "select * from  [" & Feuille5 & "] where ucase(trim(NUM_EXAMEN))='" & Trim(TextBox1.Value) & "';"
    Set RS = CreateObject("adodb.recordset")
    RS.Open Sql, Cnx
    If RS.EOF = False Then
    MsgBox "Existe"
    Else
    strsQL = "insert into [" & Feuille5 & "] ([NUM_EXAMEN],[EDITEUR],[INTITULE],[DATE_EXAMEN],[INGENIEUR],[STATUT]) "
            strsQL = strsQL & "value (" & Trim(TextBox1.Value) & ",'" & Trim(TextBox2.Value) & "','" & Trim(TextBox3.Value) & _
           "','" & Trim(TextBox4.Value) & "','" & Trim(TextBox5.Value) & "','" & Trim(TextBox6.Value) & "');"
    Cnx.Execute strsQL
    Set Cnx = Nothing
    End If
    RS.Close
    Set RS = Nothing
    Cnx.Close
    Set Cnx = Nothing
    Unload Me

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Visual Basic mais avec quelle base de données ?
    Par mat-tech dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 03/09/2008, 19h03
  2. Réponses: 6
    Dernier message: 20/09/2005, 22h28
  3. Gestion des chemins des images avec une base de données...
    Par Nean dans le forum Bases de données
    Réponses: 4
    Dernier message: 27/07/2005, 08h08
  4. probleme avec une base de donnée postgres SQL
    Par Alexlesilex dans le forum Bases de données
    Réponses: 1
    Dernier message: 19/06/2005, 22h09
  5. problème avec ma base de données
    Par pmboutteau dans le forum ASP
    Réponses: 6
    Dernier message: 25/02/2005, 12h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo