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 :

Remplacer Dlookup par une requete SQL


Sujet :

IHM

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Remplacer Dlookup par une requete SQL
    hello !
    Help me !

    j'aimerais remplacer un Dlookup par une requete SQL mais ça ne marche pas !

    ma variable "TypeAttend" doit prendre pour valeur entre 1 et 6
    ça marche avec Dlookup :

    TypeAttend = DLookup("evType", "TEvenement", "[evID] = " & Me![ID2] & " AND [evDate] = #" & Format(D1, "mm/dd/yy") & "#")

    mais pas avec mon code SQL :

    StrSql = "SELECT TEvenement SET TEvenement.evType = " & TypeAttend _
    & " WHERE (((TEvenement.evID)=" & Me![ID2] & ") AND" _
    & "((TEvenement.evDate)=#" & Format(D1, "mm/dd/yy") & "#));"
    DoCmd.RunSQL StrSql

    Quelqu'un pourrait il m'aider svp ?

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour,

    Une requête de mise à jour commence par un "UPDATE" au lieu d'un "SELECT".

    Bon courage,

    pgz

  3. #3
    Membre actif
    Avatar de Trini
    Homme Profil pro
    Dresseur de puce
    Inscrit en
    Juillet 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dresseur de puce

    Informations forums :
    Inscription : Juillet 2005
    Messages : 189
    Points : 264
    Points
    264
    Par défaut
    Bonjour,

    Pourquoi changer quelquechose qui fonctionne ?

    La fonction dlookup semble bien répondre à ton besoin, c'est à dire retourner une valeur et l'assigner à une variable ( TypeAttend).
    Alors que ta requête en SQL ne retournera pas une valeur mais un jeu d'enregistrement. De plus l'utilisation de Docmd.rusql StrSql ne fonctionnera pas , ta requête est de type 'sélection' (voir l'aide sur les requêtes sélection, action,...).

    Alors vraiment, pourquoi changer ?
    Salut,

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Dlookup ralenti considerablement ma base de donnees utilisée en réseau
    c'est pourquoi je cherche à le remplacer

    J'ai beaucoup fouillé sur le net et trouver des piste dans ce sens

    Alors simplement y a t'il un possiblitié de modifier le code SQL pour qu'il fasse référence à un seul champ ?

    merci pour vos réponses

  5. #5
    Membre actif
    Avatar de Trini
    Homme Profil pro
    Dresseur de puce
    Inscrit en
    Juillet 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dresseur de puce

    Informations forums :
    Inscription : Juillet 2005
    Messages : 189
    Points : 264
    Points
    264
    Par défaut
    Ok bonne réponse, c'est vrai que dlookup() est la méthode la plus lente, juste pratique pour des petites tables...

    La méthode la plus rapide est d'utiliser un Recordset avec une recherche par index avec la méthode SEEK.
    Fouille dans l'aide d'Access sur la méthode SEEK, tu trouveras surement des exemples...
    Sinon par SQL tu ne peux pas retourner la valeur d'un champ mais un jeu d'enregistrement.

    Salut,

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci Trini

    Je vais chercher avec la fonction SEEK et je vous tiens au courant de mes recherches !

    Salut

  7. #7
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 112
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par Trini
    ...
    Sinon par SQL tu ne peux pas retourner la valeur d'un champ mais un jeu d'enregistrement.

    Salut,
    on peu retourner une valeur si on demande un seul champs avec select, et puis on peut avoir un seul resultat si on a une condition qui reponds a un resultat unique

    ex: select nom from table where id=1
    (si id est unique biensur)

    ...c'est vrai que dlookup() est la méthode la plus lente, juste pratique pour des petites tables...
    j'utilise le dlookup avec vba/access sur une table qui fait plus d'1 million de records... et ca na pas encore planté... est ce parceque ma table est dans une DB sql server ?

  8. #8
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 112
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par nbouseem
    StrSql = "SELECT TEvenement SET TEvenement.evType = " & TypeAttend _ & " WHERE (((TEvenement.evID)=" & Me![ID2] & ") AND" _
    & "((TEvenement.evDate)=#" & Format(D1, "mm/dd/yy") & "#));"
    DoCmd.RunSQL StrSql
    un set dans un select ?!

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 4
    Points : 1
    Points
    1
    Par défaut avec SEEK
    Voici le debut de code avec un recordset suivi d'un SEEK

    ou mettre les conditions ?
    J'ai une table avec 3 champs (ID, Date, Type)
    je veux une seule valeure : le Type pour une valeur de Date et une valeur d'ID

    Comment faire ??


    Dim monRecordSet As Recordset
    Dim strName As String
    Dim strQuery As String
    Dim AttType
    Dim D1 As Variant

    D1 = DateSerial(Year(Me![scrCDate]), Month(Me![scrCDate]), 1)

    strQuery = "SELECT DISTINCTROW TEvenement.EvID, TEvenement.EvDate FROM TEvenement "

    Set monRecordSet = CurrentDb.OpenRecordset(strQuery, dbOpenSnapshot)

    Do While True
    strName = "[evID] = " & Me![ID2] & " AND [evDate] = #" & Format(D1, "mm/dd/yy") & "#"
    monRecordSet.FindFirst "TEvenement.EvType='" & strName & "'"
    Exit Do

    msg = MsgBox(AttType, vbOKCancel, "Apercu")

    Loop

  10. #10
    Membre actif
    Avatar de Trini
    Homme Profil pro
    Dresseur de puce
    Inscrit en
    Juillet 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dresseur de puce

    Informations forums :
    Inscription : Juillet 2005
    Messages : 189
    Points : 264
    Points
    264
    Par défaut
    ...ou aussi cela

    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
     
    Dim monRecordSet As Recordset
    Dim strQuery As String
    Dim D1 As Variant
     
    D1 = DateSerial(Year(Me![scrCDate]), Month(Me![scrCDate]), 1)
     
    strQuery = "SELECT DISTINCTROW EvType FROM TEvenement Where [evID] = " & Me![ID2] & " AND [evDate] = #" & Format(D1, "mm/dd/yy") & "#"
     
    Set monRecordSet = CurrentDb.OpenRecordset(strQuery, dbOpenSnapshot)
     
    If not monRecordset.eof then
       TypeAttend = monRecordset!evType
    Endif
     
    monRecordset.close
    Salut,

Discussions similaires

  1. [XL-2010] Formules Excel générées par une requete SQL
    Par BoromSikim dans le forum Excel
    Réponses: 3
    Dernier message: 05/11/2013, 12h16
  2. je veux remplir Jtree par une requete SQL
    Par chr3mn dans le forum Persistance des données
    Réponses: 3
    Dernier message: 26/02/2013, 16h22
  3. Réponses: 2
    Dernier message: 25/05/2009, 16h53
  4. Réponses: 3
    Dernier message: 20/11/2006, 13h17
  5. Regroupement par tranche dans une requete SQL (MS SQL)
    Par AODRENN dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 21/03/2006, 14h21

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