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 :

Trop de valeurs pour la Liste modifiable


Sujet :

IHM

  1. #1
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 24
    Par défaut Trop de valeurs pour la Liste modifiable
    Bonjour !

    je cherche à afficher un résultat de requête qui tappe dans une Base Oracle dans une liste modifiable.
    Cependant, vu le grand nombre de résultats, Access me renvoie le message d'erreur suivant:

    Erreur d'exécution '2176':
    Le paramètre de cette propriété est trop long.
    Voici le code source:

    - NumBC_parution: fonction qui requête dans Oracle et renvoie un tableau de string contenant les valeurs à afficher (marche bien: vu par msgbox).
    - numBCs: tableau de string servant à stocker le retour de la fonction Oracle.
    - listevaleurs: chaîne de caractères qui sera alimentée au fur et à mesure de la boucle sur le tableau numBCs et utilisée au final pour alimenter la liste.
    -Ld_NCde: liste en question devant afficher les valeurs. Cette liste est bien paramétrée à Origine source=liste valeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        numBCs = NumBC_parution(Me.LD_Support, Me.NParution)
        i = 1
        listevaleurs = ""
        While numBCs(i) <> ""
            listevaleurs = listevaleurs & (numBCs(i)) & ";"
            i = i + 1
        Wend
     
        MsgBox listevaleurs
        Me.Ld_NCde.RowSource = listevaleurs
     
        Me.Repaint
    J'ai pensé à l'éventualité de faire renvoyer les données de la requête Oracle dans une table intermédiaire. Mais alors se pose le problème des accès multi-utilisateurs qui seraient en conflit sur la table en question.

    J'ai aussi pensé à utiliser la liste avec le paramétrée Origine source=Table/requête. Mais puisque mes tables sont dans une autre base Oracle (et que celà me fait un peu peur de les rattacher en liaison vu l'énorme quantités d'enregistrements de ces tables): je ne peux pas écrire directement une requête dans le paramètre Rowsource.

    Auriez-vous la gentillesse de me soumettre une idée pour permettre l'ajout de tous mes enregistrements retournés par ma requête Oracle ?

    (j'ai parcouru le forum par recherche et le tutoriel mais je n'ai rien trouvé qui traite précisément de cette problématique de source externe avec bcp d'enregistrements retournés )

    Merci beaucoup pour votre aide

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Par défaut
    Comment ton application est-elle déployée / multiutilisateur ?
    Y a t il une base en réseau que tous le monde utilise? Ou une base IHM sur chaque poste + une base en réseau avec seulement les données?

    Si c'est la dernière possibilité tu peux modifier ta fonction qui requete oracle pour qu'elle renseigne une table (par ex TMP) dans ta base IHM => il n'y a aucun risque de pb multi-utilisateur si ta table est dans la base IHM.

    Si ce n'est pas le cas et que plusieurs personnes peuvent utiliser le même fichier en même temps et aller dans le même formulaire => je te conseille vivement de modifier ton appli pour scinder en 2 fichiers (un avec les données, l'autre evec les formulaire et le code)

  3. #3
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 24
    Par défaut
    merci pour l'idée mais malheureusement la base est bien multiutilisateur sur un seul fichier en réseau.

    J'ai déjà fait le test de la scinder en deux:
    les temps de réponses sur des requêtes complexes intégrant des fonctions prenaient environ le triple du temps !
    Les utilisateurs ne l'ont pas accepté.

    Résultat je suis forcé de rester en "mono fichier" de base sur le réseau.

    Voici quelques informations techniques que j'ai effectivement oublié:
    version d'Access : 2000
    mode client/serveur utilisant un seul fichier ".mdb" en réseau.
    j'effectue mes tests sur un Access 2000 full version sur mon poste.

    Pour l'instant je retient donc le fait que pour remplir une petite liste box avec beaucoup de données externes la table temporaire reste la meilleure solution ? Il va falloir que je ruse encore avec des noms de tables générés par utilisateur ... en récupérant l'utilisateur Windows enregistré sur le réseau.

    merci si d'autres idées vous viennent je suis preneur

  4. #4
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    slt,

    un truc un peu caché existe, tu peux mettre une fonction dans le rowsourcetype de la zone de liste....
    http://msdn.microsoft.com/archive/de...softAccess.asp
    http://msdn.microsoft.com/library/de...ce04062000.asp

    ça devrait pouvoir t'aider ça?

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Par défaut
    C'est vrai que des fois les utilisateurs ne sont pas trés consilliant avec les besoins de programmations.

    Tu peux aussi créer une table temporaire dont le nom conteint la date et l'heure de création.
    Autre solution : tu n'autorises qu'une seule personne à la fois dans ce formulaire (genre une table verrou dans laquelle tu suis les formulaire ouvert et que tu consulte avant d'ouvrir un forms)

    Bon courage !

  6. #6
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 24
    Par défaut
    oula mais oui gg !!!
    super bien vu Arkham46

    Merci bcp pour votre réactivité et performance

    Je tente de paramétrer ma listebox ainsi et mettrai le tag [Résolu] si j'y parviens bien.

    A bientôt

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/08/2007, 14h21
  2. Réponses: 26
    Dernier message: 06/01/2007, 13h11
  3. Réponses: 2
    Dernier message: 30/08/2006, 15h08
  4. Afficher première valeur d'une liste modifiable
    Par alexg81 dans le forum Access
    Réponses: 3
    Dernier message: 15/05/2006, 22h02
  5. Ajouter un valeur dans une liste modifiable
    Par ancylia dans le forum Access
    Réponses: 1
    Dernier message: 22/09/2005, 12h50

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