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 :

Remplir ZT avec une source de form en SQL


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 247
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 247
    Par défaut Remplir ZT avec une source de form en SQL
    Salut,

    J'ai un formulaire indépendant qui n'a pas de source d'enregistrement, des ZT indépendantes.

    Sur l'évent Form Open, j'exécute un SQL puis donne se SQL comme source au formulaire.

    Le problème est que les ZT sont vides : comment faire pour que les ZT affichent la valeur des enregistrements.

    Si je dois faire me.NomZT=Rst("NomChamp"), ça va être difficile, j'ai +- 50 ZT.

    Merci
    A+

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 247
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 247
    Par défaut
    Salut,

    En fait, j'ai déjà créé le form et placer les ZT.

    J'ai donné comme source de donnée au form une SQL par code VBA, et à chaques ZT le champ correspondant, ça fonctionne coorectement.

    Si je fais un AddNew, je ne me place pas sur un record vide, comment faire?
    J'aimerais également savoir comment faire le UpDate de cet enregistrement,
    Dois-je obligatoirement faire le tour de toutes mes ZT et transférer le contenu dans le champ de mon Rst créé en ADODB.


    Merci

  3. #3
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonsoir,

    Ta requête n'est peut-être pas modifiable.
    Pas d'ajout, pas de modification, pas de suppression.

    Est-ce que c'est le recordset ADODB (Rst) la source de ton formulaire ?
    J'ai pas compris si tu alimentais la propriété RecordSource du formulaire, ou sa propriété Recordset.

    A+

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 247
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 247
    Par défaut
    Salut,

    Je résume, j'ai un formulaire qui a +-50 ZT. Le formulaire s'ouvre suite à une sélection dans un autre formulaire.

    J'aimerais gérer les actions d'enregistrement, modif, ajout, delete,...

    Donc il faudrait un recordset du genre ADODB.

    Si je fais mon recordset ADODB basé sur une table ou une requête créé sur openForm, ça fonctionne, j'ai bien le nbr d'enregistrement correspondant.

    Comment faire pour que les enregistrement s'affiche dans le form ,si je mets la source de chaque ZT avec le nom du champ, je n'ai quand même rien qui s'affiche, normal puisque pas de source pour le formulaire.

    Donc comment donner une source au formulaire tout en ayant la main mise sur les actions de modif, ajout, delte,...

    Merci A+

  5. #5
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour,

    Si je comprends bien tu fais un truc dans ce genre
    Code vb : 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
    27
    28
    29
    30
    Option Explicit
    Dim rs As ADODB.Recordset, cn As ADODB.Connection
     
    Private Sub Form_Close()
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
    End Sub
     
    Private Sub Form_Open(Cancel As Integer)
    Dim i As Integer
     
    Set cn = New ADODB.Connection
    cn.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:\Temp\COMPTOIR2.mdb"
    cn.Open
     
    Set rs = New ADODB.Recordset
    rs.CursorLocation = adUseClient
    rs.Open "SELECT * FROM Clients", cn, adOpenStatic, adLockOptimistic, adCmdText
     
    Set Me.Recordset = rs
     
    For i = 1 To 9
        ' libellé = Nom du champ
        Me.Controls("lbl" & i).Caption = rs.Fields(i - 1).Name
        ' Source Contrôle Zone de texte
        Me.Controls("txt" & i).ControlSource = rs.Fields(i - 1).Name
    Next
    End Sub
    Ça affiche bien les données dans le formulaire.
    Par contre les données ne sont pas modifiables.
    C'est confirmé dans l'aide d'Access
    Code xx : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Type d'objet Recordset  Basé sur des données SQL 	Basé sur des données Jet
    ---------------------	------------------------	------------------------
    ADO 			Lecture/écriture (1) 		Lecture seule 
    DAO 			N/A 				Lecture/écriture 
     
    (1) Remarque   La propriété ADO Recordset.CursorLocation doit avoir la
    valeur adUseClient. La propriété TableUnique (UniqueTable) est disponible en
    mode client/serveur dans la feuille des propriétés, mais pas pour les bases de
    données Access (.mdb). Cette propriété doit être définie dans du code 
    Visual Basic.
    Tu as une raison particulière pour ne pas utiliser Me.RecordSource ?

    A+

Discussions similaires

  1. remplir tableau avec une seule instruction !
    Par tlemcenvisit dans le forum C++
    Réponses: 3
    Dernier message: 21/06/2014, 18h22
  2. Affichage de la fenetre avec une source de ce site
    Par Skymaster dans le forum SDL
    Réponses: 8
    Dernier message: 21/06/2007, 13h17
  3. Réponses: 1
    Dernier message: 26/03/2007, 19h34
  4. [SQLite] installation php avec une source sqlite modifiée
    Par nannous dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/11/2006, 12h18
  5. Alimenter un tableau avec une source XML
    Par krapno dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 18/10/2006, 12h23

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