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

IHM Discussion :

Formulaire Double Affichage filtré sur variable Publique [AC-2013]


Sujet :

IHM

  1. #21
    Nouveau membre du Club
    Homme Profil pro
    Consultant Organisation TPE
    Inscrit en
    Juin 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Organisation TPE
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 82
    Points : 39
    Points
    39
    Par défaut => suite et fin pour ce fil !
    Jimbolion, bonjour

    Merci vraiment pour ta persévérance !

    Ca y'est je suis arrivé au bout pour cet UF des temps.
    J'ai bien noté le bug corrigé par VAL(IdTemps) et le requery opur se repositionner en tout en haut de l'affiche.
    enfin, pour le dernier point que tu avais soulevé, j'ai décidé de rester le nouveau jour en fin de validation:
    ' calcul du total % à l'isssu de la saisie
    Total_PC = Nz(DLookup("[SommeDePourcentage]", "R_CalculPourcentage_I"), 0)
    '
    If Total_PC < 100 Then
    ' crée une nouvelle ligne pour le même jour avec proposition du delta à 100
    Me.E_IdClient = ""
    Me.E_IdClient.SetFocus
    Me.E_Type = ""
    Me.E_Pourcentage = 100 - Total_PC
    Me.E_Commentaire = ""
    Me.E_IdTemps = 0 ' insertion
    Else
    ' crée une nouvelle ligne pour le même jour avec proposition du delta à 100
    Me.E_IdClient = ""
    Me.E_Type = ""
    Me.E_Commentaire = ""
    Me.E_DateIntervention = CDate(Me.E_DateIntervention) + 1
    Total_PC = Nz(DLookup("[SommeDePourcentage]", "R_CalculPourcentage_I"), 0) 'recaclcul vs new date
    Me.E_Pourcentage = 100 - Total_PC
    Me.E_DateIntervention.SetFocus
    Me.E_IdTemps = 0 ' cette valeur est hypra importante car elle conditionne la ligne de modif
    End If
    et cela "semble" fonctionner :
    dans l'exemple si dessous, j'avais une ligne en historique de 25 % pour le 27/01,
    puis j'ai travaillé sur la journée du 26/01 , avec 2 lignes sommant à 100%
    et du coup, on me propose bien de repasser sur le 27/01, non pas à 100% mais à 75 % ,
    tenant bien compte des 25% initialement saisi sur al journée
    Nom : nouvjour%.jpg
Affichages : 276
Taille : 102,6 Ko

    tu me diras ce que tu en penses,

    et grand merci !!!

    Pièce jointe 199347

    RC

  2. #22
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Robert Camion,

    Ce souci étant de toute façon à la marge et recontrôlé au moment de la validation il n'y a pas d'incidences notoires et ne pourrait se produire que dans des cas extrêmement rares, je considère recevable la gestion du temps.

    Jim
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  3. #23
    Nouveau membre du Club
    Homme Profil pro
    Consultant Organisation TPE
    Inscrit en
    Juin 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Organisation TPE
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 82
    Points : 39
    Points
    39
    Par défaut => suite Adapatation pour NDF et KM
    Jimbolion, Bonjour,

    j'ai repris le travail réalisé sur la partie de temps, en l’adaptant pour les saisies des montant de Note de Frais et des Km.
    J'ai fait un sous formulaire et un formulaire et j'arrive bien à sélectionner une ligne du formulaire "enfant" pour la faire remonter vers le formulaire parent.
    Mais ca bug quand j'essaie d'insérer les données...

    Nom : essai NDF.jpg
Affichages : 331
Taille : 86,5 Ko
    Nom : essai NDF2.jpg
