TableDef - VB/VBA/VBS - Programmation
Marsh Posté le 30-06-2005 à 16:40:15
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)
Marsh Posté le 30-06-2005 à 20:53:38
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
Marsh Posté le 01-07-2005 à 08:34:53
merci je vais tester çà de suite. Sinon oui c'est Field que je voualis mettre et pas fields.
Marsh Posté le 01-07-2005 à 08:52:37
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
Marsh Posté le 01-07-2005 à 10:14:57
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
Marsh Posté le 01-07-2005 à 11:05:50
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
Marsh Posté le 07-07-2005 à 11:28:34
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
Marsh Posté le 07-07-2005 à 11:31:26
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
Marsh Posté le 30-06-2005 à 16:35:11
Salut, je veux pas faire un truc dur mais access à décider de me faire ch....
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