OVH Cloud OVH Cloud

alimenter un tableau avec les données d'une table

3 réponses
Avatar
Le Méruvien
bonjour, je voudrais alimenter un tableau avec les données d'une table, j'ai
donc un tableau :
public plats(1 to 20) as string
et une table "plats" avec 2 champs: [N°] et [plat]
cette table je l'alimente par un formulaire de saisie.
Sur un autre formulaire, j'ai un bouton qui tire un chiffre aléatoire de 1 à
20, et donc apres tirage de ce chiffre, j'ai un champ "plat" qui normalement
doit afficher le plat du tableau correspondant au N°
OU, autre solution, est-il possible de n'avoir que la table plats , et dans
le 2eme form, si je sort un 5 (par exemple) de mettre une conditon, qui
dirai en gros "si N°= 5 afficher le champ N° 5 de la tbl plats ?
merci,
roger

3 réponses

Avatar
Eric
Bonjour,

Je ne gererai pas de tableau mais utiliserai les fonctions de domaine.

Sur l'évènement click du bouton qui tire le numéro aléatoire:

Private Sub Commande0_Click()
Dim cpt As Long, nb As Long
cpt = DCount("*", "plats")
Randomize Timer
nb = Int(Rnd * cpt) + 1
me.LeControlePlat= DLookup("plat", "plats", "[N°]=" & nb)
End Sub


bonjour, je voudrais alimenter un tableau avec les données d'une table, j'ai
donc un tableau :
public plats(1 to 20) as string
et une table "plats" avec 2 champs: [N°] et [plat]
cette table je l'alimente par un formulaire de saisie.
Sur un autre formulaire, j'ai un bouton qui tire un chiffre aléatoire de 1 à
20, et donc apres tirage de ce chiffre, j'ai un champ "plat" qui normalement
doit afficher le plat du tableau correspondant au N°
OU, autre solution, est-il possible de n'avoir que la table plats , et dans
le 2eme form, si je sort un 5 (par exemple) de mettre une conditon, qui
dirai en gros "si N°= 5 afficher le champ N° 5 de la tbl plats ?
merci,
roger




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
le méruvien
Salut Eric, merci, ça marche, seul truc, c'est que maintenant je dois faire
un systeme pour pas qu'un même chiffre ne resorte plusieurs fois.





"Eric" a écrit dans le message de news:

Bonjour,

Je ne gererai pas de tableau mais utiliserai les fonctions de domaine.

Sur l'évènement click du bouton qui tire le numéro aléatoire:

Private Sub Commande0_Click()
Dim cpt As Long, nb As Long
cpt = DCount("*", "plats")
Randomize Timer
nb = Int(Rnd * cpt) + 1
me.LeControlePlat= DLookup("plat", "plats", "[N°]=" & nb)
End Sub


bonjour, je voudrais alimenter un tableau avec les données d'une table,
j'ai donc un tableau :
public plats(1 to 20) as string
et une table "plats" avec 2 champs: [N°] et [plat]
cette table je l'alimente par un formulaire de saisie.
Sur un autre formulaire, j'ai un bouton qui tire un chiffre aléatoire de
1 à 20, et donc apres tirage de ce chiffre, j'ai un champ "plat" qui
normalement doit afficher le plat du tableau correspondant au N°
OU, autre solution, est-il possible de n'avoir que la table plats , et
dans le 2eme form, si je sort un 5 (par exemple) de mettre une conditon,
qui dirai en gros "si N°= 5 afficher le champ N° 5 de la tbl plats ?
merci,
roger




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Eric
Bonjour Roger,


En adaptant la procédure donnée par Arnaud (Anor)
http://minilien.com/?sfXYUXJzFW

Toutefois, si tu n'as que 20 valeurs, les plats vont revenir souvent ;-)

On pourrait faire par exemple (tout à copier dans le module du
formulaire contenant le bouton procédant au tirage):

Option Compare Database
Option Explicit
Dim DejaSorti() As Boolean

Function Tirage(UnNombre As Long)
On Error Resume Next
Dim i As Integer, Cumul As Long
Dim TirageTmp As Integer
ReDim Preserve DejaSorti(1 To UnNombre)
For i = 1 To UnNombre
Cumul = Cumul + Abs(DejaSorti(i))
Next i
If Cumul = UnNombre Then ' tous sortis
Erase DejaSorti() ' on écrase le tableau
ReDim Preserve DejaSorti(1 To UnNombre) 'on le recrée
' on pourrait prévoir autre chose
End If
Randomize Timer
Do Until DejaSorti(TirageTmp) = False
TirageTmp = -Int(-Rnd * UnNombre)
Loop
DejaSorti(TirageTmp) = True
Tirage = TirageTmp
End Function

Private Sub Commande0_Click()
me.LeControlePlat= DLookup("plat", "plats", "[N°]=" &
Tirage(DCount("*", "plats")))
End Sub





Salut Eric, merci, ça marche, seul truc, c'est que maintenant je dois faire
un systeme pour pas qu'un même chiffre ne resorte plusieurs fois.

--

A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr