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 :

traduction d'une requete sql en vba


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 48
    Points : 25
    Points
    25
    Par défaut traduction d'une requete sql en vba
    s'il vous plait je veux la traduction de cette requet en VB

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select last dure-dep , Njr_sans_prise .....
    from delacement

    et merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 652
    Points : 34 360
    Points
    34 360
    Par défaut
    bonjour,
    il me semble que ce que tu cherches se trouve dans la http://access.developpez.com/faq/?pa...s#UtilReqExist

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 48
    Points : 25
    Points
    25
    Par défaut
    merci
    mais j'ai rien trouve !!

  4. #4
    Futur Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Salut,

    En VB, tu peux faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim sql As String            
    Dim rs As RecordSet
     
    sql = "SELECT LAST dure-dep, Nrj_sans_prise FROM delacement;"
    Set rs = CurrentDb.OpenRecordSet (sql)

    Ainsi, tu ouvres l'ensemble de tes enregistrements.
    Tu peux ensuite les utiliser, par exemple en utilisant ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    While rs.EOF <> True
             --
             -- suite d'instructions --
             --
             rs.MoveNext
    End While
    Ainsi, tu parcours chaque enregistrement, et tu effectues les opérations que tu désires.

    @+

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 48
    Points : 25
    Points
    25
    Par défaut
    qu'est ce que ca veut dire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    While rs.EOF <> True
    rs.MoveNext
    End While ?
    et ou est la faute ici ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    sql = "SELECT LAST nomage , dure_dep , Nbj_sans_prise, inden_j_nom , Nbj_avec_prise ,inden_j_nom FROM delacement;"
    Set rs = CurrentDb.OpenRecordset(sql)
    While rs.EOF <> True
    fonction frais ( dure_dep As Integer, Nbj_sans_prise As Integer
    , inden_j_nom As Integer
    , Nbj_avec_prise As Integer
    ,inden_j_nom AS Integer , frais As Integer ,classe As String , nomage As String )
    iif namage = "*" then frais <- ((dure_dep - Nbj_sans_prise .....
    end iif
    rs.MoveNext
    End While
     
    End Sub
    et merci !!

  6. #6
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    bonjour,

    La traduction de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    While rs.EOF <> True
    rs.MoveNext
    End While
    rs.EOF (End Of File) => détecte la fin d'un recordset

    Tant que rs.EOF est différent de vrai
    Passer à l'enregistrement suivant
    Fin tant que.

    Une autre manière beaucoup plus rapide et efficace pour atteindre le même but :

    Ce bout de code te place directement au dernier enregistrement.

  7. #7
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    Ou là là tu mélange tout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    sql = "SELECT LAST nomage , dure_dep , Nbj_sans_prise, inden_j_nom , Nbj_avec_prise ,inden_j_nom FROM delacement;"
    Set rs = CurrentDb.OpenRecordset(sql)
    While rs.EOF <> True
    fonction frais ( dure_dep As Integer, Nbj_sans_prise As Integer
    , inden_j_nom As Integer
    , Nbj_avec_prise As Integer
    ,inden_j_nom AS Integer , frais As Integer ,classe As String , nomage As String )
    iif namage = "*" then frais <- ((dure_dep - Nbj_sans_prise .....
    end iif
    rs.MoveNext
    End While
     
    End Sub
    Il faut savoir ce que tu veux faire parceque cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fonction frais ( dure_dep As Integer, Nbj_sans_prise As Integer
    , inden_j_nom As Integer
    , Nbj_avec_prise As Integer
    ,inden_j_nom AS Integer , frais As Integer ,classe As String , nomage As String )
    Ressemble énormément à une déclaration de fonction.
    En fait il faudrait faire plutot ceci :

    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
    function frais ( dure_dep As Integer, Nbj_sans_prise As Integer
    , inden_j_nom As Integer
    , Nbj_avec_prise As Integer
    ,inden_j_nom AS Integer , frais As Integer ,classe As String , nomage As String )
    ...
    MON CODE DE MA FONCTION
    ...
    End function
     
    'Dans une autre partie du code
    sql = "SELECT LAST nomage , dure_dep , Nbj_sans_prise, inden_j_nom , Nbj_avec_prise ,inden_j_nom FROM delacement;"
    Set rs = CurrentDb.OpenRecordset(sql)
    While rs.EOF <> True
         Frais( dure_dep, Nbj_sans_prise, inden_j_nom, Nbj_avec_prise, inden_j_nom, frais, classe, nomage)'Avec ici tout les paramètres qui vont bien
    iif namage = "*" then frais <- ((dure_dep - Nbj_sans_prise .....
    end if
    rs.MoveNext
    End While
     
    End Sub
    A mon avis il vaudrait mieux que tu nous dises ce que tu veux faire et si tu ne t'ai pas posé la question avant c'est assez dangereux en terme de bugs.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 48
    Points : 25
    Points
    25
    Par défaut
    merciiiiiiii

    j'ai une erreur au niveau de then c quoi l'erreur exactement

    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
    Private Sub Commande12_Click()
    Dim sql As String
    Dim rs As Recordset
     
    sql = "SELECT LAST nomage , dure_dep , Nbj_sans_prise, inden_j_nom , Nbj_avec_prise ,inden_j_nom FROM delacement;"
    Set rs = CurrentDb.OpenRecordset(sql)
    While rs.EOF <> True
    fonction frais
    dure_dep As Integer, Nbj_sans_prise As Integer, inden_j_nom As Integer, Nbj_avec_prise As Integer, inden_j_nom As Integer, frais As Integer, classe As String, nomage As String
     
    IIf
    namage = "*" Then return frais = ((dure_dep - Nbj_sans_prise )*inden_j_nom ) + (((dure_dep - Nbj_avec_prise)* inden_j_nom)/2)
    End If
    rs.MoveLast
    End While
     
    End Sub
    excusez moi je suis nulle en VB c la premier fois que je l'utilise
    merci pour votre aide !!!

  9. #9
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 48
    Points : 25
    Points
    25
    Par défaut
    je faire un bouton qui fais le calcule des frais de deplassement
    ce dernier recupere les derniers enregistrements de la table deplacement (nomage , dure_dep , Nbj_sans_prise, inden_j_nom , Nbj_avec_prise ,inden_j_nom FROM delacement )
    et fai le calcule suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ( IIf
    namage = "*" Then return frais = ((dure_dep - Nbj_sans_prise )*inden_j_nom ) + (((dure_dep - Nbj_avec_prise)* inden_j_nom)/2)
    else  return frais = ((dure_dep - Nbj_sans_prise )*inden_j_classe ) + (((dure_dep - Nbj_avec_prise)* inden_j_classe)/2)
    puis il enregistre les resulta dans le chanp frais de la meme table et dernier enregistrement

    et merci

  10. #10
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    Fait un retour chariot après le then et le else ca serra plus claire pour toi et les autres. C'est de la forme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Condition Then
        ... 'Code lorsque la condition est vrai
    Else
        ... 'Code lorsque la condition est fausse
    End if
    Au passage l'erreur doit venir du return. C'est bien ce que je pensais au départ tu as fait beaucoup de C/C++ avant de venir sur du VB/VBA je me trompe ?

    Il n'y a pas de return en VB.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 48
    Points : 25
    Points
    25
    Par défaut
    ca ne marche toujours pas !!!

  12. #12
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    Il y a un point que je n'ai pas bien compris.

    Comment fait-tu ton calcul pour tes frais de déplacements.

    Tu regarde le dernier enregistrement et tu fait ton calcul ou bien
    Tu parcours tous les enregistrements de la table et tu fait ton calcul ?

    Autre chose as-tu pensée à mettre les variables que tu utilise en globale comme le 'namage' (c'est l'histoire de la visibilité). Si elles sont déclarée dans une fonction elles ne sont visible (et donc utilisable) qu'à l'interieur de celle-ci. Mais à mon avis il serait peut-être plus judicieux de faire le calcul dans la fonction et de renvoyer la valeur calculée.

  13. #13
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    Pour une fonction ca se programme comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function MaFonction (monParam1 AS MonType1, monParam2 AS MonType2, etc ...)
     
    ... 'Code de ma fonction
     
       MaFonction = MaValeurARetourner 'Quand on a une valeur a retourner.
     
    End Function
    Ensuite pour l'utiliser ca se passe dans ce genre là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim maVariable
     
     maVariable = MaFonction(Param1, Param2, etc...)

Discussions similaires

  1. [AC-2010] Format Date dans une requete SQL en VBA
    Par tveniere dans le forum Access
    Réponses: 2
    Dernier message: 02/04/2021, 11h54
  2. [XL-2010] Boucler une requete sql sous vba
    Par themummy dans le forum Excel
    Réponses: 1
    Dernier message: 08/11/2013, 16h48
  3. Réponses: 4
    Dernier message: 02/03/2013, 22h18
  4. passer en parametre le nom d'un champ d'une requete sql en vba
    Par alexkickstand dans le forum VBA Access
    Réponses: 9
    Dernier message: 12/02/2009, 15h59
  5. compter avec une requete SQL dans VBA
    Par michael1971 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/01/2008, 09h20

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