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 :

Problème avec FindRecord


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut Problème avec FindRecord
    Bonjour,

    je souhaite ouvrir un formulaire en utilisant Me.Openargs dans la procédure Form_Open mais je tombre sur erreur que je ne comprends pas :

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Form_Open(Cancel As Integer)
    If Me.OpenArgs Then
      DoCmd.GoToControl "ScriptID"
      DoCmd.FindRecord Me.OpenArgs
      DoCmd.GoToControl "Script_Name"
    End If
    
    End Sub
    L'erreur que je reçois est :
    Runtime error 2162
    A Macro set to one of the current field's properties failed because of an error in a FindRecord action argument
    Je ne comprends rien :
    Le controle ScriptID existe bien.
    La valeur que je vois par debug de Me.Openargs est : Me.Openargs = "27"
    Le record avec ScriptID = 27 existe bien est est bien repris dans la table.
    La Table est le record source, donc pas de sélection.

    La seule piste que je vois :
    1) La zone ScriptID (Autonumber) a été ajoutée après la créationde la table.


    Pour etre complet, voici le code qui appelle mon form :
    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
    Private Sub Attendees_List_Script_DblClick(Cancel As Integer)
    On Error GoTo Err_Attendees_List_Script_DblClick
    
        Dim StDocname As String
        Dim stLinkCriteria As String
        Dim ScriptID As Long
        
        
        ScriptID = Retrieve_Script_ID(Me![SQL_Attendees_export])
        
        If CurrentProject.AllForms("Excel_Exports").IsLoaded Then
            DoCmd.Close acForm, "Excel_Exports", acSaveYes
        End If
    
        If ScriptID > 0 Then
            DoCmd.OpenForm "Excel_Exports", acNormal, , , , , ScriptID
         Else
            DoCmd.OpenForm "Excel_Exports"
        End If
        Me.Requery
    
    
    Exit_Attendees_List_Script_DblClick:
        Exit Sub
    
    Err_Attendees_List_Script_DblClick:
        MsgBox err.Description
        Resume Exit_Attendees_List_Script_DblClick
    End Sub
    merci d'avance.

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 045
    Par défaut
    Je conseille de déposer le contenu de me.openargs dans une variable avant de l'utiliser ça permet de tester son contenu et de le typer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub Form_Open(Cancel As Integer)
    dim numScript as long
     
    If Me.OpenArgs Then
        numScript =me.openargs
        debug.print numScript 
      DoCmd.GoToControl "ScriptID"
      DoCmd.FindRecord numScript 
      DoCmd.GoToControl "Script_Name"
    End If
     
    End Sub
    A essayer ...

  3. #3
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    micniv,

    merci pour ta réponse si rapide.

    je viens d'effectuer ta modif.

    J'obtiens comme escompté : Numscript = 27

    Et cela plante avec le meme message sur l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      DoCmd.FindRecord numscript

  4. #4
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 045
    Par défaut
    en fait c'est ta syntaxe "ScriptID"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.GoToControl me.ScriptID

  5. #5
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Salut,

    je ne crois pas car ceci c'est pire :

    cela donne :
    RunTime error '2109': There is no field named '1' in the current record.
    J'utilise la syntaxe
    DoCmd.GoToControl "Control_name"
    dans un autre formulaire sans aucun problème. Je tiens cette technique de ce forum.


    le problème ne semble pas liée au record avec ScriptID = 27, car je viens de tester et cela donne la même erreur.

    Ce n'est pas parce que j'utilise un table comme source-record par hasard ?

  6. #6
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 045
    Par défaut
    Autant pour moi et désolé pour cette réponse trop rapide !
    Je utilise également ta syntaxe (mais ca marche toujours).

    Ton controle script_id est bien lié au champ numérique en question ?


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

Discussions similaires

  1. [AC-2003] Problème avec FindRecord
    Par Willaya dans le forum VBA Access
    Réponses: 5
    Dernier message: 09/05/2009, 16h41
  2. problème avec docmd.findrecord
    Par marcuswillbe dans le forum VBA Access
    Réponses: 7
    Dernier message: 16/02/2009, 01h46
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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