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

Access Discussion :

Ouverture aléatoire d'un formulaire ou requête ?


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Ouverture aléatoire d'un formulaire ou requête ?
    Bonjour,

    Lorsque dans une requête je mets la formule suivante :

    Ent((585-1+1)*Aléat()+1)

    Dans un champ numérique allant de 1 à 585 il m'ouvre les enregistrements dans un mode aléatoire. Mais je me suis aperçu qu'il suit toujours le même ordre.

    Si je ferme la base et que je la reouvre se sera toujours la même suite.

    J'ai essayé de transforme le numérique en texte et ça n'a rien changé.

    La ou ça devient curieux c'est que lors du démarrage il ouvre sur le numérique 412 et si je le supprime il ne m'affiche plus rien lors de la première ouverture.

    Ma question est que je voudrais que ma base s'ouvre sur un enregistrement aléatoire et jamais dans le même ordre à chaque fois que je l'ouvre.

    Si quelqu'un à une idée (pas à pas car un peu novice) elle serait la bienvenue.

    Merci

  2. #2
    Membre actif
    Avatar de Trini
    Homme Profil pro
    Dresseur de puce
    Inscrit en
    Juillet 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dresseur de puce

    Informations forums :
    Inscription : Juillet 2005
    Messages : 189
    Points : 264
    Points
    264
    Par défaut
    Bonjour,

    Bon j'ai essayé ceci, en ouvrant plusieurs fois de suite une base et la série est toujours différente (access 97)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Randomize ' Initialise le générateur
          ' de nombres aléatoires.
     
    vv = Int((585 * Rnd) + 1)
    Je crois que c'est surtout la commande Randomize qui permet d'avoir un nombre toujours aléatoire, tout est dans l'aide ACCESS pour plus de compréhension.

    Salut,

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Hélas avec access 2003 ça ne marche pas (toujours même série).

    Dans l'aide il n'y a pas grand chose??

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    En faisant un essai dans la BDD les Comptoirs, cette procédure semble satisfaisante:

    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
    27
    28
    29
    Private Sub cmdOpenAnyRecord_Click()
    Const MY_QUERY = "SELECT * FROM Produits"
    Dim lngAnyRecord As Long
    Dim lngNBRecords As Long
    Dim intAnyNumber As Integer
    Dim oRS As DAO.Recordset
    Dim strSQL As String
     
      Set oRS = CurrentDb.OpenRecordset(MY_QUERY, 2)
      With oRS
        If Not .EOF Then
          .MoveLast
          lngNBRecords = .RecordCount
          .Close
        End If
      End With
      Set oRS = Nothing
      Randomize
      intAnyNumber = Int((lngNBRecords * Rnd) + 1)
      strSQL = MY_QUERY & " WHERE [Réf produit] = " & intAnyNumber
      Set oRS = CurrentDb.OpenRecordset(strSQL, 2)
      With oRS
        If Not .EOF Then
          MsgBox "Produit sélectionné :" & vbCrLf & intAnyNumber & " " & .Fields("Nom du produit")
          .Close
        End If
      End With
      Set oRS = Nothing
    End Sub
    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci mais peut tu me dires ou je dois taper tout ça ???

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut Re: Ouverture aléatoire d'un formulaire ou requête ?
    Citation Envoyé par kaarrde
    Ma question est que je voudrais que ma base s'ouvre sur un enregistrement aléatoire et jamais dans le même ordre à chaque fois que je l'ouvre.
    Une base ne s'ouvre pas sur un enregistrement, une base s'ouvre et ensuite on ouvre un enregistrement depuis une table ou une vue.
    Tu ne dis pas comment tu souhaites ouvrir l'enregistrement au hasard donc, j'ai supposé que tu voulais que cela se fasse depuis un formulaire.
    Maintenant, si tu veux que l'éléatoire se fasse dans une requête, il faut transformer ce que je t'ai soumis en fonction et mettre cette fonction comme critère dans ta requête, ce qui donne alors:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Produits.[Réf produit], Produits.[Nom du produit]
    FROM Produits
    WHERE (((Produits.[Réf produit])=OpenAnyRecord()));
    Donc tu peux écrire la fonction dans un module et l'exploiter comme ci-dessus:
    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
    27
    28
    29
    30
    31
    32
    Option Compare Database
    Option Explicit
     
    Function OpenAnyRecord() As Long
    Const MY_QUERY = "SELECT * FROM Produits"
    Dim lngAnyRecord As Long
    Dim lngNBRecords As Long
    Dim intAnyNumber As Integer
    Dim oRS As DAO.Recordset
    Dim strSQL As String
     
      Set oRS = CurrentDb.OpenRecordset(MY_QUERY, 2)
      With oRS
        If Not .EOF Then
          .MoveLast
          lngNBRecords = .RecordCount
          .Close
        End If
      End With
      Set oRS = Nothing
      Randomize
      intAnyNumber = Int((lngNBRecords * Rnd) + 1)
      strSQL = MY_QUERY & " WHERE [Réf produit] = " & intAnyNumber
      Set oRS = CurrentDb.OpenRecordset(strSQL, 2)
      With oRS
        If Not .EOF Then
          OpenAnyRecord = intAnyNumber
          .Close
        End If
      End With
      Set oRS = Nothing
    End Function
    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

Discussions similaires

  1. [AC-2003] Problème d'ouverture de formulaire sur requête
    Par Plume27 dans le forum VBA Access
    Réponses: 3
    Dernier message: 01/04/2013, 23h49
  2. Réponses: 3
    Dernier message: 13/06/2006, 21h51
  3. Réponses: 14
    Dernier message: 15/05/2006, 16h34
  4. [Débutant] Ouverture automatique d'un formulaire
    Par manoun1 dans le forum Access
    Réponses: 2
    Dernier message: 27/03/2006, 17h01
  5. Problème: condition sur formulaire dans requête
    Par decour dans le forum Access
    Réponses: 1
    Dernier message: 17/10/2005, 23h27

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