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 :

Alimenter une variable tableaux avec les valeurs d'un champs [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre émérite Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 568
    Points : 2 528
    Points
    2 528
    Par défaut Alimenter une variable tableaux avec les valeurs d'un champs
    Bonsoir à tous,

    je cherche à alimenter une variable tableau avec la valeur d'un champs contenu dans une table.

    Pour l'instant, j'ai ça :
    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
    23
    Dim MaBD As DAO.Database
    Dim MonChamp As DAO.Field
    Dim NomTable As DAO.TableDef
    Dim Lot() As Variant
     
    Set MaBD = CurrentDb
    Set NomTable = MaBD.TableDefs("Tbl_Lot")
    Set MonChamp = MaBD.TableDefs("Tbl_Lot").Fields("Lot")
     
    Dim NombreDeLot As Integer  'Nombre de Lot contenu dans la table Tbl_Lot
        NombreDeLot = CurrentDb.TableDefs("Tbl_Lot").RecordCount
    ReDim Lot(NombreDeLot)      'Redimensionnement du Tableau des Lots
     
    i = 0
     
    ' Remplissage du tableau Lot avec les Lots concernés
     
        For Each MonChamp In NomTable.Fields
            Lot(i) = MonChamp.Value
            i = i + 1
        Next
     
    etc...
    Et là, j'obtiens une erreur 3219 sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Lot(i) = MonChamp.Value
    Où est l'astuce (sans doute toute bête ) à côté de laquelle je suis passé ?

    Merci d'avance.

    Curt
    Pas de demande par MP, sinon j'correctionne plus, j'dynamite, j'disperse, j'ventile !!!
    ---------------------------------------------------------------------
    Vous avez un talent insoupçonné... Faites-en profitez les autres. Un p'tit CLIC pour une grande cause.
    Et si vous faisiez un bon geste en 2024 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !

  2. #2
    Membre averti Avatar de robyseb
    Homme Profil pro
    Programmeur-Analyste
    Inscrit en
    Juillet 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-Analyste
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2011
    Messages : 305
    Points : 423
    Points
    423
    Par défaut
    j'ai lu d'autre forum et il semble y avoir un problème sur le update de ta table .... l'erreur 3219 est levé puisque
    "L'opération demandée par l'application n'est pas autorisée dans ce contexte.
    "
    Parfois il faut faire le tour d'une roche 10 fois avant de s'apercevoir quelle est ronde.
    • Si vous trouvé mon post intéressant, n'oubliez pas de voter coté inférieur droit du message. Merci
    • Si votre Post est indiquez le....
    • Celuil là je devait le mettre ici ....hihi -->

  3. #3
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 633
    Points : 56 952
    Points
    56 952
    Billets dans le blog
    40
    Par défaut
    Salut Curt, Robyseb

    l'intention ne me semble pas claire...

    Citation Envoyé par curt
    je cherche à alimenter une variable tableau avec la valeur d'un champs contenu dans une table.
    Tu veux récupérer la valeur du champ "Lot" pour chaque enregistrement (parcours en ligne)?

    Mais ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each MonChamp In NomTable.Fields
    tu parcoures tous les champs de la table (parcours en colonnes), mais sans parcourir les enregistrements (d'où l'erreur d'ailleurs sur .value)

    En attendant de lever le voile, as-tu regardé du côté de getrows ?

  4. #4
    Membre émérite Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 568
    Points : 2 528
    Points
    2 528
    Par défaut
    Bonsoir F-Leb,

    je ne connaissais pas getrows

    J'essaie de suite.... résultat demain.

    Merci
    Curt
    Pas de demande par MP, sinon j'correctionne plus, j'dynamite, j'disperse, j'ventile !!!
    ---------------------------------------------------------------------
    Vous avez un talent insoupçonné... Faites-en profitez les autres. Un p'tit CLIC pour une grande cause.
    Et si vous faisiez un bon geste en 2024 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 357
    Points : 355
    Points
    355
    Par défaut
    Bonjour,

    Je vais peut-etre dire une betise mais ne faudrait-il pas utiliser un recordset ?

    Avec quelque chose du style :

    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
    23
    24
    25
    26
    Dim MaBD As DAO.Database
    Dim rst As DAO.Recordset
    Dim Lot() As Variant
    Dim i As Integer
    Dim sChamp As String
    Dim sTable As String
    Dim NombreDeLot As Integer  'Nombre de Lot contenu dans la table Tbl_Lot
     
    'initialisation
    sTable="Tbl_Lot"
    sChamp="Lot"
     
    'recuperation du nombre de lots
    ReDim Lot(DCount(sChamp, sTable)) 
     
    i = 0
     
    Set MaBD = CurrentDb
    Set rst = MaBD.OpenRecordset("select [" & sChamp & "] from [" & sTable & "]")
     
    ' Remplissage du tableau Lot avec les Lots concernés
    Do While Not rst.EOF
        Lot(i) = rst(0)
        i = i + 1
        rst.MoveNext
    Loop

  6. #6
    Membre émérite Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 568
    Points : 2 528
    Points
    2 528
    Par défaut
    Bonsoir à tous,

    je réponds (et solde) ma question un peu tardivement...

    il suffisait de mettre ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ' Remplissage du tableau Lot avec les Lots concernés
     
        For i = 0 To NombreDeLot - 1
            Lot(i) = rstTbl_Lot!Lot
            rstTbl_Lot.GetRows
        Next i
    Quant au "Pourquoi faire un tableau plutôt qu'une table ?" : Tout simplement parce que je ne souhaite pas surcharger la base avec des créations de tables temporaires qu'il faut ensuite effacer... Tout reste en mémoire et le "ménage" est fait à la fermeture de l'appli. (cet avis et façon de faire n'engage que moi....)


    merci à f-leb pour GetRows et à tous ceux qui ont amené leur contribution.

    Bon week-end.
    Curt
    Pas de demande par MP, sinon j'correctionne plus, j'dynamite, j'disperse, j'ventile !!!
    ---------------------------------------------------------------------
    Vous avez un talent insoupçonné... Faites-en profitez les autres. Un p'tit CLIC pour une grande cause.
    Et si vous faisiez un bon geste en 2024 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/04/2013, 23h10
  2. [AC-2000] Liste déroulante avec les valeurs de plusieurs champs
    Par forges dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 08/09/2011, 08h28
  3. Réponses: 1
    Dernier message: 04/02/2010, 11h45
  4. Réponses: 3
    Dernier message: 29/09/2009, 12h06
  5. [AC-2007] Création d'une variable pour recuperer la valeur d'un champ
    Par poceke dans le forum VBA Access
    Réponses: 7
    Dernier message: 09/07/2009, 17h09

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