Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2700 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  TableDef

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

TableDef

n°1136169
cole
Posté le 30-06-2005 à 16:35:11  profilanswer
 

Salut, je veux pas faire un truc dur mais access à décider de me faire ch.... :fou:  
Je débute en access mais je connais d'autres langage.
 
Je voudrais juste récupérer les valeurs contenu dans une table mais j'y arrive pas.
Normalement avec un truc de genre:
 
Dim T As DAO.TableDef, F As Fields
Dim rs As DAO.Recordset
 
    Set T = CurrentDb.TableDefs("valeur_point" )
    rs = T.OpenRecordset()
     
    F = rs.Fields("valeur" )
     
    MsgBox (rs(0))
 
et là je me prend "Utilisation incorrect de la propriété" à cause du openrecordset je croit. :??:  
Merci beaucoup si quelqu'un pourrait m'aider

mood
Publicité
Posté le 30-06-2005 à 16:35:11  profilanswer
 

n°1136180
friday_13
sans avatar fixe
Posté le 30-06-2005 à 16:40:15  profilanswer
 

ce serait pas F as Field ?
perso j'utilise ADO :
 
Dim rst as ADODB.Recordset
 
set rst = new ADODB.Recordset
 
rst.open "matable",CurrentProject.Connection
rst.movefirst
msgbox rst!nomduchamp
ou msgbox rst("nomduchamp" )
ou msgbox rst(0)

n°1136429
pelw
Posté le 30-06-2005 à 20:53:38  profilanswer
 

Bonjour,
 
Essaye ceci :
 
Dim rs As DAO.Recordset
     
Set rs = CurrentDb.OpenRecordset("valeur_point", dbOpenTable)
     
Do While Not rs.EOF
   MsgBox rs!valeur
   rs.MoveNext
Loop
 
rs.Close
 
 
pelw


Message édité par pelw le 30-06-2005 à 21:01:16
n°1136744
cole
Posté le 01-07-2005 à 08:34:53  profilanswer
 

merci je vais tester çà de suite. Sinon oui c'est Field que je voualis mettre et pas fields.

n°1136766
cole
Posté le 01-07-2005 à 08:52:37  profilanswer
 

je viens d'essayer ton code pelw çà marche merci. Vous pouvez m'expliquer aussi à koi sert "set" en vba ? par rapport à un autre langage si vous en connaisser d'autre.  
Une dernière question aussi, comment on peut retrouver l'indice en cours lorsque l'on parcours le recordset ?
Merci


Message édité par cole le 01-07-2005 à 08:59:49
n°1136846
pelw
Posté le 01-07-2005 à 10:14:57  profilanswer
 

Bonjour,
 
L'instruction Set sert à attribuer une référence d'objet à une variable. C'est ce qu'on appelle "instancier un objet".
 
En ce qui concerne l'indice en cours du recordset, on peut utiliser la propriété AbsolutePosition. Dans ton cas, il faut modifier légèrement l'instruction de constitution du recordset :
 
Dim rs As DAO.Recordset
 
Set rs = CurrentDb.OpenRecordset("valeur_point", dbOpenDynaset)
       
Do While Not rs.EOF
   MsgBox "Indice en cours: " & rs.AbsolutePosition + 1
   rs.MoveNext
Loop
 
rs.Close
 
 
pelw

n°1136939
cole
Posté le 01-07-2005 à 11:05:50  profilanswer
 

Merci beaucoup. Je peut te demander un autre truc ;-)
Sur un formulaire j'ai les enregistrement d'une table chantier qui s'affiche. Par chantier y a une date de début, fin, les travaux à faire ... en fait les travaux sont en points, y a une table avec les trvaux et leur nombre de point. Le truc c'est que la valeur du point change. J'ai donc fait une table avec les valeurs de point avec les dates. Sur mon formulaire j'ai donc aussi une case point qui affiche le nombre de point du chantier, une case pour la valeur du point et une case pour le multiplcation des deux(donc la somme à payer en euros). J'arrive pas à mettre la valeur du point pour chaque enregistrement. j'ai mis un bouton pour chaque ligne qui utilise la fonction pour récupérer la valeur du point qui est celle-ci
Private Sub Commande29_Click()
    Dim rs As DAO.Recordset
    Dim ddeb, dfin As Date
    Dim val As Double
     
    Set rs = CurrentDb.OpenRecordset("valeur_point", dbOpenTable)
       
    Do While Not rs.EOF
        If (rs!date_debut < Forms!date_fin) And (rs!date_fin > date_fin) Then
            'MsgBox rs!Valeur
            val = rs!Valeur
        End If
        rs.MoveNext
    Loop
 
    rs.Close
    valeur_point.Value = val
End Sub
là, quand je clique sur un bouton, la valeur récupérer est la bonne mais elle s'affiche sur les cases de valeur de point de chaque enregistrement, de plus il compile pas sur "date_fin".
 
Merci beaucoup

n°1142995
cole
Posté le 07-07-2005 à 11:28:34  profilanswer
 

j'arrive pas à comprendre comment çà fonctionne les recordset. le code suivant fonctionne pas alors que la requête retourne 11 ligne de lcient :-(
Set Qry = CurrentDb.CreateQueryDef("Requete_Temporaire", "SELECT DISTINCTROW general.client FROM [general] GROUP BY general.client" )
    Set Rsclient = Qry.OpenRecordset
     
    Rsclient.MoveFirst
     
    For i = 0 To Rsclient.RecordCount  'ligne
        For j = 0 To 13 'colonne
        'remplissage de la prmière colonne
            If j = 0 Then
                If i = 0 Then
                    Cells(i + 5, j + 5).Value = "Client"
                End If
                Cells(i + 5, j + 5).Value = Rsclient(0)
            End If
             
            Rsclient.MoveNext
       Next j
    Next i

n°1143001
cole
Posté le 07-07-2005 à 11:31:26  profilanswer
 

ah oui, je copie des donnée de recordset dans une feuille excel. d'ou les "Cells" ... l'erreur est "aucun enregistrement en cours" sur la ligne rsclient.movenext


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  TableDef

 

Sujets relatifs
Plus de sujets relatifs à : TableDef


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)