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

Access Discussion :

Requête de sélection et DoCmd.RunSQL


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut Requête de sélection et DoCmd.RunSQL
    Bonjour,
    j'ai quelques petits soucis de code...
    En fait, lorsque j'exécute une requete via Design, la requête s'exécute normalement... Le problème est que je dois la traiter dans un événement, j'ai donc recopié la commande sql mais celle-ci ne veut pas être exécutée...
    Cette requête doit en fait demander à l'utilisateur le no d'OR et la requete doit rechercher dans la table T_Registre si un record possède le champ C_OR (qui est la clé primaire) = au inputbox (NoOR)
    voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim strSql as String 
    strSql = "SELECT T_Registre.C_OR, [NoOR] AS Expr1
    FROM T_Registre
    WHERE (T_Registre.C_OR=NoOr)
    ORDER BY T_Registre.C_OR"
    en faisant ensuite:
    j'ai une runtime erreur 2342 'A RunSql action requires an argument consisting of an SQL Statement...'
    En fait, je voudrais aussi apres pouvoir faire un test si le record est trouvé de l'afficher dans la forme courante en read-only sinon que l'utilisateur puisse encoder un nouveau record...

    Merci pour vos réponses.

  2. #2
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour,

    DoCmd.RunSQL ne fonctionne qu'avec des requêtes actions (INSERT, UPDATE, DELETE), pas avec des SELECT.

    Crée plutôt une zone de texte dans laquelle l'utilsateur entre la valeur recherchée.
    Puis tu crée ta requête.

    Si OR est numérique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim strSql as String 
    strSql = "SELECT T_Registre.C_OR " & _
    "FROM T_Registre " &  _
    "WHERE (T_Registre.C_OR=" & Me.tbOR & ") " & _
    "ORDER BY T_Registre.C_OR"
    Si OR est texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim strSql as String 
    strSql = "SELECT T_Registre.C_OR " & _
    "FROM T_Registre " &  _
    "WHERE (T_Registre.C_OR='" & Me.tbOR & "') " & _
    "ORDER BY T_Registre.C_OR"
    tbOR est le nom du contrôle zone de texte.

    Pour afficher le résultat, tu insère un sous formulaire et utilise la requête ci-dessus pour alimenter le sous-formulaire.
    Si le nom du contrôle sous-formulaire est sfmResultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Me.sfmResultat.Form.RecordSource = strSQL
    Me.sfmResultat.Form.Requery
    Bon courage.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    Merci, cela fonctionne enfin presque...
    Lorsque je tape le no d'or a afficher dans le sous-formulaire, je vois bien qu'il l'affiche mais il m'affiche une erreur comme quoi la plaque ne peut contenir une valeur nulle.
    Dans mon sous formulaire, je vois bien la plaque apparaître mais plus dans mon formulaire => l'erreur... C'est comme-ci il ne terminait pas de compléter le formulaire...
    PS: je ne sais pas si ça peut aider mais le sous formulaire est dans le meme formulaire que le formulaire de base...
    Aussi si je tape un no d'OR qui n'existe pas, il m'affiche aussi l'erreur... Ce serait bien qu'il affiche un message pour dire qu'il n'a pas trouve mais comment faire pour que si il ne trouve pas de record il affiche un message?

    Merci d'avance,
    Cédric

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    J'ai trouvé
    Le controle de la zone de texte tbOR etait lié avec le champ C_OR...
    Je l'ai enlevé et c'est maintenant OK...

    Merci encore

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    Une dernière petite question:
    Quelle serait la syntaxe pour refaire la même chose que dans le code précédent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.sfmResultat.Form.RecordSource = strSQL
    Me.sfmResultat.Form.Requery
    mais à partir d'un evenement click sur un champ du sous formulaire sfmResultat?
    Cela doit être tout bête mais je n'y arrive pas...

    Merci d'avance,
    Cédric

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 171
    Par défaut
    Salut à tous.

    J'ai testé dans une base perso la commande de LedZeppII, et ça me met une erreur :
    Erreur d'exécution '2467' :

    L'expression entrée fait référence à un objet fermé ou supprimé.
    Quand je fais "débogage", l'erreur pointe sur la première des deux lignes (Me.frmResultat.Form.RecordSource = strSQL).

    Y a t-il une autre opération à executer avant pour ouvrir cet objet ?
    Je ne comprend pas mon erreur ...

    Merci.

  7. #7
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut Réponse à susiced
    Citation Envoyé par susiced
    Une dernière petite question:
    Quelle serait la syntaxe pour refaire la même chose que dans le code précédent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.sfmResultat.Form.RecordSource = strSQL
    Me.sfmResultat.Form.Requery
    mais à partir d'un evenement click sur un champ du sous formulaire sfmResultat?
    Le code étant au niveau du sous-formulaire on utilise la forme la plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Me.RecordSource = strSQL
    Me.Requery
    Ici, Me fait référence au formulaire sfmResultat puisque le code du click est dans sfmResultat.
    Alors qu'avant Me faisait référence au formulaire contenant le sous-formulaire sfmResultat.

    J'espère que c'est à peu près clair.

    Bon courage

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

Discussions similaires

  1. rassembler 2 requ[ete.
    Par shirya dans le forum Langage SQL
    Réponses: 7
    Dernier message: 28/09/2005, 13h59
  2. Requ^te avec 2 COUNT ?
    Par Freiya dans le forum Langage SQL
    Réponses: 8
    Dernier message: 09/07/2005, 13h21
  3. Réponses: 2
    Dernier message: 05/10/2004, 22h43
  4. comment rajouter un caractère " ' " dans une requê
    Par GDVL dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 30/07/2004, 16h58

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