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

VBA Access Discussion :

Difficulté faire fonctionner OpenArgs


Sujet :

VBA Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 312
    Points : 155
    Points
    155
    Par défaut Difficulté faire fonctionner OpenArgs
    Bonjour, je reviens vers vous, car je suis confronté à une problème dont je ne vois pas l'issue.

    J'ai une formulaire "encodage commande". J'aimerai pouvoir effectuer 3 opérations (si le cas se présente) tout en restant dans mon document.
    1) l'article existe, mais codebarre inexistant. -> J'ouvre mon page ChangementProduit (ça fonctionne)

    2) le prix existant dans la bdd est erroné et le client choisi à le modifié -> j'ouvre la même page, mais qqe champs sont occulté -> la ça ne fonctionne pas, j'ai une message erreur.

    L'erreur ce produit indépendamment si le codebarre existe ou n'existe pas dans la fiche article.

    Pour appeler ma page, via Open Args en cas 1 voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     If Me.Codebarre_EAN_13 = "" Or IsNull(Me.Codebarre_EAN_13) Then
        ChoixClient = 1
        DoCmd.OpenForm "frmProduitsChangeCode", , , , acFormEdit, , Me.IdProduit.Value
      End If
    je fait pareil pour cas 2, sauf qu'il y à une msgbox avant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Response = MsgBox("Voulez vous modifier le prix dans la base de données?", vbYesNo)
    If Response = vbYes Then
    ChoixClient = 2
      DoCmd.OpenForm "frmProduitsChangeCode", , , , acFormEdit, , Me.IdProduit.Value
    End If
    A l'arrivée la page produit s'ouvre.
    Dans le cas 1 sur le record demandé (pe la 48eme),
    dans le cas 2 il se positionne sur la première ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    Sub Form_Open(Cancel As Integer)
    'On Error GoTo GestionErreur
     
    Me.IdProduit.Enabled = True
    Me.CodeFournisseur.Enabled = False
    Me.CodeIdentifient.Enabled = False
    Me.Description.Enabled = False
    Me.Couleur.Enabled = False
    Me.btnEtiquette.Visible = False
    Me.btnFirst.Enabled = False
    Me.btnLast.Enabled = False
    Me.btnNext.Enabled = False
    Me.btnNewRecord.Enabled = False
    Me.btnRecherche.Enabled = False
     
    Select Case ChoixClient
    Case 1
    Me.PrixAchat.Visible = False
    Me.PrixMoyen.Visible = False
    Me.PrixVenteHTVA.Visible = False
    Me.Texte48.Visible = False
    Me.PrixVenteTvac.Visible = False
    Me.TVA.Visible = False
    Me.chxPreCollect.Visible = False
    Me.Étiquette59.Visible = False
    Me.prixZINhtva.Visible = False
    Me.Étiquette60.Visible = True
    Me.CodebarreCode.Visible = True
    Me.Codebarre_EAN_13_Bijschrift.Visible = True
    Me.Codebarre_EAN_13.Visible = True
    Me.Codebarre_EAN_13.SetFocus
     
    Case 2
    Me.PrixAchat.Visible = True
    Me.PrixMoyen.Visible = True
    Me.PrixVenteHTVA.Visible = True
    Me.Texte48.Visible = True
    Me.PrixVenteTvac.Visible = True
    Me.TVA.Visible = True
    Me.chxPreCollect.Visible = True
    Me.Étiquette59.Visible = True
    Me.prixZINhtva.Visible = True
    Me.Étiquette60.Visible = False
    Me.CodebarreCode.Visible = False
    Me.Codebarre_EAN_13_Bijschrift.Visible = False
    Me.Codebarre_EAN_13.Visible = False
    Me.PrixAchat.SetFocus
    End Select
     
     
     
        If Not IsNull(Me.OpenArgs) Then
            strRecherche = Me.OpenArgs
            strRecherche = Val(strRecherche)
            Dim RS As DAO.Recordset
            Set RS = Me.RecordsetClone
            RS.FindFirst "IdProduit = " & strRecherche
            If Not RS.NoMatch Then
              Me.Bookmark = RS.Bookmark
            End If
        End If
     
    GoTo Fin
     
    GestionErreur:
    'If Err.Number = 2046 Then
    'rien faire
    'Else
      strErreur = DLookup("[DescriptionFrench]", "tbl_Errors", "[ErrorID] = " & Err.Number)
        If strErreur = "" Or IsNull(strErreur) Then
          strErreur = DLookup("[DescriptionEnglish]", "tbl_Errors", "[ErrorID] = " & Err.Number)
        End If
      MsgBox ("") & Err.Number & "  " & strErreur, vbCritical, "Gestion Stock Zumbawear Assymetric"
     
    Set oFSO = New Scripting.FileSystemObject
        Set oTxt = oFSO.OpenTextFile(CurrentProject.Path & "\Gestion Stock Assymetric.log", ForAppending)
     
        With oTxt
         strErrTexte = (Now & "  " & Err.Number & "  " & strErreur & "  sub Form_Load() - frmProduitsChangeCode")
         .WriteLine strErrTexte
        End With
        oTxt.Close
    'End If
    Fin:
    End Sub
    Est-ce que qqn vois que je fais mal dans mon code? Pq ceci ne fonctionne que à moitie?

    bien à vous

    Hans

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 312
    Points : 155
    Points
    155
    Par défaut
    je viens de changer le code (grace à Loufab) en ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If Not IsNull(Me.OpenArgs) Then
            strRecherche = Me.OpenArgs
            strRecherche = Val(strRecherche)
            MsgBox "strRecherche = " & strRecherche
            Me.Recordset.FindFirst "IdProduit = " & strRecherche
    End If
    MsgBox pour voir quelle valeur est passé, et strRecherche porte bien le bon résultat, mais il n'affiche pas le bon fichier, tjs fichier 1.

  3. #3
    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
    Salsaboy60,

    Pourquoi ne pas passer directement le filtre dans l'appel du formulaire ?
    Cela t'évitera bien des opérations sur ton formulaire...

    Un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "frmProduitsChangeCode", , , "IdProduit=" & .IdProduit.Value, ,
    Ton formulaire s'ouvrira directement sur le bon enregistrement.

    A moins que quelque chose m'échappe ?

    JimBoLion
    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

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 555
    Points
    24 555
    Par défaut
    Bonjour,
    On peut utiliser la méthode du findfirst pour une seule raison, le placement sur un enregistrement précis sans pour autant se couper de la possibilité d'accéder aux autres, ce que la clause Where ne permet pas (sauf redéfinition de la source). Quant au Filter il faut cliquer sur l'icone de suppression du filtre si l'on à conservé la barre de nav.

    Donc uniquement des aspects ergonomiques dans cette approche.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    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
    loufab ,

    Je connais fort heureusement les subtilités d'ouverture d'un formulaire et les différentes conditions d'ouverture (filtres, conditions ...) et de l'impact sur ceux-ci.

    Je lis juste le sujet et je vois que l'ouverture du formulaire se fait sur une condition précise : la modification de la fiche article issu du formulaire précédent. Donc dans ce cas précis, je ne vois pas l'intérêt d'accéder aux autres fiches et même mieux j'interdirai cette possibilité.

    Effectivement le filtre dans mon cas n'est pas approprié, et il vaudrait mieux utiliser la condition dans ce cas... Le filtre répond tout à la fois à la problématique de changement des valeurs d'un enregistrement et laisse toutefois la possibilité à l'utilisateur d'accéder à l'ensemble des informations issues de la table (ou du recordsource pour être plus précis)

    JimBoLion
    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

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 555
    Points
    24 555
    Par défaut
    Le message était surtout à l'intention de Salsaboy qui semble être un peu perdu dans MS ACCESS comme dans le forum d'ailleurs (1 problème = 1 post).
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 312
    Points : 155
    Points
    155
    Par défaut
    merci jimbolion, je vais tester ça.

    Entre temps le code via OpenArgs fonctionne. J'avais mis un code pour intercepter une code erreur, et c'est ça qui empêcher de bien fonctionner.

    Hans

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 312
    Points : 155
    Points
    155
    Par défaut
    Salut Jimbolion,

    ça fonctionne nickel, probablement tout à fait d'accord que c'est mieux ainsi.

    @loufab, oui, sur ce coup si, j'étais un peu perdu. Trop peu de sommeil surement, je ne voyais vraiment plus la sortie.
    Par contre, je ne me suis pas rendu compte que j'ai posté via ce post plus que une problème.

    Hans

  9. #9
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 555
    Points
    24 555
    Par défaut
    plutôt que tu as ouvert 2 discussions pour un même problème.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/09/2007, 18h04
  2. [Qbasic] Difficulté de faire fonctionner un programme
    Par wolverine1991 dans le forum Basic
    Réponses: 4
    Dernier message: 03/03/2007, 15h21
  3. Faire fonctionner Flash sous Konqueror
    Par Ultra-FX dans le forum KDE
    Réponses: 2
    Dernier message: 20/06/2004, 18h40
  4. Réponses: 5
    Dernier message: 18/06/2004, 14h59
  5. comment faire fonctionner l'exe sur une autre machine
    Par brian79 dans le forum C++Builder
    Réponses: 8
    Dernier message: 28/05/2004, 14h00

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