Affichages : 311
Taille : 209,7 Ko


    Peux tu regarder, STP, je pense que ça déconne sur l'insertion du SQL dans le VBA ??

    (le fichier joint)
    Pièce jointe 199642



    merci de ton aide,

    RC

  4. #24
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    RC,

    Donc une virgule manquante dans l'agrégation de la chaîne de caractères et l'utilisation d'un mot clé réservé dans un champ interdisait l'injection dans la table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      Case 0  ' Insert il s'agit d'une nouvelle Saisie
          R_Sql = "INSERT INTO [T-NDFKm] " & _
            "(IdConsultant, IdClient, DateTNDF, Type, Fournisseur, Montant, Km, Commentaire) " & _
            " VALUES (" & _
            "" & Nz(Me.IdConsultant, 0) & ", " & _
            "" & Nz(Me.E_IdClient, 0) & "," & _
            "" & Convert_DateUS_Short(Nz(Me.E_DateIntervention, Date)) & "," & _
            "'" & Nz(E_Type, "") & "', " & _
            "'" & Protected_Quote(Nz(E_Fournisseur, "")) & "'," & _
            "" & Nz(E_Montant, 0) & ", " & _
            "" & Nz(E_Km, 0) & ", " & _
            "'" & Protected_Quote(Nz(E_Commentaire, "")) & "'" & _
            ")"
    La liste des mots clés d'Access ici : https://support.office.com/fr-fr/art...7-da237c63eabe

    et la version corrigée ci-jointe

    Bien à toi et bonne continuation

    ps. il faut penser à modifier le update également pour indiquer le bon champ

    Jm
    Fichiers attachés Fichiers attachés
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  5. #25
    Nouveau membre du Club
    Homme Profil pro
    Consultant Organisation TPE
    Inscrit en
    Juin 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Organisation TPE
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 82
    Points : 39
    Points
    39
    Par défaut =>
    Jimbolion, Bonjour

    merci pour ta réponse.

    j'ai bien saisi pour les noms réservé et je comprends très bien, c'était évident avec le "Date"...

    sinon, je pense que tu m'avais renvoyé mon fichier précédent dans le ZIP, du coup, en reprenant le bout de code, j'ai pu arriver à faire l'insertion.
    mais en modifiation, je bloque sur ceci:
    Nom : bug insert.jpg
Affichages : 316
Taille : 134,3 Ko

    je pense que c'est encore un souci de ","...

    à ce propos, je t'en avais déjà parlé, mais je n'arrive à comprendre la bonne synthaxte de l'inclusion du SQL dans le VBA...
    j'arrive pas à voir pourquoi un des fois il faut, un ' ou une ,, un espace ou pas d'espace, des "" : c'est ésothérique pour le moment:

    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
     Select Case Nz(Me.E_IdNdfKm, 0)
        Case 0  ' Insert il s'agit d'une nouvelle Saisie
          R_Sql = "INSERT INTO [T-NDFKm]" & _
            "(IdConsultant,IdClient,DateTNDF,Type,Fournisseur,Montant,Km,Commentaire)" & _
            " VALUES (" & _
            "" & Nz(Me.IdConsultant, 0) & "," & _
            "" & Nz(Me.E_IdClient, 0) & "," & _
            "" & Convert_DateUS_Short(Nz(Me.E_DateIntervention, Date)) & "," & _
            "'" & Nz(E_Type, "") & "'," & _
            "'" & Protected_Quote(Nz(E_Fournisseur, "")) & "'," & _
            "" & Nz(E_Montant, 0) & "," & _
            "" & Nz(E_Km, 0) & "," & _
            "'" & Protected_Quote(Nz(E_Commentaire, "")) & "'" & _
            ")"
        Case Else  ' update d'une ligne existant
          R_Sql = "UPDATE [T-NDFKm] SET [T-NDFKm].IdConsultant = " & Nz(Me.IdConsultant, 0) & _
            ",[T-NDFKm].IdClient = " & Nz(Me.E_IdClient, 0) & _
            ",[T-NDFKm].DateTNDF = " & Convert_DateUS_Short(Nz(Me.E_DateIntervention, Date)) & _
            ",[T-NDFKm].Type = '" & Nz(E_Type, "") & _
            ",[T-NDFKm].Fournisseur = '" & Protected_Quote(Nz(E_Fournisseur, "")) & "'," & _
            "',[T-NDFKm].Montant = " & Nz(E_Montant, 0) & _
            "',[T-NDFKm].Km = " & Nz(E_Km, 0) & _
            ",[T-NDFKm].Commentaire = '" & Protected_Quote(Nz(E_Commentaire, "")) & "' "
            R_Sql = R_Sql & "WHERE ((([T-NDFKm].N°)=" & Nz(Me.E_IdNdfKm, 0) & "));"
      End Select
    si tu peux m'éclairer la dessus, je suis preneur !!!
    Pièce jointe 199726

    merci et desolé pour les a/R...


    RC

  6. #26
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    RC

    Donc en affichant le résultat de la requête grâce à un point d'arrêt l'update nous donne ceci :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE [T-NDFKm] SET [T-NDFKm].IdConsultant = 107,[T-NDFKm].IdClient = 14,[T-NDFKm].DateTNDF = #02-05-2016#,[T-NDFKm].Type = 'Nuité,[T-NDFKm].Fournisseur = 'tsst',',[T-NDFKm].Montant = 50',[T-NDFKm].Km = 50,[T-NDFKm].Commentaire = '' WHERE ((([T-NDFKm].N°)=32));

    Nuité étant de type texte il doit être protégé par des quotes, Montant de type numérique ne doit pas être protégé par des quotes et si tel devait être le cas les quotes se mettent avant et après la référence du champ.

    ton code sur la partie update ainsi transformé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
          R_Sql = "UPDATE [T-NDFKm] SET [T-NDFKm].IdConsultant = " & Nz(Me.IdConsultant, 0) & _
            ",[T-NDFKm].IdClient = " & Nz(Me.E_IdClient, 0) & _
            ",[T-NDFKm].DateTNDF = " & Convert_DateUS_Short(Nz(Me.E_DateIntervention, Date)) & _
            ",[T-NDFKm].Type = '" & Nz(E_Type, "") & "'" & _
            ",[T-NDFKm].Fournisseur = '" & Protected_Quote(Nz(E_Fournisseur, "")) & "'" & _
            ",[T-NDFKm].Montant = " & Nz(E_Montant, 0) & _
            ",[T-NDFKm].Km = " & Nz(E_Km, 0) & _
            ",[T-NDFKm].Commentaire = '" & Protected_Quote(Nz(E_Commentaire, "")) & "' "
            R_Sql = R_Sql & "WHERE ((([T-NDFKm].N°)=" & Nz(Me.E_IdNdfKm, 0) & "));"

    Pour une explication plus poussée, j'essaie de me programmer un billet blog expliquant tout çà !

    Amicalement

    jm
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  7. #27
    Nouveau membre du Club
    Homme Profil pro
    Consultant Organisation TPE
    Inscrit en
    Juin 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Organisation TPE
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 82
    Points : 39
    Points
    39
    Par défaut => réponse au post # 26
    Jimbolion,

    pour le billet blog sur la découpe du SQL en vba, je serai ravi !!

    en attendant, c'est encore la "zermi" dans mon truc...

    "100 fois sur l'établi tu remettras ton ouvrage ...."
    (ca a été écris pour moi)


    je vais essayer de faire la liste de la cour des miracles des dysfonctionnement que j'ai réussi à créer:

    • quand je fais une nouvelle saisie de NDF et KM, j'ai l'impression que ca marche:

    Nom : 020216 01.jpg
Affichages : 288
Taille : 58,2 Ko
    mais en fait non, les données saisies se mélangent avec la ligne précédente, c'est un beau bordxxx !
    Nom : 020216 02.jpg
Affichages : 383
Taille : 140,5 Ko



    • ensuite, si je veux supprimer une ligne

    Nom : 020216 03.jpg
Affichages : 283
Taille : 92,2 Ko
    à prirori, c'est le "Raz_Saisie" en fin de suppression qui ne passe pas...



    • quand j'arrive sur une nouvelle ouverture,

    mon interface "Parent'' n'est pas vide, et reprend "en partie".... les données de la ligne du fils :
    Nom : 020216 04.jpg
Affichages : 279
Taille : 58,2 Ko



    • format chiffre

    tu m'avais proposer l'alternative entre le replace . => , et les modifications des paramêtres régionaux et j'avais dans un 1er temps opté pour la 2nd option...
    à l'usage, je souhaite ne pas modifier les paramètres régionaux et donc utiliser le replace
    je suppose qu'il faut qu'on modifie mon code sur la partie insertion des montant des NDF et des Km ?


    Voilà, cela te fait une belle liste du "bras cassé", merci !!!

    Pièce jointe 199744

    RC

  8. #28
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Rc,

    Tu as basé ton formulaire sur une source de données :

    Nom : Capture.JPG
Affichages : 284
Taille : 86,3 Ko

    comme la source utilisée dans le formulaire principal et le sous-formulaire sont identiques il peut effectivement y avoir collision sur les enregistrements.
    Je pense donc qu'une bonne partie de tes problèmes soulevés sont tous issus de cette source de données.

    La source de données à utiliser est ta table T_Consultants comme nous l'avons fait sur la saisie des temps

    Je te laisse corriger et tu me fais un retour si çà ne fonctionne pas
    Attention le principe est identique à celui spécifié sur la saisie des temps (donc champs indépendants...)

    Jm
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  9. #29
    Nouveau membre du Club
    Homme Profil pro
    Consultant Organisation TPE
    Inscrit en
    Juin 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Organisation TPE
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 82
    Points : 39
    Points
    39
    Par défaut => réponse au # 28
    JimboLion, Bonjour

    Un perpétuel merci pour ton suivi.

    J'ai appliqué tes dernière recommendations et effectivement, j'arrive maintenant à faire des choses sur cette saisie des NDF et Km...

    Ce qui marche:
    - pointage d'un ligne pour modification dans le SF, remontée des donnée dans le F, modification, puis redescente dans le SF
    - suppression d'une ligne ok

    Ce qui marche presque:
    - insertion d'une nouvelle ligne quand c'est las 1ère intervention mais... pas les suivantes, ca bug
    Nom : 160402 1.jpg
