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

Requêtes et SQL. Discussion :

Fonction VBA et requete SQL [AC-2003]


Sujet :

Requêtes et SQL.

  1. #21
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Points : 34
    Points
    34
    Par défaut
    Donc je suis allé dans le volet requêtes,
    Créer nouvelle.

    Je passe en mode SQL et je saisis la requête ci-dessus.
    Exécuter.

    Toujours "Fonction non définie"...

    Est-ce que je devrais tester de mettre le code de ma fonction à la suite du code d'une fonction qui avait été codée avant que je ne prenne le projet en main? et donc qui a priori fonctionne?

  2. #22
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Points : 34
    Points
    34
    Par défaut
    Je viens de tester, ça ne marche pas non plus...

  3. #23
    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 642
    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 642
    Points : 34 356
    Points
    34 356
    Par défaut
    on va etre fixe,

    creer une pseudo fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function Fake() As Double
    Fake = 1
    End Function
    et fais appel a cette fonction dans une requete, on va voir deja si de base ca passe ou pas.

    A envisager, creer une nouvelle base, et importer tous les elements de la base en cours.

  4. #24
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Points : 34
    Points
    34
    Par défaut
    Re,

    J'ai créé la fonction "Fake" et je l'appelle dans une requête SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT Ti_com_MA.IdentifiantMA, Fake() AS Communes FROM Ti_com_MA
    Et ça marche!
    J'ai mon tableau comme j'aimerais, sauf que je préfèrerais la fonction "ListeCommunes"...

    Donc d'où peut venir le problème?
    De la fonction en elle-même?

  5. #25
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Points : 34
    Points
    34
    Par défaut
    Un pas en avant:

    J'ai renommé ma fonction en en LstCom, et maintenant elle est reconnue et tourne... Incompréhensible...

    Seulement, j'obtiens un message d'erreur lorsque j'exécute une requête SQL la faisant intervenir:

    Voici le code de ma fonction:
    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
    Public Function LstCom(MA As Integer) As String
     
        Dim res As DAO.Recordset
        Dim SQL As String
     
        'Selectionne les participant du projet
        SQL = "SELECT Co_nom FROM TL_Commune INNER JOIN Ti_Com_MA ON TL_Commune.[Co_Id] = Ti_Com_MA.[INSEE] WHERE IdentifiantMA=" & MA
        Set res = CurrentDb.OpenRecordset(SQL)
     
        'Concatene les différents enregistrement
        While Not res.EOF
        LstCom = LstCom & res.Fields(0).Value & ", "
        res.MoveNext
        Wend
     
        'Enleve le dernier virgule - espace
        LstCom = Left(LstCom, Len(LstCom) - 2)
     
        'libere la mémoire
        Set res = Nothing
     
    End Function
    Puis le code qui l'appelle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub bidon()
        Dim res2 As DAO.Recordset
        Dim SQL3 As String
     
    SQL3 = "SELECT DISTINCT Ti_com_MA.IdentifiantMA, LstCom(Ti_com_MA.IdentifiantMA) AS Communes FROM Ti_com_MA"
     
    Set res2 = CurrentDb.OpenRecordset(SQL3)
     
    End Sub
    En mode pas à pas, je vois que la requete tourne en utilisant le calcul de LstCom (quand on est à dernière ligne du code) et ce pour tous les MA.
    Cependant, une fois tout cela terminé, j'obtiens une erreur:
    "Erreur d'exécution 3463: Type de données incompatibles dans l'expression du critère" en VB
    "Erreur Jet inconnue" en SQL

    Une idée?

  6. #26
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Points : 34
    Points
    34
    Par défaut
    C'est bon, ça roule!

    J'ai également viré le SELECT DISTINCT de la requête, un simple SELECT suffit.
    Et j'ai enlevé les noms de tables avant mes noms de champs, et ça marche...

    Inexplicable informatique...

    Merci en tout cas pour les précieux conseils!

  7. #27
    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 642
    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 642
    Points : 34 356
    Points
    34 356
    Par défaut
    Un element que je n'avais effectivement pas pense a incorporer dans l'analyse.

    Si tu estimes que ton prboleme est resolu, pense a cliquer sur


  8. #28
    Nouveau Candidat au Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Juin 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour, premier post sur ce forum.
    Désolé si ça provoque une gène de faire remonter ce topic mais je voulais simplement remercier les membres de ce forum pour leur réponses dont je me sers souvent.

    Ici en l’occurrence j'avais le même problème : fonction qui marchait sous excel, le passage dans un modèle access rendait la fonction inutilisable.

    Le problème venait surement du fait que le nom du module et le nom de ma fonction étaient les mêmes. J'ai renommé le nom du module comme ça a été dit et ça fonctionne désormais (en utilisant le nom de la fonction dans ma requête SQL).

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [VBA ACCESS] Requete SQL
    Par ben7777 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 02/08/2007, 17h37
  2. VBA: une requete SQL
    Par Terminator dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 12/02/2007, 14h27
  3. fonction date et requete SQL
    Par jeanjean0403 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 05/07/2006, 10h01
  4. [VBA-E] Requete SQL sous Excel
    Par climz dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/05/2006, 14h05
  5. [VBA-E] Requete SQL incluant des donnees provenant de cells
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/03/2006, 18h16

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