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

Commentaires

  1. Avatar de Robert Camion
    • |
    • permalink
    Citation Envoyé par jimbolion
    Rc,

    oui tu as encore raison
    enfin, j'arrive à suivre,

    merci pour ce blog très bien fait !!!

    RC
  2. Avatar de jimbolion
    • |
    • permalink
    Rc,

    oui tu as encore raison
  3. Avatar de Robert Camion
    • |
    • permalink
    JimboLion,
    merci pour ton suivi, mais je pense que je t'ai perdu en route avec toutes mes remarques...
    si j'ai bien suivi nos différents échanges, il me semble que tu as enlevé les devant le nom et le prénom et que ca ne fonctionnera pas ?
    enfin le devant la date semble superflu comme tu semblait l'approuver dans nos derniers échanges

    le code finale devrait être le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    R_Sql = "INSERT INTO [T_Eleves] " & _
            "(nomEleve, prenom, dateNais, moyenne, Redoublant) " & _
            " VALUES (" & _
            "'" & Protected_Quote(Nz(Me.T_nom, "")) & "', " & _
            "'" & Protected_Quote(Nz(Me.T_prenom, "")) & "', " & _
            Convert_DateUS_Short(Nz(Me.T_DateN, Date)) & ", " & _
            VirgToPoint(Nz(Me.T_Moyenne, 0)) & ", " & _
            Nz(Me.T_Redoublant, "")  & _
            ")"

    est ce ton dernier mot JimBo ?


    RC
  4. Avatar de jimbolion
    • |
    • permalink
    Rc,

    oui encore bien vu !

    Jimbolion
  5. Avatar de Robert Camion
    • |
    • permalink
    JimboLion, Bonjour

    merci pour la prise en compte de mes remarques qui m'aident à mieux comprendre la reprise du code SQL en VBA.

    Point clé:
    je note que l'utilisation de l'espace après la virgule est question de mise en forme et facilite le débugage...

    Ensuite, pour l'insertion de la date, tu confirmes qu'on peut mettre directement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    & Convert_DateUS_Short(Nz(Me.T_DateN, Date)) & ", " & _
    sans les "" avant ...

    Après relecture, il me semble même que le & est superflu...puisqu'il se trouve sur la ligne précédente...

    ce qui donnerai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Convert_DateUS_Short(Nz(Me.T_DateN, Date)) & ", " & _
    Siinon, dernier point, j'avais dans mon post précédent, demandé si cette remarque n'était pas pertinente aussi pour les 2 lignes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "" & VirgToPoint(Nz(Me.T_Moyenne, 0)) & ", " & _
    "" & Nz(Me.T_Redoublant, "")  & _
    ")"
    du coup, qu'on pourrait écrire comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    VirgToPoint(Nz(Me.T_Moyenne, 0)) & ", " & _
    Nz(Me.T_Redoublant, "")  & _
    ")"
    à te lire, et Merci Sensei !

    RC
    Mis à jour 18/02/2016 à 10h24 par Robert Camion
  6. Avatar de jimbolion
    • |
    • permalink
    Rc,

    oui quelques remarques judicieuses :

    il faut lire effectivement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Protected_Quote(Nz(Me.T_prenom, ""))
    pour cette partie, l'espace ne revêt que peu d'importance puisque le séparateur , est présent (question de visibilité en mode débogage)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     "'" & Protected_Quote(Nz(Me.T_nom, "")) & "', " & _
    pour cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "" & Convert_DateUS_Short(Nz(Me.T_DateN, Date)) & "," & _
    Le double quotes n'a effectivement aucun intérêt puisque cela signifie chaîne vide, bien vu

    Je vais donc corriger ces quelques anomalies dans le billet initial.

    Amicalement

    JM
  7. Avatar de Robert Camion
    • |
    • permalink
    JimboLion, Bonjour !

    Je découvre avec plaisir ce petit tutoriel, dont j'ai modestement contribué à te le faire écrire pour m'aider sur le droit chemin du VBA intégrant du SQL !
    Donc Merci !!!

    Je retiens donc :
    Un renvoi à la ligne est toutefois réalisable à l'aide de la notation: _
    Il est sage d'encadrer les symboles (&, :, etc.) par au-moins un espace.
    Toutes les valeurs de type texte doivent être encadrés par des quotes (simples ou doubles)
    Toutes les valeurs de type date doivent être encadrés par des #.

    Du coup, si je reprends le code final d'insertion:
    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
    Private Sub B_Save_Click()
    On Error GoTo Err_Commande
    Dim R_Sql As String
          '
          If Not IsDate(Me.T_DateN) Then
            MsgBox "La date de Naissance est obligatoire", vbCritical, "Erreur Saisie"
            Me.T_DateN.SetFocus
            Exit Sub
          End If
          
          '
          R_Sql = "INSERT INTO [T_Eleves] " & _
            "(nomEleve, prenom, dateNais, moyenne, Redoublant) " & _
            " VALUES (" & _
            "'" & Protected_Quote(Nz(Me.T_nom, "")) & "', " & _
            "'" & Protected_Quote(Nz(Me.T_prenom, 0)) & "'," & _
            "" & Convert_DateUS_Short(Nz(Me.T_DateN, Date)) & "," & _
            "" & VirgToPoint(Nz(Me.T_Moyenne, 0)) & ", " & _
            "" & Nz(Me.T_Redoublant, "") & "" & _
            ")"
    '
    CurrentDb.Execute R_Sql, dbFailOnError
    '
    Exit Sub
    Err_Commande:
        MsgBox Err.Description
    End Sub
    Si je traduits en français, on veut donc insérer les 5 valeurs des champs dans la table T_Eleves, un contrôle sur la date de naissance.

    Questions "détails":


    Pourquoi pour le nom, tu précises "" et pour le prénom 0 ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Protected_Quote(Nz(Me.T_nom, "")
    Protected_Quote(Nz(Me.T_prenom, 0))
    Est ce que ca veut dire que l'on peut omettre le prénom, mais auquel cas il faudrait mettre un contrôle sur le nom avant l'insertion ? ( je comprends bien que le code n'est pas complet, mais c'est juste pour suivre....)

    Espaces or not espaces:
    C'est encore une remarque à la cxx, mais tant qu'à comprendre, j'en profite:

    Sur l'insertion du nom tu écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     "'" & Protected_Quote(Nz(Me.T_nom, "")) & "', " & _
    avec et pour le prénom:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "'" & Protected_Quote(Nz(Me.T_prenom, 0)) & "'," & _
    avec sans espace après la ,

    je suppose que la norme serait d'écrire à chaque fois ?


    Insertion date, pourquoi mettre double cotes devant alors qu'on est pas sur texte ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "" & Convert_DateUS_Short(Nz(Me.T_DateN, Date)) & "," & _
    A la fin de la ligne précédente, on a bien qui si je suis bien, délimite la notion du prénom dans le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO [T_Eleves] (nomEleve, prenom, dateNais, moyenne, Redoublant)  VALUES ('D''ARCHAMBAULT', 'Martin',#09-09-1987#,14, 0)
    du coup, pourquoi ne pas écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    & Convert_DateUS_Short(Nz(Me.T_DateN, Date)) & "," & _
    ?
    Cette remarque vaut pour les 2 lignes suivantes (Moyenne et Redoublant)...

    Enfin, et j'en termine, pourquoi mettre le double cotes à la fin avant la dernière partenthèse ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "" & Nz(Me.T_Redoublant, "") & "" & _
            ")"
    Ce qui me trouble (et je me trouble pour un rien), c'est qu'en VBA il me semble ..., "" = rien/nada, même pas un espace..,
    donc je vois pas l’intérêt, dans ces lignes de codes....


    Voilà voilà, merci pour ton retour éclairant

    Dis toi que si j'arrive à comprendre... beaucoup, si ce n'est tout le monde y arrivera

    RC
  8. Avatar de jimbolion
    • |
    • permalink
    Citation Envoyé par milkoseck
    Salut jimbolion,

    Merci pour cette belle contribution :cool :

    Cordialement,
    Malick
    Merci Malick
  9. Avatar de Malick
    • |
    • permalink
    Salut jimbolion,

    Merci pour cette belle contribution :cool :

    Cordialement,
    Malick