Requete et formulaire

FlyingAlex -  
Gaunts Messages postés 1390 Statut Membre -
Bonjour,

J'ai effectue la requête suivante :
SELECT Max([Master Table].[Part Number]+1) AS [Part NumberOfMax]
FROM [Master Table];

Qui me permet de prendre la plus grande valeur d'une colonne d'une table et de lui ajouter 1.

Le but est que cette valeur apparaisse ensuite dans mon formulaire, et pas moyen d'y arriver (je ne peux pas passer par la table car la requête est elle même définie grâce a la table).

La seule chose que j'arrive a faire est d'insérer un sous formulaire dans le formulaire avec la valeur en question, mais je suis bloqué la.

Je pense que la méthode ouvrir le formulaire, ouvrir le sous formulaire, copier la valeur de la textbox du sous formulaire, la mettre dans la textbox voulue et le tout en cacher est un peu bourrin, si vous avez des idées je suis (très) preneur. J'ai deja regarder pour effectuer la requete sous vba mais ca m'a l'air compliqué...

Merci

FlyingAlex

PS : désolé du manque d'accent, clavier américain

Edit : je suis sur Access

3 réponses

  1. Gaunts Messages postés 1390 Statut Membre 116
     
    Salut,

    Si j'ai bien compris tu veux afficher cette valeur dans une textbox?
    Si c'est le cas je pense qu'il faudra passer par du vba.
    1
    1. FlyingAlex
       
      Oui plus ca va, et plus je me dis que ca va devoir se faire comme ca.... je cherche comment faire en ce moment meme mais pas simple du tout. L'idee est pourtant simple, mais pas moyen de mettre un code dessus

      J'essaie des truc du genre

      Dim Enr As Recordset
      Set Enr = CurrentDb.OpenRecordset("SELECT Max([Master Table].[Part Number]+1) AS [NewPN] FROM [Master Table]")

      Mais ca ne donne rien
      0
    2. Gaunts Messages postés 1390 Statut Membre 116
       
      Re.
      Tu travailles sous quelle version d'access?
      Openrecordset n'effectue pas une requête SQL, elle ne prend en paramètre que la table qu'elle va ouvrir.
      Pour effectuer une requête SQL, il faut utiliser DoCmd.Runsql "ta_requête".

      Dans ton cas, il faudra parcourir la table en VBA, et récupérer la valeur manuellement pour l'assigner à ton champ texte.
      Pour te déplacer dans une table:
      Dim Enr As DAO.Recordset2 
      set Enr = Currentdb.OpenRecordset("Master Tabe") 
      
      Enr.MoveFirst
      puis
      Enr.MoveNext
      . Si tu as toujours des questions sur ce qu'il faudra faire n'hésite pas
      0
    3. FlyingAlex
       
      En fait, ce que je veux, c'est recuperer la valeur la plus importante de la colonne, lui ajouter un et pui la rentrer dans le textbox. Si tu vois comment faire sans requete, tu me sauve je crois....
      0
    4. Gaunts Messages postés 1390 Statut Membre 116
       
      Tu peux essayer ça?
      Private Sub Form_Load()   
      
          Dim Enr As dao.Recordset2   
          Dim max As Integer   
             
          Set Enr = CurrentDb.OpenRecordset("Master Table")   
              
          max = 0   
          Enr.MoveFirst   
          While (Enr.EOF = False)   
              If (Enr.[Part Number] > max) Then   
                  max = Enr.[Part Number]   
              End If   
              Enr.MoveNext   
          Wend   
          Me.zoneTexte.Value = max + 1  
            
      End Sub   
      
      Pas testé.
      Me.zoneTexte.Value
      Remplace zoneTexte par le nom de ta textbox.
      Pareil avec le nom de la table et du champ j'ai utilisé "Master Table" et "Part Number" ici
      0
    5. FlyingAlex
       
      Alors ca bug. Message : Compile error : User - defined type non defined pour Enr As DAO.Recordset2
      0
  2. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    Tu travailles avec quoi ?

    Xavier
    0
    1. FlyingAlex
       
      Bonjour Xavier

      Je suis sur Access
      0