Affichages : 289
Taille : 109,6 Ko

    j'imagine qu'à la seconde manip, il se perd dans les méandres d'Acess !


    Merci de bien vouloir m'éclairer stp !
    Pièce jointe 199956

    RC le petit oiseau, car petit à petit ... vraiment "petit à petit"

  10. #30
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Rc,

    Cui-cui

    Je subodore que le problème vient de l'apostrophe non pris en charge par la protection du type; donc en transformant ainsi cette portion de code chambre d'hôtes devrait s'insérer :


    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
      Select Case Nz(Me.E_IdNdfKm, 0)
        Case 0  ' Insert il s'agit d'une nouvelle Saisie
          R_Sql = "INSERT INTO [T-NDFKm]" & _
            "(IdConsultant,IdClient,DateTNDF,Type,Fournisseur,Montant,Km,Commentaire)" & _
            " VALUES (" & _
            "" & Nz(Me.IdConsultant, 0) & "," & _
            "" & Nz(Me.E_IdClient, 0) & "," & _
            "" & Convert_DateUS_Short(Nz(Me.E_DateIntervention, Date)) & "," & _
            "'" & Protected_Quote(Nz(E_Type, "")) & "'," & _
            "'" & Protected_Quote(Nz(E_Fournisseur, "")) & "'," & _
            "" & Replace(Nz(E_Montant, 0), ",", ".") & "," & _
            "" & Replace(Nz(E_Km, 0), ",", ".") & "," & _
            "'" & Protected_Quote(Nz(E_Commentaire, "")) & "'" & _
            ")"
        Case Else  ' update d'une ligne existant
          R_Sql = "UPDATE [T-NDFKm] SET [T-NDFKm].IdConsultant = " & Nz(Me.IdConsultant, 0) & _
            ",[T-NDFKm].IdClient = " & Nz(Me.E_IdClient, 0) & _
            ",[T-NDFKm].DateTNDF = " & Convert_DateUS_Short(Nz(Me.E_DateIntervention, Date)) & _
            ",[T-NDFKm].Type = '" & Protected_Quote(Nz(E_Type, "")) & "'" & _
            ",[T-NDFKm].Fournisseur = '" & Protected_Quote(Nz(E_Fournisseur, "")) & "'" & _
            ",[T-NDFKm].Montant = " & Replace(Nz(E_Montant, 0), ",", ".") & _
            ",[T-NDFKm].Km = " & Replace(Nz(E_Km, 0), ",", ".") & _
            ",[T-NDFKm].Commentaire = '" & Protected_Quote(Nz(E_Commentaire, "")) & "' "
            R_Sql = R_Sql & "WHERE ((([T-NDFKm].N°)=" & Nz(Me.E_IdNdfKm, 0) & "));"
      End Select
    Si cela s'avère efficace, il faudra donc utiliser le Protected_Quote également dans le module de gestion des temps sur le champ E_Type

    J'ai utilisé également le replace de la virgule par le point dans les valeurs numériques.

    http://silkyroad.developpez.com/VBA/...racteres/#LI-J

    Si jamais tu devais avoir de nouveau cette erreur tu cliques sur debogage et dans la fenêtre d’exécution tu tapes ? R_Sql ce qui permettra de récupérer la chaîne injectée et faciliter la résolution du problème.

    Nom : Capture3.JPG
Affichages : 274
Taille : 50,0 Ko

    Amicalement

    JM
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  11. #31
    Nouveau membre du Club
    Homme Profil pro
    Consultant Organisation TPE
    Inscrit en
    Juin 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Organisation TPE
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 82
    Points : 39
    Points
    39
    Par défaut
    JimboLion, Cui aussi !

    En fait, j'ai lu ta réponse
    Je subodore que le problème vient de l'apostrophe non pris en charge par la protection du type; donc en transformant ainsi cette portion de code chambre d'hôtes devrait s'insérer :
    mais c'est dans "Fournisseur" pas dans Type, que y'avait la "chambre d'hote" ...

    Par contre, c'est très bien d'avoir mis la protection des des chiffres pour le montant et le Km...

    donc, mon souci, perdure, j'ai bien pu faire une première insertion, puis bug à la seconde...

    donc j'ai appliqué le "? R_Sql" dans la fenêtre d'exécution, et voilà ce que j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO [T-NDFKm](IdConsultant,IdClient,DateTNDF,Type,Fournisseur,Montant,Km,Commentaire) VALUES (107,24,#02-05-2016#,'Essence','total',75,,'')
    ce qui ne m'aide pas trop à voir ou cela dysfonctionne....

    Pièce jointe 200025

    Cuit Cuit merci ! merci ! en langage moineau

    RC

  12. #32
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Rc,

    Oui l'erreur se situe dans la remise à zéro des valeurs :


    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
    Sub Raz_Saisie()
      ' Courtoisie Jimbolion
      Me.E_Commentaire = ""
      Me.E_DateIntervention = Null
      Me.E_IdClient = Null ' repasse en insertion nouvelle ligne
      Me.E_Montant = 0
      Me.E_Fournisseur = ""
      Me.E_Km = 0
      Me.E_Type = ""
      Me.E_IdNdfKm = 0
      Me.B_Delete.Enabled = False
      ' essai pour se repositionner en haut du tableau après RAZ
    '  DoCmd.GoToControl "SF_SaisieNdfKm"
      Me.SF_SaisieNdfKm.SetFocus
      Me.Requery
      '
      Me.E_DateIntervention.SetFocus
      '
    End Sub
    Km étant de type numérique et non de type texte, sa valeur doit être remise à zéro et non pas à vide.

    Amicalement

    jm
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  13. #33
    Nouveau membre du Club
    Homme Profil pro
    Consultant Organisation TPE
    Inscrit en
    Juin 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Organisation TPE
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 82
    Points : 39
    Points
    39
    Par défaut => on continue !
    Bonjour le forum, JimboLion,

    Long time no see, mais toujours là!

    Je poursuis mon aventure avec mon interface de saisie des coûts des consultants.

    J'en suis maintenant à la saisie des Factures.

    Pour cela, je dois avoir le menu Administrateur, en choisissant le Consultant "Pierre DUPONT" à qui j'ai mis ce statut.

    Enfin, je clique sur le bouton Saisie Facture...

    Point clé:
    j'ai donc créée un formulaire double comme pour la saisie des Temps et des Notes de Frais.
    Dans ce cas précis des factures, je n'ai pas besoin de rappeler le nom du consultant car les factures sont aux clients...

    J'ai modifié la requete d'insertion, mais pas comme il faut... car même si c'est une nouvelle saisie, je passe en Update...

    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
      Select Case Nz(Me.E_IdFacture, 0)
        Case 0  ' Insert il s'agit d'une nouvelle Saisie
          R_Sql = "INSERT INTO [T_Facture]" & _
            "(IdClient,NumFacture,Montant,Commentaire)" & _
            " VALUES (" & _
            "" & Nz(Me.E_IdClient, 0) & "," & _
            "" & Convert_DateUS_Short(Nz(Me.E_DateFacture, Date)) & "," & _
            "'" & Protected_Quote(Nz(E_NumFact, "")) & "'," & _
            "" & Replace(Nz(E_Montant, 0), ",", ".") & "," & _
            "'" & Protected_Quote(Nz(E_Commentaire, "")) & "'" & _
            ")"
        Case Else  ' update d'une ligne existant
          R_Sql = "UPDATE [T_Facture] SET [T_Facture].IdConsultant = " & Nz(Me.IdConsultant, 0) & _
            ",[T_Facture].IdClient = " & Nz(Me.E_IdClient, 0) & _
            ",[T_Facture].DateTNDF = " & Convert_DateUS_Short(Nz(Me.E_DateFacture, Date)) & _
            ",[T_Facture].Montant = " & Replace(Nz(E_Montant, 0), ",", ".") & _
            ",[T_Facture].Commentaire = '" & Protected_Quote(Nz(E_Commentaire, "")) & "' "
            R_Sql = R_Sql & "WHERE ((([T_Facture].N°)=" & Nz(Me.E_IdFacture, 0) & "));"
      End Select

    Peux tu y jeter un coup d'oeil

    merci !!

    RC

  14. #34
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Rc

    donc ta requête jouée me donne ce résultat (insert)

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO [T_Facture](IdClient,NumFacture,Montant,Commentaire) VALUES (9,#02-16-2016#,'1236',200,'')

    5 arguments sont transmis alors que les champs spécifiés sont de 4

    dans le update la requête fournie est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE [T_Facture] SET [T_Facture].IdConsultant = 107,[T_Facture].IdClient = 11,[T_Facture].DateTNDF = #12-09-2015#,[T_Facture].Montant = 270,[T_Facture].Commentaire = 'test' WHERE ((([T_Facture].N°)=3));
    il est fait référence à 2 champs de la table T_Facture inexistants : IdConsultant et DateTNDF

    ton code corrigé :

    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
      Select Case Nz(Me.E_IdFacture, 0)
        Case 0  ' Insert il s'agit d'une nouvelle Saisie
          R_Sql = "INSERT INTO [T_Facture]" & _
            "(IdClient,DateFacture, NumFacture,Montant,Commentaire)" & _
            " VALUES (" & _
            "" & Nz(Me.E_IdClient, 0) & "," & _
            "" & Convert_DateUS_Short(Nz(Me.E_DateFacture, Date)) & "," & _
            "'" & Protected_Quote(Nz(E_NumFact, "")) & "'," & _
            "" & Replace(Nz(E_Montant, 0), ",", ".") & "," & _
            "'" & Protected_Quote(Nz(E_Commentaire, "")) & "'" & _
            ")"
        Case Else  ' update d'une ligne existant
          R_Sql = "UPDATE [T_Facture] SET [T_Facture].IdClient = " & Nz(Me.E_IdClient, 0) & _
            ",[T_Facture].DateFacture = " & Convert_DateUS_Short(Nz(Me.E_DateFacture, Date)) & _
            ",[T_Facture].Montant = " & Replace(Nz(E_Montant, 0), ",", ".") & _
            ",[T_Facture].Commentaire = '" & Protected_Quote(Nz(E_Commentaire, "")) & "' "
            R_Sql = R_Sql & "WHERE ((([T_Facture].N°)=" & Nz(Me.E_IdFacture, 0) & "));"
      End Select
    Comme nous en avions parlé, dans mon blog tu trouveras quelques explications sur l'utilisation des requêtes en vba

    http://www.developpez.net/forums/blo...s-ecrites-vba/

    Amicalement

    Jean-Marie
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  15. #35
    Nouveau membre du Club
    Homme Profil pro
    Consultant Organisation TPE
    Inscrit en
    Juin 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Organisation TPE
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 82
    Points : 39
    Points
    39
    Par défaut => réponse post #34
    JimboLion, re

    Merci pour ton retour !

    1ère question, pour débuger et avoir le code SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO [T_Facture](IdClient,NumFacture,Montant,Commentaire) VALUES (9,#02-16-2016#,'1236',200,'')
    as tu utilisé le Debug.Print SQL et si oui, où l'as tu placé dans le code car je n'y arrive pas... ?

    5 arguments sont transmis alors que les champs spécifiés sont de 4
    => oui, c'est clair, j'avais ommis la date de facture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     R_Sql = "INSERT INTO [T_Facture]" & _
            "(IdClient,NumFacture,Montant,Commentaire)" & _
            " VALUES (" & _
            "" & Nz(Me.E_IdClient, 0) & "," & _
            "" & Convert_DateUS_Short(Nz(Me.E_DateFacture, Date)) & "," & _
            "'" & Protected_Quote(Nz(E_NumFact, "")) & "'," & _
            "" & Replace(Nz(E_Montant, 0), ",", ".") & "," & _
            "'" & Protected_Quote(Nz(E_Commentaire, "")) & "'" & _
            ")"
    et pour l'Update,... la double horreur avec la reprise "bête" de l'IdConsultant, ici, non pertinent, et l'inattention sur DateTNDF au lieu de DateFacture...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Case Else  ' update d'une ligne existant
          R_Sql = "UPDATE [T_Facture] SET [T_Facture].IdConsultant = " & Nz(Me.IdConsultant, 0) & _
            ",[T_Facture].IdClient = " & Nz(Me.E_IdClient, 0) & _
            ",[T_Facture].DateTNDF = " & Convert_DateUS_Short(Nz(Me.E_DateFacture, Date)) & _
            ",[T_Facture].Montant = " & Replace(Nz(E_Montant, 0), ",", ".") & _
            ",[T_Facture].Commentaire = '" & Protected_Quote(Nz(E_Commentaire, "")) & "' "
            R_Sql = R_Sql & "WHERE ((([T_Facture].N°)=" & Nz(Me.E_IdFacture, 0) & "));"
      End Select
    Donc, maintenant l'insertion fonctionne bien.

    J'ai par contre un souci en modification:

    Nom : 16021701.jpg
Affichages : 280
Taille : 79,4 Ko
    Nom : 16021702.jpg
Affichages : 310
Taille : 91,3 Ko
    Nom : 16021703.jpg
Affichages : 328
Taille : 70,7 Ko

    Ca serait lier à la variable de positionnement de la ligne.... ?


    Merci pour ton retour !


    RC

  16. #36
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Robert Camion

    J'avais noté effectivement l'instabilité du gotorecord, j'ai donc opté pour une autre technique qui semble plus fiable le FindRecord

    https://msdn.microsoft.com/fr-fr/lib.../ff835361.aspx

    Cette technique permet de retrouver dans une liste d'enregistrements un critère unique. Le champ unique à valider reste donc l'id de la table T_factures (champ N°). Ce champ étant reporté sur la partie supérieure du formulaire lors d'une modification nous allons donc l'utiliser pour retrouver notre enregistrement.

    Avant d'établir le FindFirst il nous faut donc insérer ce champ dans le sous Formulaire

    Nom : Capture.JPG
Affichages : 287
Taille : 68,4 Ko

    Les propriétés modifiées sont importantes car le contrôle restant visible il ne doit pas s'affiché à l'écran (largeur :0, bordure transparente)

    Ensuite nous allons transformer le code ainsi :

    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
    '
      ' insertion / modification données
      CurrentDb.Execute R_Sql
      '
      IfFact = Me.E_IdFacture
      '
      ' Rafraîchir les données du sous formulaire
      Me.SF_SaisieFacture.Requery
      '
      ' Si il s'agit d'une modification on repositionne le pointeur sur la ligne souhaitée
      If Me.E_IdFacture > 0 Then
        '
        DoCmd.GoToControl "SF_SaisieFacture"      '
        '
        Me.[SF_SaisieFacture]!E_Num.SetFocus      ' Renvoie le contrôle sur la zone à rechercher
        '
        If IfFact > 0 Then
            DoCmd.FindRecord IfFact, acStart, False, acDown, False, acCurrent, True
        End If
      End If
      '
      '
      Me.E_IdFacture = 0 ' insertion
    Idfact correspond au numéro de facture de l'entête du formulaire.

    Tu devrais éventuellement pouvoir transformer de la même manière ton formulaire SaisieTemps et Saisie des notes de Frais.

    Cordialement

    Ci-joint la base corrigée

    ps. Tu avais omis le champ Numfacture dans l'update également

    JM
    Fichiers attachés Fichiers attachés
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  17. #37
    Nouveau membre du Club
    Homme Profil pro
    Consultant Organisation TPE
    Inscrit en
    Juin 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Organisation TPE
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 82
    Points : 39
    Points
    39
    Par défaut => réponse au poste #36
    JimboLion, merci !!

    Comme proposé avec la technique alternative, j'ai essayé de modifié les 2 autres formulaires.

    En ce qui concerne le formulaire F_SaisieTemps, voilà l'adaptation que j'ai faite sur le modèle de celui des factures:

    - ajout du champs E_Num dans le SF_SaisieTemps avec pour source le N° de la table T_Temps
    Nom : 160217031.jpg
Affichages : 294
Taille : 75,6 Ko

    - puis modification du code du repositionnement:
    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
     ' insertion / modification données
      CurrentDb.Execute R_Sql
      '
      IdTemps = Me.E_IdTemps
      '
      ' Rafraîchir les données du sous formulaire
      Me.SF_SaisieTemps.Requery
      '
      ' Si il s'agit d'une modification on repositionne le pointeur sur la ligne souhaitée
      If Me.E_IdTemps > 0 Then
        DoCmd.GoToControl "SF_SaisieTemps"      '
        Me.[SF_SaisieTemps]!E_Num.SetFocus      ' Renvoie le contrôle sur la zone à rechercher
        If IdTemps > 0 Then
            DoCmd.FindRecord IdTemps, acStart, False, acDown, False, acCurrent, True
        End If
      End If
      '
      Me.E_IdTemps = 0 ' insertion
    '
    en lieu et place de :
    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
     ' insertion / modification données
    '  CurrentDb.Execute R_Sql
    '  '
    '  ' Rafraîchir les données du sous formulaire
    '  Me.SF_Temps.Requery
    '
    '  '
    '  ' Si il s'agit d'une modification on repositionne le pointeur sur la ligne souhaitée
    '  If Me.E_IdTemps > 0 Then
    '    Old_Position = Val(Get_Parametre("positTemps"))
    '    '
    '    DoCmd.GoToControl "SF_Temps"
    '    Me.SF_Temps.SetFocus
    '    If Old_Position > 1 Then
    '        DoCmd.GoToRecord , , , Old_Position - 1
    '    End If
    '  End If
    '  '
    le reste du code restant inchangé...

    Problème... en insertion et modification, le code ne reconnait plus mon SF_SaisieTemps... bizarre:
    Nom : 16021704.jpg
Affichages : 318
Taille : 218,1 Ko

    un indice quand même, j'ai renommé par cohérence, T-Temps en T_Temps, mais j'ai pris soin de renommer dans le code...

    voilà voilà
    Pièce jointe 201106[

    autre remarque, le fichier non zippé fait maintenant 2560 Ko et prendre un peu de temps à s'ouvrir... est ce normal, sachant qu'il n'y a guère plus de saisies que précédemment...

    à te lire, mon cher JMB et encore merci pour ta patience à toute épreuve !

    RC

  18. #38
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Rc,

    Oui le nom de ton contrôle ne se nomme pas SF_SaisieTemps mais SF_Temps dans ton formulaire de saisie.

    Attention à ne pas confondre le nom de la source et son nommage (qui est un alias)

    Nom : Capture2.JPG
Affichages : 280
Taille : 93,7 Ko

    J'ai activé l'options compactage automatique dans les options (ce qui permet de supprimer les objets temporaires) afin d'alléger la taille de la base de données.

    Attention les requêtes de contrôles de temps devaient elles aussi être modifiées : R_CalculPourcentage_I et R_CalculPourcentage_P.

    Le code corrigé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     IdTemps = Me.E_IdTemps
      '
      ' Rafraîchir les données du sous formulaire
      Me.SF_Temps.Requery
      '
      ' Si il s'agit d'une modification on repositionne le pointeur sur la ligne souhaitée
      If Me.E_IdTemps > 0 Then
        DoCmd.GoToControl "SF_Temps"      '
        Me.[SF_Temps]!E_Num.SetFocus      ' Renvoie le contrôle sur la zone à rechercher
        If IdTemps > 0 Then
            DoCmd.FindRecord IdTemps, acStart, False, acDown, False, acCurrent, True
        End If
      End If
    Cordialement

    jm

    ESSAI_SupervisionClients_170216_JMB2.zip
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  19. #39
    Nouveau membre du Club
    Homme Profil pro
    Consultant Organisation TPE
    Inscrit en
    Juin 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Organisation TPE
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 82
    Points : 39
    Points
    39
    Par défaut => réponse au post #38
    JimboLion, Bonjour (re)

    Merci pour ta réponse d'hier.
    Je te remercie pour l'option de compactage.

    j'ai bien pris note de la différence entre le nom et l'objet source d'un formulaire...
    comme pour les autre formulaire, j'ai la même chose, j'ai finalement bien renommé mon SF_SaisieTemps en SF_SaisieTemps...

    Bref, j'ai poursuivi la modification du formulaire F_SaisieNdfKm avec création du champs E_Num dans le SF_SaisieNdfKm comme pour les autres formulaire....

    Bien évidemment, y'a qqhose que j'ai pas fait comme il faut; .. je peux bien faire une première insertion mais après je bug.
    comme je te le disais hier, je ne sais pas où tu vois pour le débugage (fenêtre exécution)...

    D'autre part, j'ai récupéré ta fonction VirgtoPoint, que je pensais réutiliser pour les lignes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Replace(Nz(E_Montant, 0), ",", ".")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VirgToPoint(Nz(E_Montant, 0))
    mais faut d'abord que je comprenne pourquoi cela bug avec cette modification...
    Pièce jointe 201170,

    merci !!!

    RC

  20. #40
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    RC

    oups je suis passé à côté de ton message.

    je te propose le correctif dans la journée.

    Encore désolé

    jm
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. [AC-2010] ColumnHidden, ColumnOrder sur formulaire double affichage
    Par rnd dans le forum IHM
    Réponses: 5
    Dernier message: 03/09/2020, 15h43
  2. [AC-2010] Formulaire double affichage sur formulaire unique ?
    Par AlPot dans le forum IHM
    Réponses: 9
    Dernier message: 29/12/2012, 17h25
  3. [AC-2007] Tri/Filtre et formulaire double affichage
    Par niko8181 dans le forum IHM
    Réponses: 3
    Dernier message: 22/02/2012, 07h45
  4. [AC-2007] Setfocus sur formulaire double affichage
    Par billybob2 dans le forum IHM
    Réponses: 0
    Dernier message: 09/07/2010, 08h10
  5. [AC-2007] imprimer le résultat d'un filtre sur formulaire double affichage
    Par johanaquatique dans le forum IHM
    Réponses: 6
    Dernier message: 18/06/2009, 13h54

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