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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Formulaire continu avec un recordset

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA] Formulaire continu avec un recordset

n°2006156
Genuine
Posté le 30-06-2010 à 22:11:12  profilanswer
 

Bonjour à tous :)
Voilà j'ai un petit problème de conception.
Je dois créer sous Access un formulaire continu pour lequel les modifications n'altèrent pas la base de données. Les modifications ne doivent être prises en compte uniquement lors d'un clic d'un bouton.  
Pour cela, j'avais donc décidé de créer un recordset sur l'action du load de mon formulaire car c'est à priori la façon de faire. J'arrive donc à créer mon recordset (à priori), mais je n'arrive pas du tout à afficher les informations dans mon formulaire. Je n'arrive pas du tout à savoir ce qu'il faut faire avant et après.
L'exemple suivant qui est "simpliste" doit être agrémenté, mais je ne vois pas trop ce que je dois faire de plus surtout au niveau du formulaire.  

Code :
  1. Dim rs As DAO.Recordset
  2.     Set rs = CurrentDb.OpenRecordset("reqTest" )
  3.     Set Me.Recordset = rs
  4.     If Not rs.BOF And Not rs.EOF Then
  5.         rs.MoveFirst
  6.         While Not rs.EOF
  7.             DoCmd.GoToRecord , , acNewRec
  8.             Me.Nom = rs!Nom
  9.             rs.MoveNext
  10.         Wend
  11.     End If
  12.     rs.Close


 
Si vous pouviez m'aider, ca serait bien cool. Merci :)  

mood
Publicité
Posté le 30-06-2010 à 22:11:12  profilanswer
 

n°2006683
SuppotDeSa​Tante
Aka dje69r
Posté le 02-07-2010 à 16:04:50  profilanswer
 

Hello
 
Deja sous access (et Cie) on ne donne pas "Nom" pour un nom de champ, derriere ca fou le caca...
 
A titre perso je passe comme ca :

Code :
  1. DoCmd.OpenForm "Formulaire2"
  2.     Set Rs = New ADODB.Recordset
  3.     Rs.Open "Select * From reqTest", _
  4.     CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  5.     Set Forms("Formulaire2" ).Recordset = Rs


Dans la source on a bien une requete Select * From reqTest et donc nos controles TextBox etc. sont liés aux champs du recordset.


Message édité par SuppotDeSaTante le 02-07-2010 à 16:05:49

---------------
Soyez malin, louez entre voisins !
n°2006779
Genuine
Posté le 02-07-2010 à 23:04:38  profilanswer
 

D'accord, mais soit je me trompe de voie, soit j'ai pas capté un truc. Le recordset fonctionne. J'ai testé comme tu me l'as dit, et comme je l'avais fait un peu avant, mais le problème est que les champs restent liés à la BD (les changements faits se font directement sur la BD).
 
Donc en gros ce que je souhaite faire :
- Ce que mon recordset me renvoie, je l'affiche dans un formulaire continu
- Ces mêmes lignes sont modifiables par l'utilisateur, mais n'altèrent en aucun cas la BD (juste visuel)
- L'utilisateur peut valider ses modifications par l'appui d'un bouton. Seulement dans ce cas là, les modifications seront enregistrés dans la base de données. Cela induit le parcours du recordset modifié (ça aussi, je n'arrive pas trop à l'imaginer).
 
Merci pour votre aide :)
 

n°2006788
SuppotDeSa​Tante
Aka dje69r
Posté le 02-07-2010 à 23:32:29  profilanswer
 

Bah avec Access, si ce n'est passé par des tables temporaires, vides pour la création, alimentées pour la modification, il n'y a pas de solution a la connaissance...
Du moment que ton contrôle est lié a un champ, ça le modifie.
Sinon, passer par des contrôles indépendants et jouer avec des requêtes ajouts et mise a jour.


---------------
Soyez malin, louez entre voisins !
n°2006865
Genuine
Posté le 03-07-2010 à 12:15:05  profilanswer
 

Merci de m'aider dje69r.
Si je récapitule l'idée :
1. Créer une table
2. Mettre les infos que je veux afficher (dans mon formulaire) dans cette table
3. Mettre la source de mon formulaire sur cette table temporaire (comment faire ça ?)
4. Si le bouton est cliqué, je parcours la table temporaire en effectuant les update sur la table valide

 

C'est ça ?


Message édité par Genuine le 03-07-2010 à 12:17:17
n°2006907
Genuine
Posté le 03-07-2010 à 18:10:07  profilanswer
 

Pour ceux que ca intéresserait voilà à peu prêt le code brouillon auquel j'arrive. Il reste plus qu'à effectuer les update sur la vrai table à partir de la table temporaire (ça devrait pas poser de problèmes).

Code :
  1. Private Sub Commande6_Click()
  2.     'Enregistrement de la table temporaire dans la "vrai" table
  3.    
  4.     DoCmd.RunCommand acCmdSaveRecord
  5.     Dim cnx As ADODB.Connection
  6.     Dim rst As ADODB.Recordset
  7.     Set cnx = CurrentProject.Connection
  8.     Set rst = New ADODB.Recordset
  9.     rst.Open "SELECT * FROM testbis", cnx
  10.     Dim Nom As String
  11.     Dim prenom As String
  12.     Do Until rst.EOF
  13.         MsgBox rst![Prénom]
  14.         rst.MoveNext
  15.     Loop
  16.     cnx.Close
  17. End Sub
  18. Private Sub Form_Load()
  19.     'Creation de la table temporaire qui va récupérer les informations lors des modifications
  20.     Dim cnx As New ADODB.Connection
  21.     Set cnx = CurrentProject.Connection
  22.    
  23.     cnx.Execute "SELECT * INTO testbis FROM test where Prénom = 'Romain'"
  24.     Me.RecordSource = "testbis"
  25.     cnx.Close
  26. End Sub


 
 
Merci, sans toi j'aurais mis du temps à trouver cette idée :)

n°2006928
SuppotDeSa​Tante
Aka dje69r
Posté le 03-07-2010 à 22:07:00  profilanswer
 

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

  [VBA] Formulaire continu avec un recordset

 

Sujets relatifs
vérifier les champs d'un formulaire contactCréation formulaire de recherche très simple depuis données excel
VBA et Excel aller chercher des données sur d'autres fichiersPourquoi ce formulaire n'est-il pas testé ?
Copie de lignes avec format dans VBAComment supprimer un bouton sur userfom avec du code VBA ?
VBA : Problème recherchev VlookupMacro pour formulaire
Depouillement sondage VBAsécurité formulaire
Plus de sujets relatifs à : [VBA] Formulaire continu avec un recordset


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR